// @ts-nocheck import error from "../../error"; import type { BaseRequest, BaseResponse } from "../../framework"; import normalisedURLPath from "../../normalisedURLPath"; import RecipeModule from "../../recipeModule"; import type { APIHandled, HTTPMethod, NormalisedAppinfo, RecipeListFunction, User, UserContext } from "../../types"; import type { TypeNormalisedInput, RecipeInterface, TypeInput, AccountInfoWithRecipeId } from "./types"; import RecipeUserId from "../../recipeUserId"; import { LoginMethod } from "../../user"; import { SessionContainerInterface } from "../session/types"; import type SuperTokens from "../../supertokens"; export default class Recipe extends RecipeModule { private static instance; static RECIPE_ID: "accountlinking"; config: TypeNormalisedInput; recipeInterfaceImpl: RecipeInterface; constructor(stInstance: SuperTokens, recipeId: string, appInfo: NormalisedAppinfo, config: TypeInput | undefined, _recipes: {}, _ingredients: {}); static init(config?: TypeInput): RecipeListFunction; static getInstanceOrThrowError(): Recipe; getAPIsHandled(): APIHandled[]; handleAPIRequest(_id: string, _tenantId: string, _req: BaseRequest, _response: BaseResponse, _path: normalisedURLPath, _method: HTTPMethod): Promise; handleError(error: error, _request: BaseRequest, _response: BaseResponse): Promise; getAllCORSHeaders(): string[]; isErrorFromThisRecipe(err: any): err is error; static reset(): void; getPrimaryUserThatCanBeLinkedToRecipeUserId: ({ tenantId, user, userContext, }: { tenantId: string; user: User; userContext: UserContext; }) => Promise; getOldestUserThatCanBeLinkedToRecipeUser: ({ tenantId, user, userContext, }: { tenantId: string; user: User; userContext: UserContext; }) => Promise; isSignInAllowed: ({ user, accountInfo, tenantId, session, signInVerifiesLoginMethod, userContext, }: { user: User; accountInfo: AccountInfoWithRecipeId | LoginMethod; session: SessionContainerInterface | undefined; signInVerifiesLoginMethod: boolean; tenantId: string; userContext: UserContext; }) => Promise; isSignUpAllowed: ({ newUser, isVerified, session, tenantId, userContext, }: { newUser: AccountInfoWithRecipeId; isVerified: boolean; session: SessionContainerInterface | undefined; tenantId: string; userContext: UserContext; }) => Promise; isSignInUpAllowedHelper: ({ accountInfo, isVerified, session, tenantId, isSignIn, user, userContext, }: { accountInfo: AccountInfoWithRecipeId | LoginMethod; isVerified: boolean; session: SessionContainerInterface | undefined; tenantId: string; isSignIn: boolean; user: User | undefined; userContext: UserContext; }) => Promise; isEmailChangeAllowed: (input: { user: User; newEmail: string; isVerified: boolean; session: SessionContainerInterface | undefined; userContext: UserContext; }) => Promise<{ allowed: true; } | { allowed: false; reason: "PRIMARY_USER_CONFLICT" | "ACCOUNT_TAKEOVER_RISK"; }>; verifyEmailForRecipeUserIfLinkedAccountsAreVerified: (input: { user: User; recipeUserId: RecipeUserId; userContext: UserContext; }) => Promise; shouldBecomePrimaryUser(user: User, tenantId: string, session: SessionContainerInterface | undefined, userContext: UserContext): Promise; tryLinkingByAccountInfoOrCreatePrimaryUser({ inputUser, session, tenantId, userContext, }: { tenantId: string; inputUser: User; session: SessionContainerInterface | undefined; userContext: UserContext; }): Promise<{ status: "OK"; user: User; } | { status: "NO_LINK"; }>; }