export type UserState = {
    [key: string]: {
        user?: UserAdmin | undefined | null;
        loadUserConfig?: {
            queryFn?(args: any): Promise<UserAdmin>;
            args?: any;
        };
        signInConfig?: {
            auth?: (params: {
                email: string;
                password: string;
            }) => Promise<{
                token: string;
            }>;
            Component?: () => React.ReactNode;
        };
        privatePage?: {
            permissionPageRule?: (user: UserAdmin) => boolean;
            PermissionPageRuleComponent?: () => React.ReactNode;
        };
        onSignOut?: (user: UserAdmin) => void;
        interceptor?: {
            disableInterceptor?: boolean;
        };
    };
};
export type AuthAdminProviderProps = {
    children?: React.ReactNode;
    roles: UserState;
    apiURL?: string;
    ForbiddenCompoent?: () => React.ReactNode;
};
export type AuthAdminParams = {
    emailAddress: string;
    password: string;
    roleUser?: string;
    apiURL?: string;
};
export type IAuthContextType = {
    user?: any;
    roles: UserState;
    signOut(params?: {
        onSignOut: () => {};
    }): Promise<void>;
    roleUser: string;
    signIn(params: AuthAdminParams): Promise<void>;
    loadUser({ roleName }: {
        roleName?: string;
    }): Promise<void>;
} & AuthAdminProviderProps;
export type AuthAdminResponse = {
    token: string;
};
export type UserAdmin = {
    avatar: string;
    emailAddress: string;
    firstName: string;
    id: number;
    imagem: null;
    isExternal: boolean;
    lastName: string;
    city: string;
    zipcode: string;
    state: string;
    street: string;
    district: string;
    role: string;
    claims?: string[];
};
