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

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?: {
        pageId?: string;
        page?: {};
        widgetsApi?: string;
        feedApi?: string;
        environment?: string;
        profileApiUrl?: string;
        socketApiUrl?: string;
        chatApiUrl?: string;
        chatForPage?: boolean;
        mirantesDomain?: string;
        openCageApiKey?: string;
        locale?: TLocale;
        Link?: LinkComponent;
        usePathname?: UsePathname;
        user?: User;
        isGettingUser?: boolean;
        isGettingStats?: boolean;
        hostUrl?: string;
        isDev?: boolean;
        authedApi?: AxiosInstance;
        uploadFilesApi?: AxiosInstance;
        authApiUrl?: string;
    };
}
interface IMirantesFoundationContext {
    widgetsApi?: string;
    feedApi?: string;
    profileApiUrl?: string;
    chatApiUrl?: string;
    chatForPage?: boolean;
    environment?: string;
    socketApiUrl?: string;
    mirantesDomain?: string;
    locale?: TLocale;
    Link?: LinkComponent;
    usePathname?: UsePathname;
    pageId?: string;
    user?: User;
    isGettingUser?: boolean;
    isGettingStats?: boolean;
    Notification?: ReactNode;
    openCageApiKey?: string;
    authedApi?: AxiosInstance;
    uploadFilesApi?: AxiosInstance;
    authApiUrl?: 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: { chatApiUrl, chatForPage, locale, Link, usePathname, user, isGettingUser, mirantesDomain, environment, feedApi, widgetsApi, hostUrl, isDev, profileApiUrl, isGettingStats, openCageApiKey, pageId, authedApi, authApiUrl, socketApiUrl, uploadFilesApi }, }: 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;
    placeholderColor?: string;
};
declare const BaseInput: React__default.ForwardRefExoticComponent<BaseInputProps & React__default.RefAttributes<HTMLInputElement>>;

