import * as React$1 from 'react';
import React__default, { ReactNode, ChangeEvent } from 'react';
import { QueryClient } from '@tanstack/react-query';

declare function Spinner({ className }: {
    className?: string;
}): React__default.JSX.Element;

declare function joinUrlWithPathAndQuery(baseUrl: string, path: string, query?: Record<string, string>): string;

declare function stringToObj<T>(inputString: string, separator: string): T | undefined;

declare function getInitials(fullName: string): string;

type TLocale = "pt" | "en" | "fr";
interface IMirantesFoundationProviderProps {
    children: ReactNode;
    Notification?: ReactNode;
    queryClient?: QueryClient;
    onOpenCreatePostModal?: () => void;
    values?: {
        widgetsApi?: string;
        feedApi?: string;
        environment?: string;
        profileApiUrl?: string;
        mirantesDomain?: string;
        openCageApiKey?: string;
        locale?: TLocale;
        Link?: LinkComponent;
        usePathname?: UsePathname;
        user?: User;
        isGettingUser?: boolean;
        isGettingStats?: boolean;
        hostUrl?: string;
        isDev?: boolean;
    };
}
interface IMirantesFoundationContext {
    widgetsApi?: string;
    feedApi?: string;
    profileApiUrl?: string;
    environment?: string;
    mirantesDomain?: string;
    locale?: TLocale;
    Link?: LinkComponent;
    usePathname?: UsePathname;
    user?: User;
    isGettingUser?: boolean;
    isGettingStats?: boolean;
    Notification?: ReactNode;
    openCageApiKey?: string;
    onOpenCreatePostModal?: (cb?: () => void) => void;
}
type CommonLinkProps = {
    to?: string;
    href?: string;
    children: ReactNode;
    className?: string;
    replace?: boolean;
    [key: string]: any;
};
type User = {
    id: string;
    name: string;
    email: string;
    phone: string;
    isOpenToWork: boolean;
    avatar: string;
    accessToken: string;
    refreshToken: string;
    role?: string;
    slug: string;
    isInterestsSynced?: boolean;
    followersCount?: number;
    followingCount?: number;
    postsCount?: number;
    profileCompletedPercentage?: number;
};
type LinkComponent = (props: CommonLinkProps) => any;
type UsePathname = () => string;

declare function MirantesFoundationProvider({ children, Notification, queryClient: reactQueryClient, onOpenCreatePostModal, values: { locale, Link, usePathname, user, isGettingUser, mirantesDomain, environment, feedApi, widgetsApi, hostUrl, isDev, profileApiUrl, isGettingStats, openCageApiKey, }, }: IMirantesFoundationProviderProps): React__default.JSX.Element;

declare function WorkspacePanel(): React__default.JSX.Element;

declare function Header({ className }: {
    className?: string;
}): React__default.JSX.Element;

declare function useMirantesFoundation(): IMirantesFoundationContext;

declare function onLogout(callback: () => void): void;
declare function closeLogoutChannel(): void;

interface DateInputProps$1 {
    label: string;
    onChange: (date: Date) => void;
    value: Date;
    required?: boolean;
    className?: string;
    error?: string;
    disabled?: boolean;
    calendarClassName?: string;
    triggerClassName?: string;
}
declare function DateInput({ label, onChange, value, required, className, triggerClassName, error, disabled, calendarClassName, }: DateInputProps$1): React$1.JSX.Element;

declare function GradientModal({ onClose, children, isOpen, className, contentClassName, showGradient, }: {
    onClose: () => void;
    children: React__default.ReactNode;
    isOpen: boolean;
    className?: string;
    contentClassName?: string;
    showGradient?: boolean;
}): React__default.JSX.Element;

interface DateInputProps {
    value?: Date | string | null;
    onChange?: (date: Date | null) => void;
    minDate?: Date;
    maxDate?: Date;
    required?: boolean;
    showDateIcon?: boolean;
    disabled?: boolean;
    readOnly?: boolean;
    className?: string;
    placeholder?: string;
    inputClassName?: string;
    label?: string;
    "data-testid"?: string;
    error?: string;
    formattedAsMonthYear?: boolean;
}
declare function CustomDateInput({ value, error: errorMessage, onChange, minDate, maxDate, required, showDateIcon, disabled, readOnly, className, placeholder, inputClassName, label, "data-testid": testId, formattedAsMonthYear, }: DateInputProps): React__default.JSX.Element;

interface AddressSuggestion {
    country?: string;
    city?: string;
    latitude?: number;
    longitude?: number;
    address?: string;
}
interface AddressInputProps {
    value: string;
    onChange: (props?: AddressSuggestion) => void;
    className?: string;
    wrapperClassName?: string;
    inputClassName?: string;
    suggestionsWrapperClassName?: string;
    suggestionItemClassName?: string;
    selectedItemClassName?: string;
    loadingIndicatorClassName?: string;
    clearButtonClassName?: string;
    error?: string;
    errorClassName?: string;
    leftElement?: ReactNode;
    minChars?: number;
    debounceDelay?: number;
    placeholder?: string;
    noResultsText?: string;
    customLoading?: ReactNode;
    floatable?: boolean;
}
declare function AddressAutocompleteInput({ value, onChange, className, wrapperClassName, inputClassName, suggestionsWrapperClassName, suggestionItemClassName, selectedItemClassName, loadingIndicatorClassName, clearButtonClassName, errorClassName, error, leftElement, minChars, debounceDelay, placeholder, noResultsText, customLoading, floatable, }: AddressInputProps): React__default.JSX.Element;

