import { UserProfile, RefreshTokenResult } from '@kinde/js-utils';
import { default as React } from 'react';
import { KindeContextProps } from './KindeContext';
import { ErrorProps } from './types';
declare enum AuthEvent {
    login = "login",
    logout = "logout",
    register = "register",
    tokenRefreshed = "tokenRefreshed"
}
type EventTypes = {
    (event: AuthEvent.tokenRefreshed, state: RefreshTokenResult, context: KindeContextProps): void;
    (event: AuthEvent, state: Record<string, unknown>, context: KindeContextProps): void;
};
type KindeCallbacks = {
    onSuccess?: (user: UserProfile, state: Record<string, unknown>, context: KindeContextProps) => void;
    onError?: (props: ErrorProps, state: Record<string, string>, context: KindeContextProps) => void;
    onEvent?: EventTypes;
};
type KindeProviderProps = {
    audience?: string;
    children: React.ReactNode;
    clientId: string;
    domain: string;
    /**
     * Use localstorage for refresh token.
     *
     * Note: This is not recommended for production use, as it is less secure.  Use custom domain and refresh token will have handled without localStorage automatically
     */
    useInsecureForRefreshToken?: boolean;
    logoutUri?: string;
    redirectUri: string;
    callbacks?: KindeCallbacks;
    scope?: string;
    forceChildrenRender?: boolean;
};
export declare const KindeProvider: ({ audience, scope, clientId, children, domain, useInsecureForRefreshToken, redirectUri, callbacks, logoutUri, forceChildrenRender, }: KindeProviderProps) => React.JSX.Element;
export {};
//# sourceMappingURL=KindeProvider.d.ts.map