declare function CheckBoxInput({ isChecked, onClick, label, disabled, }: {
    isChecked?: boolean;
    onClick?: (e: React__default.MouseEvent<HTMLDivElement> | React__default.KeyboardEvent<HTMLDivElement>) => void;
    label?: string;
    disabled?: boolean;
}): 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?: (option: Option) => void;
    placeholder?: string;
    className?: string;
    enableSearch?: boolean;
    floattable?: boolean;
    required?: boolean;
    showCheck?: boolean;
    label?: string;
    error?: string;
    disabled?: boolean;
    onSearch?: (query: string) => void;
    isLoading?: boolean;
};
declare function CustomSelectInput({ options, value, onChange, placeholder, className, enableSearch, floattable, required, showCheck, label, error, disabled, onSearch, isLoading, }: 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 IMirantesButton extends React.ButtonHTMLAttributes<HTMLButtonElement> {
    type?: "button" | "submit";
    className?: string;
    onClick?: (e?: any) => void;
    onMouseDown?: MouseEventHandler<HTMLButtonElement>;
    onMouseUp?: MouseEventHandler<HTMLButtonElement>;
    label?: string;
    isLoading?: boolean;
    disabled?: boolean;
    leftElement?: ReactNode;
    rightElement?: ReactNode;
    children?: ReactNode;
    style?: CSSProperties;
    id?: string;
    align?: 'center' | 'left' | 'right';
}

declare const MirantesButton: React__default.ForwardRefExoticComponent<IMirantesButton & React__default.RefAttributes<HTMLButtonElement>>;

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;

interface IUserVisibilitySettings {
    userId?: string;
    profileViewMode?: EProfileViewMode;
    profilePublic?: boolean;
    profilePictureScope?: EPictureVisibility;
    followingVisibility?: EFollowingVisibility;
    notifyMentionsInMedia?: boolean;
}
declare enum EProfileViewMode {
    professional = "PROFESSIONAL_IDENTITY",
    sector = "SECTOR_IDENTIFICATION",
    confidential = "CONFIDENTIAL_MODE"
}
declare enum EPictureVisibility {
    contacts = "CONTACTS",
    network = "NETWORK",
    public = "PUBLIC"
}
declare enum EFollowingVisibility {
    me = "ONLY_ME",
    contacts = "CONTACTS",
    all = "EVERYONE"
}

type Settings = {
    language: {
        interface: string;
        content: string;
    };
    theme: string;
    feed: {
        preference: string;
        allowMentions: boolean;
    };
    profile: IUserVisibilitySettings;
};
declare const getSettingsFromCookie: (cookieName: string) => Settings | null;
declare const clearSettingsCookie: (cookieName: string, options: {
    domain: string;
    isDev: boolean;
}) => void;
declare const useLoadSettings: () => Settings | null;

interface IPage {
    id?: string;
    name?: string;
    slug?: string;
    logo?: string;
    sector?: string;
    sectorId?: string;
    description?: string;
    aboutUs?: string;
    site?: string;
    organizationSize?: string;
    organizationType?: string;
    pageType?: string;
    isAcademic?: boolean;
    foundedYear?: number;
    address?: {
        city?: string;
        country?: string;
        address?: string;
    };
    phoneNumber?: string;
}

declare const useApiGetPage: (slug?: string) => {
    page: IPage | null | undefined;
    isGettingPage: boolean;
};

declare function useSetChatVisibility(): {
    isChatVisible: boolean;
};

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

declare const designSystemPreset: {
    darkMode: string[];
    theme: {
        extend: {
            colors: {
                "calendar-card-bg": string;
                calendar: string;
                miroins: string;
                "custom-gold": string;
                "custom-silver": string;
                "custom-bronze": string;
                primary: string;
                "transparent-primary": string;
                grey: string;
                bg: string;
                text: string;
                "text-secondary": string;
                "text-dark": string;
                border: string;
                border2: string;
                border3: string;
                black: string;
                "trans-white": string;
                "grey-1": string;
                "grey-2": string;
                "grey-3": string;
                "grey-9": string;
                "grey-6": string;
                "grey-7": string;
                "grey-8": string;
                "grey-10": string;
                "light-grey": string;
                "lighter-grey": string;
                dark: {
                    DEFAULT: string;
                    1: string;
                };
                danger: string;
                "danger-transparent": string;
                white: string;
                blue: {
                    shade1: string;
                    shade2: string;
                    shade3: string;
                    shade4: string;
                    shade5: string;
                    shade6: string;
                    shade7: string;
                    shade8: string;
                    shade9: string;
                    shade10: string;
                    shade11: string;
                    shade12: string;
                    shade13: string;
                    shade14: string;
                    shade15: string;
                    shade16: string;
                };
                gray: {
                    shade1: string;
                    shade2: string;
                    shade3: string;
                    shade4: string;
                    shade5: string;
                    shade6: string;
                    shade7: string;
                    shade8: string;
                    shade9: string;
                    shade10: string;
                    shade11: string;
                    shade12: string;
                    shade13: string;
                    shade14: string;
                    shade15: string;
                    shade16: string;
                    shade17: string;
                    shade18: string;
                    shade19: string;
                    shade20: string;
                    shade21: string;
                    shade22: string;
                    shade23: string;
                };
                green: {
                    shade1: string;
                    shade2: string;
                    shade3: string;
                    shade4: string;
                    shade5: string;
                    shade6: string;
                    shade7: string;
                    shade8: string;
                    shade9: string;
                    shade10: string;
                    bg: string;
                };
                yellow: {
                    shade1: string;
                    shade2: string;
                    shade3: string;
                    shade4: string;
                    shade5: string;
                };
                orange: {
                    shade1: string;
                    shade2: string;
                    shade3: string;
                    shade4: string;
                    shade5: string;
                    shade6: string;
                    shade7: string;
                    shade8: string;
                    shade9: string;
                };
                red: {
                    shade1: string;
                    shade2: string;
                    shade3: string;
                    shade4: string;
                    shade5: string;
                    shade6: string;
                    shade7: string;
                };
            };
            fontSize: {
                "heading-1": string;
                "heading-2": string;
                "heading-3": string;
                "heading-4": string;
                "heading-5": string;
                "heading-6": string;
                "body-xl": string;
                "body-lg": string;
                "body-md": string;
                "body-sm": string;
                "body-xs": string;
            };
            lineHeight: {
                "heading-1": string;
                "heading-2": string;
                "heading-3": string;
                "heading-4": string;
                "heading-5": string;
                "heading-6": string;
                "body-xl": string;
                "body-lg": string;
                "body-md": string;
                "body-sm": string;
                "body-xs": string;
            };
            screens: {
                sm: string;
                md: string;
                lg: string;
                xl: string;
                tb: string;
                "2xl": string;
            };
            gridTemplateColumns: {
                "sign-up-right-side-grid": string;
            };
        };
    };
    plugins: any[];
};

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