interface ICountryInputProps {
    locale?: "pt" | "fr" | "en";
    value?: string;
    onChange?: (value: {
        locale: string;
        name: string;
    }) => void;
    className?: string;
    defaultCode?: string;
    forNationality?: boolean;
}

interface CountryInputProps extends Omit<ICountryInputProps, "locale" | "onChange"> {
    className?: string;
    buttonClassName?: string;
    inputClassName?: string;
    value?: string;
    onChange?: (payload: {
        code: string;
        name: string;
    }) => void;
    error?: string;
    floatable?: boolean;
}
declare function CountryInput({ className, buttonClassName, inputClassName, defaultCode, onChange, value, error, floatable, }: CountryInputProps): React__default.JSX.Element;
declare namespace CountryInput {
    var displayName: string;
}

interface CountryDisplayProps {
    code: string;
    locale: "pt" | "fr" | "en";
    className?: string;
}
declare function CountryDisplay({ code, locale, className, }: CountryDisplayProps): React__default.JSX.Element | null;
declare namespace CountryDisplay {
    var displayName: string;
}

interface SalaryInputProps {
    value?: string;
    currency?: string;
    onChange?: (value: string, currency: string) => void;
    label?: string;
    placeholder?: string;
    className?: string;
    disabled?: boolean;
    required?: boolean;
    id?: string;
    floatable?: boolean;
}
declare function SalaryInput({ value, currency, onChange, label, placeholder, className, disabled, required, id, floatable, }: SalaryInputProps): React__default.JSX.Element;

interface CalendarProps {
    locale?: "pt" | "fr" | "en";
    onMarkAsUnavailable?: () => void;
    isModalOpen?: boolean;
    onClose?: () => void;
    calendarCardClassName?: string;
}
declare function Calendar({ onMarkAsUnavailable, isModalOpen, onClose, calendarCardClassName, }: CalendarProps): React__default.JSX.Element;

type BaseInputProps = {
    placeholder: string;
    value: string;
    onChange: (e: ChangeEvent<HTMLInputElement>) => void;
    rightIcon?: React__default.ReactNode;
    leftIcon?: React__default.ReactNode;
    label?: string;
    error?: string;
    disabled?: boolean;
    type?: string;
    name?: string;
    id?: string;
    className?: string;
    children?: React__default.ReactNode;
    wrapperClassName?: string;
    required?: boolean;
    inputClassName?: string;
    requiredInPlaceholder?: boolean;
    min?: number;
    max?: number;
};
declare const BaseInput: React__default.ForwardRefExoticComponent<BaseInputProps & React__default.RefAttributes<HTMLInputElement>>;

declare function CheckBoxInput({ isChecked, onClick, label, }: {
    isChecked?: boolean;
    onClick?: () => void;
    label?: string;
}): React__default.JSX.Element;

type CustomDrawerProps = {
    children: React__default.ReactNode;
    footer?: React__default.ReactNode;
    onClose: () => void;
    className?: string;
    isOpen?: boolean;
    hideCloseBlock?: boolean;
};
declare function CustomDrawer({ children, footer, onClose, className, isOpen, hideCloseBlock, }: CustomDrawerProps): React__default.JSX.Element;

declare function RadioButtonInput({ label, isSelected, onSelect, }: {
    label?: string;
    isSelected?: boolean;
    onSelect?: () => void;
}): React__default.JSX.Element;

type Option = {
    id: string;
    label: string;
    value: string;
};
type CustomSelectInputProps = {
    options: Option[];
    value?: string;
    onChange?: (value: string) => void;
    placeholder?: string;
    className?: string;
    enableSearch?: boolean;
    floattable?: boolean;
    required?: boolean;
};
declare function CustomSelectInput({ options, value, onChange, placeholder, className, enableSearch, floattable, required, }: CustomSelectInputProps): React$1.JSX.Element;

type ButtonProps = {
    children: React__default.ReactNode;
    type?: "button" | "submit";
    className?: string;
    onClick?: () => void;
    disabled?: boolean;
    isLoading?: boolean;
};
declare function Button({ children, className, disabled, isLoading, onClick, type, }: ButtonProps): React__default.JSX.Element;

interface IDropdownProps {
    trigger: React.ReactNode;
    options: IDropdownOption[];
    onSelect: (id: string) => void;
    className?: string;
    itemClassName?: string;
    itemHoverClassName?: string;
    animate?: boolean;
    enableSearch?: boolean;
}
interface IDropdownOption {
    id: string;
    label: string;
    value: string;
    icon?: React.ReactNode;
}

declare function CustomDropdown({ trigger, options, onSelect, className, itemClassName, itemHoverClassName, animate, enableSearch, }: IDropdownProps): React__default.JSX.Element;

declare function ContactsModal({ onClose, slug, }: {
    onClose: () => void;
    slug?: string;
}): React__default.JSX.Element;

export { AddressAutocompleteInput, BaseInput, Button, CheckBoxInput, ContactsModal, CountryDisplay, CountryInput, CustomDateInput, CustomDrawer, CustomDropdown, CustomSelectInput, DateInput, GradientModal, Header, MirantesFoundationProvider, RadioButtonInput, SalaryInput, Calendar as ScheduleCalendar, Spinner, WorkspacePanel, closeLogoutChannel, getInitials, joinUrlWithPathAndQuery, onLogout, stringToObj, useMirantesFoundation };
