import { CognitoUser } from '@aws-amplify/auth';
import { Hotel } from '../../../models/Client/Hotel/Hotel';
export interface ExtraClientMetadataParams {
    hotel?: Hotel;
}
export interface IAuthenticationContext {
    loading?: boolean;
    cognitoUser?: CognitoUser;
    cognitoLoginState?: CognitoLoginState;
    error?: Error;
    login: (email: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
    register: (email: string, password: string, additionalAttributes?: any, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
    confirmAccount: (code: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
    forgotPassword: (email: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
    resetPassword: (email: string, code: string, password: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
    changePassword: (currentPassword: string, newPassword: string, extraClientMetadataParams?: ExtraClientMetadataParams) => Promise<CognitoLoginState | undefined>;
    logout: () => Promise<CognitoLoginState | undefined>;
    reset: () => void;
    pendingCredentials: IPendingCredentials | null;
    setPendingCredentials: (credentials: IPendingCredentials | null) => void;
}
export interface IPendingCredentials {
    email: string;
    password?: string;
}
export interface IChangePassword {
    currentPassword?: string;
    newPassword?: string;
    confirmPassword?: string;
}
export interface IMemberChangePassword {
    currentPassword: string;
    newPassword: string;
    confirmPassword: string;
}
export declare enum CognitoLoginState {
    Login = "Login",
    RequiresPasswordReset = "Reset your password",
    RequiresConfirmation = "Verify your email",
    SetupMFA = "Setup MFA",
    VerifyMFA = "Enter your MFA code",
    RequiresNewPassword = "Set up your password",
    Success = "Success",
    ForgotPassword = "Create a new password",
    CodeMismatch = "CodeMismatch",
    UserNotFound = "UserNotFound",
    UsernameExists = "UsernameExists",
    LimitExceededException = "LimitExceededException",//Attempt limit exceeded, please try after some time.
    NotAuthorizedException = "NotAuthorizedException"
}
export declare const AuthenticationContext: import("react").Context<IAuthenticationContext>;
export declare const useAuthentication: () => IAuthenticationContext;
