import { RecipePostAPIHookContext, RecipePreAPIHookContext, UserInput as RecipeModuleUserInput, } from "../recipeModule/types"; import OverrideableBuilder from "supertokens-js-override"; import { RecipeFunctionOptions } from "../recipeModule/types"; import { NormalisedInputType as AuthRecipeNormalisedInputType, InputType as AuthRecipeInputType, } from "../authRecipe/types"; import { User } from "../../types"; export declare type PreAndPostAPIHookAction = | "EMAIL_PASSWORD_SIGN_UP" | "EMAIL_PASSWORD_SIGN_IN" | "SEND_RESET_PASSWORD_EMAIL" | "SUBMIT_NEW_PASSWORD" | "EMAIL_EXISTS"; export declare type PreAPIHookContext = RecipePreAPIHookContext; export declare type PostAPIHookContext = RecipePostAPIHookContext; export declare type UserInput = { /** * Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/frontend-functions-override/about the documentation} */ override?: { functions?: ( originalImplementation: RecipeInterface, builder: OverrideableBuilder ) => RecipeInterface; }; } & RecipeModuleUserInput; export declare type InputType = AuthRecipeInputType & UserInput; export declare type NormalisedInputType = AuthRecipeNormalisedInputType & { override: { functions: ( originalImplementation: RecipeInterface, builder: OverrideableBuilder ) => RecipeInterface; }; }; export declare type RecipeInterface = { /** * Submit a new password for the user * * @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more) * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @param options Use this to configure additional properties (for example pre api hooks) * * @returns `{status: "OK"}` if successfull * * @returns `{status: "RESET_PASSWORD_INVALID_TOKEN_ERROR"}` if the token in the URL is invalid * * @returns `{status: "FIELD_ERROR", formFields}` if the form field values are incorrect * * @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"` */ submitNewPassword: (input: { formFields: { id: string; value: string; }[]; options?: RecipeFunctionOptions; userContext: any; }) => Promise< | { status: "OK"; fetchResponse: Response; } | { status: "RESET_PASSWORD_INVALID_TOKEN_ERROR"; fetchResponse: Response; } | { status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; fetchResponse: Response; } >; /** * Send an email to the user for password reset * * @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more) * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @param options Use this to configure additional properties (for example pre api hooks) * * @returns `{status: "OK"}` if successfull * * @returns `{status: "FIELD_ERROR", formFields}` if the formFields dont match the ones in the configured in the backend SDKs * * @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"` */ sendPasswordResetEmail: (input: { formFields: { id: string; value: string; }[]; options?: RecipeFunctionOptions; userContext: any; }) => Promise< | { status: "OK"; fetchResponse: Response; } | { status: "PASSWORD_RESET_NOT_ALLOWED"; reason: string; fetchResponse: Response; } | { status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; fetchResponse: Response; } >; /** * Sign up a user with email and password * * @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more). Note that the form fields must match the ones configured in the backend SDKs * * @param shouldTryLinkingWithSessionUser Whether the backend should try to link the user to the session user * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @param options Use this to configure additional properties (for example pre api hooks) * * @returns `{status: "OK"}` if successfull * * @returns `{status: "FIELD_ERROR", formFields}` if the formFields dont match the ones in the configured in the backend SDKs * * @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"` */ signUp: (input: { formFields: { id: string; value: string; }[]; shouldTryLinkingWithSessionUser: boolean | undefined; options?: RecipeFunctionOptions; userContext: any; }) => Promise< | { status: "OK"; user: User; fetchResponse: Response; } | { status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; fetchResponse: Response; } | { status: "SIGN_UP_NOT_ALLOWED"; reason: string; fetchResponse: Response; } >; /** * Sign in a user with email and password * * @param formFields List of fields to send to the API exposed by the backend SDK (Refer to the {@link https://supertokens.com/docs/fdi API spec} to know more). Note that the form fields must match the ones configured in the backend SDKs * * @param shouldTryLinkingWithSessionUser Whether the backend should try to link the user to the session user * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @param options Use this to configure additional properties (for example pre api hooks) * * @returns `{status: "OK"}` if successfull * * @returns `{status: "FIELD_ERROR", formFields}` if the formFields dont match the ones in the configured in the backend SDKs * * @returns `{status: "WRONG_CREDENTIALS_ERROR"}` if the credentials are invalid * * @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"` */ signIn: (input: { formFields: { id: string; value: string; }[]; shouldTryLinkingWithSessionUser: boolean | undefined; options?: RecipeFunctionOptions; userContext: any; }) => Promise< | { status: "OK"; user: User; fetchResponse: Response; } | { status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; fetchResponse: Response; } | { status: "WRONG_CREDENTIALS_ERROR"; fetchResponse: Response; } | { status: "SIGN_IN_NOT_ALLOWED"; reason: string; fetchResponse: Response; } >; /** * Check if an email exists * * @param email The email to check * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @param options Use this to configure additional properties (for example pre api hooks) * * @returns `{status: "OK", doesExist: boolean}` * * @throws STGeneralError if the API exposed by the backend SDKs returns `status: "GENERAL_ERROR"` */ doesEmailExist: (input: { email: string; options?: RecipeFunctionOptions; userContext: any }) => Promise<{ status: "OK"; doesExist: boolean; fetchResponse: Response; }>; /** * Reads and returns the reset password token from the current URL * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @returns The "token" query parameter from the current location */ getResetPasswordTokenFromURL: (input: { userContext: any }) => string; /** * Reads and returns the tenant id from the current URL * * @param userContext Refer to {@link https://supertokens.com/docs/emailpassword/advanced-customizations/user-context the documentation} * * @returns The "tenantId" query parameter from the current location */ getTenantIdFromURL: (input: { userContext: any }) => string | undefined; };