// @ts-nocheck import Recipe from "./recipe"; import SuperTokensError from "./error"; import { RecipeInterface, APIOptions, APIInterface, TypePasswordlessEmailDeliveryInput, TypePasswordlessSmsDeliveryInput } from "./types"; import RecipeUserId from "../../recipeUserId"; import { SessionContainerInterface } from "../session/types"; import { User } from "../../types"; export default class Wrapper { static init: typeof Recipe.init; static Error: typeof SuperTokensError; static createCode(input: ({ email: string; } | { phoneNumber: string; }) & { tenantId: string; userInputCode?: string; session?: SessionContainerInterface; userContext?: Record; }): Promise<{ status: "OK"; preAuthSessionId: string; codeId: string; deviceId: string; userInputCode: string; linkCode: string; codeLifetime: number; timeCreated: number; }>; static createNewCodeForDevice(input: { deviceId: string; userInputCode?: string; tenantId: string; userContext?: Record; }): Promise<{ status: "OK"; preAuthSessionId: string; codeId: string; deviceId: string; userInputCode: string; linkCode: string; codeLifetime: number; timeCreated: number; } | { status: "RESTART_FLOW_ERROR" | "USER_INPUT_CODE_ALREADY_USED_ERROR"; }>; /** * 1. verifies the code * 2. creates the user if it doesn't exist * 3. tries to link it * 4. marks the email as verified */ static consumeCode(input: { preAuthSessionId: string; userInputCode: string; deviceId: string; session?: undefined; tenantId: string; userContext?: Record; } | { preAuthSessionId: string; linkCode: string; session?: undefined; tenantId: string; userContext?: Record; }): Promise<{ status: "OK"; consumedDevice: { preAuthSessionId: string; failedCodeInputAttemptCount: number; email?: string; phoneNumber?: string; }; createdNewRecipeUser: boolean; user: User; recipeUserId: RecipeUserId; } | { status: "INCORRECT_USER_INPUT_CODE_ERROR" | "EXPIRED_USER_INPUT_CODE_ERROR"; failedCodeInputAttemptCount: number; maximumCodeInputAttempts: number; } | { status: "RESTART_FLOW_ERROR"; }>; static consumeCode(input: { preAuthSessionId: string; userInputCode: string; deviceId: string; session: SessionContainerInterface; tenantId: string; userContext?: Record; } | { preAuthSessionId: string; linkCode: string; session: SessionContainerInterface; tenantId: string; userContext?: Record; }): Promise<{ status: "OK"; consumedDevice: { preAuthSessionId: string; failedCodeInputAttemptCount: number; email?: string; phoneNumber?: string; }; createdNewRecipeUser: boolean; user: User; recipeUserId: RecipeUserId; } | { status: "INCORRECT_USER_INPUT_CODE_ERROR" | "EXPIRED_USER_INPUT_CODE_ERROR"; failedCodeInputAttemptCount: number; maximumCodeInputAttempts: number; } | { status: "RESTART_FLOW_ERROR"; } | { status: "LINKING_TO_SESSION_USER_FAILED"; reason: "EMAIL_VERIFICATION_REQUIRED" | "RECIPE_USER_ID_ALREADY_LINKED_WITH_ANOTHER_PRIMARY_USER_ID_ERROR" | "ACCOUNT_INFO_ALREADY_ASSOCIATED_WITH_ANOTHER_PRIMARY_USER_ID_ERROR" | "SESSION_USER_ACCOUNT_INFO_ALREADY_ASSOCIATED_WITH_ANOTHER_PRIMARY_USER_ID_ERROR"; }>; /** * This function will only verify the code (not consume it), and: * NOT create a new user if it doesn't exist * NOT verify the user email if it exists * NOT do any linking * NOT delete the code unless it returned RESTART_FLOW_ERROR */ static checkCode(input: { preAuthSessionId: string; userInputCode: string; deviceId: string; tenantId: string; userContext?: Record; } | { preAuthSessionId: string; linkCode: string; tenantId: string; userContext?: Record; }): Promise<{ status: "OK"; consumedDevice: { preAuthSessionId: string; failedCodeInputAttemptCount: number; email?: string; phoneNumber?: string; }; } | { status: "INCORRECT_USER_INPUT_CODE_ERROR" | "EXPIRED_USER_INPUT_CODE_ERROR"; failedCodeInputAttemptCount: number; maximumCodeInputAttempts: number; } | { status: "RESTART_FLOW_ERROR"; }>; static updateUser(input: { recipeUserId: RecipeUserId; email?: string | null; phoneNumber?: string | null; userContext?: Record; }): Promise<{ status: "OK" | "UNKNOWN_USER_ID_ERROR" | "EMAIL_ALREADY_EXISTS_ERROR" | "PHONE_NUMBER_ALREADY_EXISTS_ERROR"; } | { status: "EMAIL_CHANGE_NOT_ALLOWED_ERROR" | "PHONE_NUMBER_CHANGE_NOT_ALLOWED_ERROR"; reason: string; }>; static revokeAllCodes(input: { email: string; tenantId: string; userContext?: Record; } | { phoneNumber: string; tenantId: string; userContext?: Record; }): Promise<{ status: "OK"; }>; static revokeCode(input: { codeId: string; tenantId: string; userContext?: Record; } | { preAuthSessionId: string; tenantId: string; userContext?: Record; }): Promise<{ status: "OK"; }>; static listCodesByEmail(input: { email: string; tenantId: string; userContext?: Record; }): Promise; static listCodesByPhoneNumber(input: { phoneNumber: string; tenantId: string; userContext?: Record; }): Promise; static listCodesByDeviceId(input: { deviceId: string; tenantId: string; userContext?: Record; }): Promise; static listCodesByPreAuthSessionId(input: { preAuthSessionId: string; tenantId: string; userContext?: Record; }): Promise; static createMagicLink(input: { email: string; tenantId: string; userContext?: Record; } | { phoneNumber: string; tenantId: string; userContext?: Record; }): Promise; static signInUp(input: { email: string; tenantId: string; session?: SessionContainerInterface; userContext?: Record; } | { phoneNumber: string; tenantId: string; session?: SessionContainerInterface; userContext?: Record; }): Promise<{ status: string; createdNewRecipeUser: boolean; recipeUserId: RecipeUserId; user: User; }>; static sendEmail(input: TypePasswordlessEmailDeliveryInput & { userContext?: Record; }): Promise; static sendSms(input: TypePasswordlessSmsDeliveryInput & { userContext?: Record; }): Promise; } export declare let init: typeof Recipe.init; export declare let Error: typeof SuperTokensError; export declare let createCode: typeof Wrapper.createCode; export declare let consumeCode: typeof Wrapper.consumeCode; export declare let listCodesByDeviceId: typeof Wrapper.listCodesByDeviceId; export declare let listCodesByEmail: typeof Wrapper.listCodesByEmail; export declare let listCodesByPhoneNumber: typeof Wrapper.listCodesByPhoneNumber; export declare let listCodesByPreAuthSessionId: typeof Wrapper.listCodesByPreAuthSessionId; export declare let createNewCodeForDevice: typeof Wrapper.createNewCodeForDevice; export declare let updateUser: typeof Wrapper.updateUser; export declare let revokeAllCodes: typeof Wrapper.revokeAllCodes; export declare let revokeCode: typeof Wrapper.revokeCode; export declare let createMagicLink: typeof Wrapper.createMagicLink; export declare let signInUp: typeof Wrapper.signInUp; export declare let checkCode: typeof Wrapper.checkCode; export type { RecipeInterface, APIOptions, APIInterface }; export declare let sendEmail: typeof Wrapper.sendEmail; export declare let sendSms: typeof Wrapper.sendSms;