import { UserInfo } from "../../types";
export type SSOV2StoreType = {
    userInfo?: UserInfo;
    abTestFlow?: 'A' | 'B';
    setABTestFlow: (flow?: 'A' | 'B') => void;
    setUserInfo: (userInfo?: UserInfo) => void;
    isOpen: boolean;
    setOpen: (isOpen: boolean) => void;
    returnUrl?: string;
    setReturnUrl: (returnUrl: string) => void;
    mounted?: boolean;
    setMounted: (mounted: boolean) => void;
    source?: string;
    setSource: (source: string) => void;
    setupSource?: string;
    setSetupSource: (source: string) => void;
    triggerLogin: (params?: {
        source?: string;
        returnUrl?: string;
        legalTextType?: 'community' | 'default';
        forceReloadOnClose?: boolean;
    }) => void;
    /** WhatsApp-only flow; always opens (no bearer-token short-circuit). */
    triggerWhatsappLogin: (params?: {
        source?: string;
        returnUrl?: string;
        /** Prefer payment or product URL for `referrer` on send-OTP API. */
        referrer?: string;
        forceReloadOnClose?: boolean;
        /**
         * Logged-in user still needs WhatsApp verification (`whatsapp_verify` from profile).
         * With `phone_number` + `area_code`: skip to OTP; Bearer `sent-otp` + `whatsapp-verify-code`.
         * With `isAlreadyLogin` only (no phone/area): start at phone step; send uses Bearer `sms-social/whatsapp/sent-otp`.
         */
        isAlreadyLogin?: boolean;
        phone_number?: string;
        area_code?: string;
    }) => void;
    triggerCareEmailPhoneVerify: (params?: {
        source?: string;
        returnUrl?: string;
        skipForceSetup?: boolean;
        legalTextType?: 'community' | 'default';
        email?: string;
    }) => void;
    triggerCommunityEmailVerify: (params?: {
        source?: string;
        returnUrl?: string;
        skipForceSetup?: boolean;
        legalTextType?: 'community' | 'default';
        forceReloadOnClose?: boolean;
    }) => void;
    overrideClose?: () => void;
    onCloseProp?: () => void;
    setOnCloseProp: (onClose: () => void) => void;
    forceReloadOnClose?: boolean;
    flowData?: {
        method?: 'email' | 'sms' | 'zalo' | 'google' | 'facebook' | 'phone' | 'whatsapp';
        flow?: 'login' | 'signup';
        isVerifyPhone?: boolean;
        /** These data is fetched from API to use in the email flow */
        metaData?: {
            is_birthday?: boolean;
            is_gender?: boolean;
            is_name?: boolean;
            is_pass?: boolean;
            is_phone_verified?: boolean;
        };
    };
};
export declare const useSSOV2Store: import("zustand").UseBoundStore<import("zustand").StoreApi<SSOV2StoreType>>;
export declare const redirect: (returnUrl?: string, source?: string, forceReload?: boolean) => boolean;
export declare const IS_SSOV2_ENABLED: (locale?: string) => boolean;
export declare const getSSOFlowFromUserProfile: (userInfo: UserInfo) => any;
export declare const isUserFinishedSetup: (userInfo: UserInfo) => any;
export declare const isFlowFinishedSetup: (flowData: SSOV2StoreType['flowData']) => boolean;
export declare const isUserNeedPassword: (flowData?: SSOV2StoreType['flowData'], userInfo?: UserInfo) => boolean;
export declare const isPhoneNotVerifedYet: (userInfo?: UserInfo) => boolean;
export declare const isLoginWithPhoneNotVerifedYet: (flowData?: SSOV2StoreType['flowData'], userInfo?: UserInfo) => boolean;
