import React, { ReactNode } from 'react';
import { QueryClient } from '@tanstack/react-query';

declare function Spinner({ className }: {
    className?: string;
}): React.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;
    values?: {
        widgetsApi?: string;
        environment?: string;
        profileApiUrl?: string;
        mirantesDomain?: string;
        locale?: TLocale;
        Link?: LinkComponent;
        usePathname?: UsePathname;
        user?: User;
        hostUrl?: string;
        isDev?: boolean;
    };
}
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;
};
type LinkComponent = (props: CommonLinkProps) => any;
type UsePathname = () => string;

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

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

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

export { Header, MirantesFoundationProvider, Spinner, WorkspacePanel, getInitials, joinUrlWithPathAndQuery, stringToObj };
