export interface GigyaSdkStateType {
    apiKey: string;
    UID: string;
    lang: string;
    error?: GigyaSdkErrorType;
    storageKey: string;
    storage?: {
        getItem: (key: string) => string | null | Promise<string | null>;
        setItem: (key: string, value: string) => any;
    };
    authenticationAttempt?: {
        type?: 'apple' | 'email' | 'facebook';
    };
    regToken?: {
        value?: GigyaSdkLoginErrorPayloadType['regToken'];
        expirationDate?: Date;
        isStillValid?: boolean;
    };
}
export declare enum GigyaSdkErrorCodes {
    ConsecutiveRequestLimitReached = 400125,
    AccountTemporarilyLockedOut = 403120,
    InvalidLoginIdOrPassword = 403042,
    MaxRequestLimitReached = 403000,
    NotConnectedToNetwork = 400106,
    InvalidApiKeyParameter = 400093,
    UniqueIdentifierExists = 400003,
    PendingVerification = 206002,
    LoginIdDoesNotExist = 403047,
    PendingRegistration = 206001,
    ConflictingAccount = 403043,
    PermissionDenied = 403007,
    InvalidParameter = 400006,
    ValidationError = 400009
}
export declare enum GigyaSdkErrors {
    ConsecutiveRequestLimitReached = "consecutiveRequestLimitReached",
    AccountTemporarilyLockedOut = "accountTemporarilyLockedOut",
    InvalidLoginIdOrPassword = "invalidLoginIdOrPassword",
    CreateURLRequestFailed = "createURLRequestFailed",
    MaxRequestLimitReached = "maxRequestLimitReached",
    NotConnectedToNetwork = "notConnectedToNetwork",
    InvalidApiKeyParameter = "invalidApiKeyParameter",
    UniqueIdentifierExists = "uniqueIdentifierExists",
    PendingPasswordChange = "pendingPasswordChange",
    LoginIdDoesNotExist = "loginIdDoesNotExist",
    PendingRegistration = "pendingRegistration",
    PendingVerification = "pendingVerification",
    ConflictingAccount = "conflictingAccount",
    InvalidParameter = "invalidParameter",
    PermissionDenied = "permissionDenied",
    ValidationError = "validationError",
    SetAccountError = "setAccountError",
    UndefinedError = "undefinedError",
    JsonParseError = "jsonParseError",
    EmptyResponse = "emptyResponse",
    UserCancelled = "userCancelled",
    NetworkError = "networkError",
    SendApiError = "sendApiError"
}
export interface GigyaSdkApiResponseType {
    statusReason: string;
    statusCode: number;
    errorCode: number;
    callId: string;
    time: Date;
}
export interface GigyaSdkValidationErrorType {
    errorCode: number;
    fieldName: 'username' | 'password' | 'secretQuestion' | 'secretAnswer' | 'email';
    message: string;
}
export interface GigyaSdkLoginErrorPayloadAccountInfoType extends GigyaSdkApiResponseType {
    UID: string;
    UIDSig: string;
    UIDSignature: string;
    signatureTimestamp: string;
    isSiteUser: boolean;
    isConnected: boolean;
    isTempUser: boolean;
    isLoggedIn: boolean;
    loginProvider: string;
    loginProviderUID: string;
    isSiteUID: boolean;
    identities: Record<string, unknown>[];
    nickname: string;
    photoURL: string;
    thumbnailURL: string;
    firstName: string;
    lastName: string;
    gender: string;
    email: string;
    capabilities: string;
    providers: string;
    oldestDataUpdatedTimestamp: number;
    oldestDataAge: number;
    timestamp: string;
}
export interface GigyaSdkLoginErrorPayloadType extends GigyaSdkApiResponseType {
    errorCode: GigyaSdkErrorCodes;
    errorDetails: string;
    errorMessage: string;
    apiVersion: number;
    newUser: boolean;
    accountInfo: GigyaSdkLoginErrorPayloadAccountInfoType;
    id_token: string;
    regToken: string;
    loginID?: string;
    loginProviders?: ('apple' | 'facebook' | 'site')[];
    validationErrors?: GigyaSdkValidationErrorType[];
}
export interface GigyaSdkErrorType {
    payload: GigyaSdkLoginErrorPayloadType | null;
    type: GigyaSdkErrors;
    code?: string;
    name?: string;
    message?: string;
    stack?: string;
}
export interface GigyaConsentSchemaType {
    key: string;
    format: string;
    writeAccess: string;
    legalStatements: Record<string, {
        documentUrl: string;
        purpose: string;
    }>;
    customData: unknown[];
    minDocVersion: number;
    currentDocVersion: number;
    type: string;
    required: boolean;
}
export interface GigyaSdkProfileType {
    firstName: string;
    lastName: string;
    email: string;
    nickName?: string;
    address?: string;
    age?: number;
    bio?: string;
    birthDay?: number;
    birthMonth?: number;
    birthYear?: number;
    capabilities?: string;
    certifications?: unknown;
    city?: string;
    country?: string;
    education?: unknown;
    educationLevel?: string;
    favorites?: unknown;
    followersCount?: number;
    followingCount?: number;
    gender?: string;
    hometown?: string;
    honors?: string;
    identities?: unknown;
    industry?: string;
    interestedIn?: string;
    interests?: string;
    isConnected?: boolean;
    iRank?: number;
    isSiteUID?: boolean;
    isSiteUser?: boolean;
    languages?: string;
    likes?: unknown;
    locale?: string;
    name?: string;
    oldestDataAge?: number;
    oldestDataUpdatedTimestamp?: number;
    patents?: unknown;
    phones?: unknown;
    photoURL?: string;
    providers?: string;
    publications?: unknown;
    relationshipStatus?: string;
    religion?: string;
    samlData?: unknown;
    skills?: unknown;
    specialities?: string;
    state?: string;
    timezone?: string;
    thumbnailURL?: string;
    username?: string;
    isVerified?: boolean;
    verified?: string;
    verifiedTimestamp?: number;
    work?: unknown;
    zip?: string;
}
export interface GigyaSdkLoginType {
    loginProvider: 'apple' | 'facebook' | 'site';
    lastLogin: Date;
    profile: GigyaSdkProfileType;
    lastUpdatedTimestamp: number;
    registeredTimestamp: number;
    socialProviders: string;
    lastLoginTimestamp: number;
    isActive: boolean;
    isVerified: boolean;
    UID: string;
    registered: string;
    UIDSignature: string;
    verified: Date;
    oldestDataUpdated: Date;
    signatureTimestamp: string;
    oldestDataUpdatedTimestamp: number;
    apiVersion: number;
    lastUpdated: Date;
    verifiedTimestamp: number;
    isRegistered: boolean;
    createdTimestamp: number;
    created: Date;
}
export interface GigyaSdkAccountInfoType extends GigyaSdkLoginType {
    lastLoginLocation?: {
        country: string;
        coordinates: {
            lat: number;
            lon: number;
        };
    };
    preferences?: unknown;
    data?: unknown;
    identities: Record<string, unknown>[];
    subscriptions?: unknown;
    emails?: {
        verified: string[];
        unverified: string[];
    };
    loginIDs?: {
        username: string;
        emails: string[];
        unverifiedEmails: string[];
    };
    isLockedOut?: boolean;
    id_token?: string;
}
export interface GigyaSdkRegisteredAccountType extends GigyaSdkAccountInfoType {
    sessionInfo: {
        sessionToken: string;
        sessionSecret: string;
    };
}
export interface GigyaSdkConflictingAccountType {
    loginID: string;
    loginProviders: ('apple' | 'facebook' | 'site')[];
}
