import { type ComponentType, type PropsWithChildren, type ReactElement } from "react"; import { type IProviderProps } from "../app/Provider"; import type { IUseQueryResult } from "../query/Query"; export type IUser = object; export interface ILoginFormValues { username: string; password: string; } export type IIdentityProviderProps = IProviderProps<{ user: User | undefined | null; identityProvider?: string; AuthComponent: ComponentType; useFetchUser: () => IUseQueryResult; login: (values: ILoginFormValues) => Promise; logout: () => Promise; displayName: (user: User) => string; }>; export type IIdentityProviderValue = Omit, "displayName"> & { displayName: () => string | null; setUser: (user: User | null) => void; }; export declare function useIdentityProviderProps(props?: Partial>): IIdentityProviderProps; declare const IdentityContext: import("react").Context>; declare function IdentityContextProvider({ AuthComponent, logout, identityProvider, useFetchUser, displayName, login, ...props }: PropsWithChildren>): ReactElement; export declare function useIdentityContext(): IIdentityProviderValue; export declare function withIdentityContext(Component: ComponentType, identityProviderProps?: Partial>): ReactElement; export { IdentityContext, IdentityContextProvider };