[GH-ISSUE #3570] TypeScript error with emailOTP plugin after upgrading from v1.2.12 to v1.3.3 - Plugin init method type incompatibility #26973

Closed
opened 2026-04-17 17:44:14 -05:00 by GiteaMirror · 38 comments
Owner

Originally created by @rohovskoi on GitHub (Jul 23, 2025).
Original GitHub issue: https://github.com/better-auth/better-auth/issues/3570

Is this suited for github?

  • Yes, this is suited for github

To Reproduce

Summary
After upgrading from Better Auth v1.2.12 to v1.3.3, the emailOTP plugin is causing a TypeScript error related to plugin type incompatibility. The error suggests the plugin is trying to return an init method that modifies emailVerification options, which conflicts with the BetterAuthPlugin type system.

Upgrade Better Auth from v1.2.12 to v1.3.3
Use the emailOTP plugin with the following configuration:

plugins: [  
  emailOTP({  
    expiresIn: 900,  
    allowedAttempts: 5,  
    otpLength: 6,  
    disableSignUp: true,  
    overrideDefaultEmailVerification: false,
    async sendVerificationOTP({ email, otp, type }) {  
      if (type === 'forget-password') {  
        // email sending logic  
      }  
    },  
  }),  
]

Current vs. Expected behavior

Expected: The emailOTP plugin should work without TypeScript errors as it did in v1.2.12.
Current: TypeScript throws a complex error about type incompatibility between the plugin's init method return type and the expected BetterAuthPlugin interface.

Error:

Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | ... 1 more ... | undefined; }; url: string; token: string; }, request: Request | u...' is not assignable to type 'BetterAuthPlugin'.
The types returned by 'init(...)' are incompatible between these types.
Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ....'.
Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ...; run...'.
The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types.
Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'.
Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. (ts 2322)

What version of Better Auth are you using?

1.3.3

Provide environment information

Better Auth version: 1.3.3 (worked in 1.2.12)
TypeScript version: "^5.8.3"
Node.js version: 22.17.0

Which area(s) are affected? (Select all that apply)

Types

Auth config (if applicable)

const auth = betterAuth({
        baseURL: API_URL,
        database: drizzleAdapter(db, {
          provider: 'pg',
          schema: {
            session,
            user,
            account,
            verification,
            jwks,
          },
        }),
        emailAndPassword: {
          enabled: true,
        },
        emailVerification: {
          sendVerificationEmail: async ({ user, url }) => {
            await sendEmailVerificationOTP({
              emailTo: [user.email],
              emailedFrom: SEND_EMAIL_FROM_EMAIL,
              subject: 'Verify your email',
              html: '',
            });
     
          },
        },
        plugins: [
          emailOTP({
            expiresIn: 900,
            allowedAttempts: 5,
            otpLength: 6,
            disableSignUp: true,
            overrideDefaultEmailVerification: false,
            async sendVerificationOTP({ email, otp, type }) {
              if (type === 'forget-password') {
                await sendForgetPasswordEmailOTP({
                  emailTo: [email],
                  emailedFrom: SEND_EMAIL_FROM_EMAIL,
                  subject: 'Password Reset Code',
                  html: '',
                });
              }
            },
          }),
          bearer({
            requireSignature: true,
          }),
          jwt(),
        ],
      });

Additional context

The error only started appearing after the v1.3.3 upgrade
The configuration structure appears correct according to documentation
The actual emailOTP plugin implementation index.ts:65-79 doesn't seem to have an init method that returns emailVerification options
This appears to be a breaking change in the plugin type system between versions

Originally created by @rohovskoi on GitHub (Jul 23, 2025). Original GitHub issue: https://github.com/better-auth/better-auth/issues/3570 ### Is this suited for github? - [x] Yes, this is suited for github ### To Reproduce **Summary** After upgrading from Better Auth v1.2.12 to v1.3.3, the emailOTP plugin is causing a TypeScript error related to plugin type incompatibility. The error suggests the plugin is trying to return an init method that modifies emailVerification options, which conflicts with the BetterAuthPlugin type system. Upgrade Better Auth from v1.2.12 to v1.3.3 Use the emailOTP plugin with the following configuration: ```ts plugins: [ emailOTP({ expiresIn: 900, allowedAttempts: 5, otpLength: 6, disableSignUp: true, overrideDefaultEmailVerification: false, async sendVerificationOTP({ email, otp, type }) { if (type === 'forget-password') { // email sending logic } }, }), ] ``` ### Current vs. Expected behavior Expected: The emailOTP plugin should work without TypeScript errors as it did in v1.2.12. Current: TypeScript throws a complex error about type incompatibility between the plugin's init method return type and the expected BetterAuthPlugin interface. Error: ```ts Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | ... 1 more ... | undefined; }; url: string; token: string; }, request: Request | u...' is not assignable to type 'BetterAuthPlugin'. The types returned by 'init(...)' are incompatible between these types. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ....'. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ...; run...'. The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types. Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. (ts 2322) ``` ### What version of Better Auth are you using? 1.3.3 ### Provide environment information ```bash Better Auth version: 1.3.3 (worked in 1.2.12) TypeScript version: "^5.8.3" Node.js version: 22.17.0 ``` ### Which area(s) are affected? (Select all that apply) Types ### Auth config (if applicable) ```typescript const auth = betterAuth({ baseURL: API_URL, database: drizzleAdapter(db, { provider: 'pg', schema: { session, user, account, verification, jwks, }, }), emailAndPassword: { enabled: true, }, emailVerification: { sendVerificationEmail: async ({ user, url }) => { await sendEmailVerificationOTP({ emailTo: [user.email], emailedFrom: SEND_EMAIL_FROM_EMAIL, subject: 'Verify your email', html: '', }); }, }, plugins: [ emailOTP({ expiresIn: 900, allowedAttempts: 5, otpLength: 6, disableSignUp: true, overrideDefaultEmailVerification: false, async sendVerificationOTP({ email, otp, type }) { if (type === 'forget-password') { await sendForgetPasswordEmailOTP({ emailTo: [email], emailedFrom: SEND_EMAIL_FROM_EMAIL, subject: 'Password Reset Code', html: '', }); } }, }), bearer({ requireSignature: true, }), jwt(), ], }); ``` ### Additional context The error only started appearing after the v1.3.3 upgrade The configuration structure appears correct according to documentation The actual emailOTP plugin implementation index.ts:65-79 doesn't seem to have an init method that returns emailVerification options This appears to be a breaking change in the plugin type system between versions
GiteaMirror added the locked label 2026-04-17 17:44:14 -05:00
Author
Owner

@dosubot[bot] commented on GitHub (Jul 23, 2025):

Hi @rohovskoi! I'm Dosu and I’m helping the better-auth team.

This TypeScript error is caused by stricter typing for plugins in Better Auth v1.3.3. The emailOTP plugin's init method can return an object that overrides core options like emailVerification (specifically when overrideDefaultEmailVerification is true), but the updated BetterAuthPlugin interface now forbids plugins from modifying certain core options, leading to the incompatibility you’re seeing. This is a breaking change introduced by recent updates to the type system, particularly in the plugin type definitions and BetterAuthOptions type aliasing [source] [source].

To work around this, avoid using the overrideDefaultEmailVerification option in your emailOTP plugin config, and let the core emailVerification option handle verification emails. If you need to customize email verification, do so directly in the emailVerification config at the top level, not via the plugin. This should resolve the type error and restore compatibility with v1.3.3.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

<!-- gh-comment-id:3109978192 --> @dosubot[bot] commented on GitHub (Jul 23, 2025): <!-- Greeting --> Hi @rohovskoi! I'm [Dosu](https://go.dosu.dev/dosubot) and I’m helping the better-auth team. <!-- Answer --> This TypeScript error is caused by stricter typing for plugins in Better Auth v1.3.3. The emailOTP plugin's init method can return an object that overrides core options like emailVerification (specifically when overrideDefaultEmailVerification is true), but the updated BetterAuthPlugin interface now forbids plugins from modifying certain core options, leading to the incompatibility you’re seeing. This is a breaking change introduced by recent updates to the type system, particularly in the plugin type definitions and BetterAuthOptions type aliasing [[source]](https://github.com/better-auth/better-auth/pull/962) [[source]](https://github.com/better-auth/better-auth/blob/e11c51e210cbc9c4b7177e13a9c8efd2985c856f/packages/better-auth/src/plugins/email-otp/index.ts). To work around this, avoid using the overrideDefaultEmailVerification option in your emailOTP plugin config, and let the core emailVerification option handle verification emails. If you need to customize email verification, do so directly in the emailVerification config at the top level, not via the plugin. This should resolve the type error and restore compatibility with v1.3.3. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/d3766842-72db-41c9-897e-4f5355e90464?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/cdda13d9-dd27-4d31-b09a-5d8bec92de21/ask?utm_source=github)&nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/better-auth/better-auth/issues/3570)
Author
Owner

@Bekacru commented on GitHub (Jul 24, 2025):

Make sure to restart your ts server if incase that's the problem. If it still persists feel free to share your tsconfig.

<!-- gh-comment-id:3111955055 --> @Bekacru commented on GitHub (Jul 24, 2025): Make sure to restart your ts server if incase that's the problem. If it still persists feel free to share your tsconfig.
Author
Owner

@rohovskoi commented on GitHub (Jul 24, 2025):

The issue persists. Restarted many times already @Bekacru
I also can't disable exactOptionalPropertyTypes as I'm using Effect-TS, which requires it.

{
	"compilerOptions": {
		"strict": true,
		"esModuleInterop": true,
		"allowSyntheticDefaultImports": true,
		"exactOptionalPropertyTypes": true,
		"moduleDetection": "force",
		"composite": true,
		"downlevelIteration": true,
		"resolveJsonModule": true,
		"declaration": true,
		"declarationMap": true,
		"skipLibCheck": true,
		"emitDecoratorMetadata": true,
		"experimentalDecorators": true,
		"types": [],
		"isolatedModules": true,
		"sourceMap": true,
		"noImplicitReturns": false,
		"noUnusedLocals": true,
		"noUnusedParameters": false,
		"noFallthroughCasesInSwitch": true,
		"noEmitOnError": false,
		"noErrorTruncation": false,
		"allowJs": false,
		"checkJs": false,
		"forceConsistentCasingInFileNames": true,
		"noImplicitAny": true,
		"noImplicitThis": true,
		"noUncheckedIndexedAccess": false,
		"strictNullChecks": true,
		"incremental": true,
		"removeComments": false,
		"baseUrl": "../..",
		"lib": ["ES2022", "DOM", "DOM.Iterable"],
		"module": "ES2022",
                 "moduleResolution": "node",
                "target": "ES2022"
               }
}

<!-- gh-comment-id:3112543505 --> @rohovskoi commented on GitHub (Jul 24, 2025): The issue persists. Restarted many times already @Bekacru I also can't disable exactOptionalPropertyTypes as I'm using Effect-TS, which requires it. ```json { "compilerOptions": { "strict": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "exactOptionalPropertyTypes": true, "moduleDetection": "force", "composite": true, "downlevelIteration": true, "resolveJsonModule": true, "declaration": true, "declarationMap": true, "skipLibCheck": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "types": [], "isolatedModules": true, "sourceMap": true, "noImplicitReturns": false, "noUnusedLocals": true, "noUnusedParameters": false, "noFallthroughCasesInSwitch": true, "noEmitOnError": false, "noErrorTruncation": false, "allowJs": false, "checkJs": false, "forceConsistentCasingInFileNames": true, "noImplicitAny": true, "noImplicitThis": true, "noUncheckedIndexedAccess": false, "strictNullChecks": true, "incremental": true, "removeComments": false, "baseUrl": "../..", "lib": ["ES2022", "DOM", "DOM.Iterable"], "module": "ES2022", "moduleResolution": "node", "target": "ES2022" } } ```
Author
Owner

@aniravi24 commented on GitHub (Jul 24, 2025):

I see a simliar error, likely caused by exactOptionalPropertyTypes which I would like to keep enabled. Here's the complete error with noErrorTruncation set to true.

Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined; }; }; }; endpoints: { createVerificationOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; type: "sign-in" | "forget-password" | "email-verification"; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: string; } : string>; options: { method: "POST"; body: ZodObject<{ email: ZodString; type: ZodEnum<{ "sign-in": "sign-in"; "forget-password": "forget-password"; "email-verification": "email-verification"; }>; }, $strip>; metadata: { SERVER_ONLY: true; openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "string"; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/create-verification-otp"; }; getVerificationOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body?: undefined; } & { method?: "GET" | undefined; } & { query: { email: string; type: "sign-in" | "forget-password" | "email-verification"; }; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { otp: null; } | { otp: string; }; } : { otp: null; } | { otp: string; }>; options: { method: "GET"; query: ZodObject<{ email: ZodString; type: ZodEnum<{ "sign-in": "sign-in"; "forget-password": "forget-password"; "email-verification": "email-verification"; }>; }, $strip>; metadata: { SERVER_ONLY: true; openapi: { description: string; responses: { "200": { description: string; content: { "application/json": { schema: { type: "object"; properties: { otp: { type: string; nullable: boolean; description: string; }; }; required: string[]; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/get-verification-otp"; }; verifyEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; otp: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { status: boolean; token: string; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; } | { status: boolean; token: null; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; }; } : { status: boolean; token: string; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; } | { status: boolean; token: null; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; otp: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { status: { type: string; description: string; enum: boolean[]; }; token: { type: string; nullable: boolean; description: string; }; user: { $ref: string; }; required: string[]; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/verify-email"; }; signInEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; otp: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { token: string; user: { id: string; email: string; emailVerified: boolean; name: string; image: string | null | undefined; createdAt: Date; updatedAt: Date; }; }; } : { token: string; user: { id: string; email: string; emailVerified: boolean; name: string; image: string | null | undefined; createdAt: Date; updatedAt: Date; }; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; otp: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { token: { type: string; description: string; }; user: { $ref: string; }; }; required: string[]; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/sign-in/email-otp"; }; forgetPasswordEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { success: boolean; }; } : { success: boolean; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { success: { type: string; description: string; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/forget-password/email-otp"; }; resetPasswordEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; otp: string; password: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { success: boolean; }; } : { success: boolean; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; otp: ZodString; password: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; contnt: { "application/json": { schema: { type: string; properties: { success: { type: string; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/reset-password"; }; sendVerificationOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; type: "sign-in" | "forget-password" | "email-verification"; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { success: boolean; }; } : { success: boolean; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; type: ZodEnum<{ "sign-in": "sign-in"; "forget-password": "forget-password"; "email-verification": "email-verification"; }>; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { success: { type: string; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/send-verification-otp"; }; }; hooks: { after: { matcher(context: HookEndpointContext): boolean; handler: (inputContext: MiddlewareInputContext<MiddlewareOptions>) => Promise<void>; }[]; }; $ERROR_CODES: { readonly OTP_EXPIRED: "otp expired"; readonly INVALID_OTP: "Invalid OTP"; readonly INVALID_EMAIL: "Invalid email"; readonly USER_NOT_FOUND: "User not found"; readonly TOO_MANY_ATTEMPTS: "Too many attempts"; }; rateLimit: ({ pathMatcher(path: string): path is "/email-otp/send-verification-otp"; window: number; max: number; } | { pathMatcher(path: string): path is "/email-otp/verify-email"; window: number; max: number; } | { pathMatcher(path: string): path is "/sign-in/email-otp"; window: number; max: number; })[]; }' is not assignable to type 'BetterAuthPlugin'.
  The types returned by 'init(...)' are incompatible between these types.
    Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<boolean>; }; adapter?: { id?: string; create?: <T extends Record<string, any>, R = T>(data: { model: string; data: Omit<T, "id">; select?: string[]; forceAllowId?: boolean; }) => Promise<R>; findOne?: <T>(data: { model: string; where: Where[]; select?: string[]; }) => Promise<T | null>; findMany?: <T>(data: { model: string; where?: Where[]; limit?: number; sortBy?: { field: string; direction: "asc" | "desc"; }; offset?: number; }) => Promise<T[]>; count?: (data: { model: string; where?: Where[]; }) => Promise<number>; update?: <T>(data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<T | null>; updateMany?: (data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<number>; delete?: <T>(data: { model: string; where: Where[]; }) => Promise<void>; deleteMany?: (data: { model: string; where: Where[]; }) => Promise<number>; createSchema?: (options: BetterAuthOptions, file?: string | undefined) => Promise<AdapterSchemaCreation>; options?: { [x: string]: any; }; }; session?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; appName?: string; baseURL?: string; secret?: string; secondaryStorage?: { get?: (key: string) => string | Promise<string | null> | null; set?: (key: string, value: string, ttl?: number | undefined) => void | Promise<string | void | null>; delete?: (key: string) => void | Promise<string | void | null>; } | undefined; socialProviders?: ({ id?: "" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; }; createAuthorizationURL?: (data: { state: string; codeVerifier: string; scopes?: string[]; redirectURI: string; display?: string; loginHint?: string; }) => URL | Promise<URL>; name?: string; validateAuthorizationCode?: (data: { code: string; redirectURI: string; codeVerifier?: string; deviceId?: string; }) => Promise<OAuth2Tokens>; getUserInfo?: (token: OAuth2Tokens & { user?: { name?: { firstName?: string; lastName?: string; }; email?: string; }; }) => Promise<{ user: { id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: Record<string, any>; } | null>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; revokeToken?: (token: string) => Promise<void>; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; options?: { clientId?: string; clientSecret?: string; scope?: (string | undefined)[]; disableDefaultScope?: boolean; redirectURI?: string; clientKey?: string; disableIdTokenSignIn?: boolean; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; getUserInfo?: (token: OAuth2Tokens) => Promise<{ user: { [key: string]: any; id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: any; }>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; mapProfileToUser?: (profile: any) => { [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; } | Promise<{ [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; }>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; prompt?: "select_account" | "consent" | "login" | "none" | "select_account+consent"; responseMode?: "query" | "form_post"; overrideUserInfoOnSignIn?: boolean; }; } | undefined)[]; trustedOrigins?: (string | undefined)[]; rateLimit?: { enabled?: boolean; window?: number; max?: number; storage?: "database" | "memory" | "secondary-storage"; customRules?: { [x: string]: ((request: Request) => { window: number; max: number; } | Promise<{ window: number; max: number; }>) | { window?: number; max?: number; } | undefined; }; modelName?: string; fields?: { count?: string; key?: string; lastRequest?: string; }; customStorage?: { get?: (key: string) => Promise<RateLimit | undefined>; set?: (key: string, value: RateLimit) => Promise<void>; }; }; logger?: { error?: (message: string, ...args: any[]) => void; warn?: (message: string, ...args: any[]) => void; info?: (message: string, ...args: any[]) => void; debug?: (message: string, ...args: any[]) => void; success?: (message: string, ...args: any[]) => void; }; newSession?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; setNewSession?: (session: { session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null) => void; authCookies?: { sessionToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; sessionData?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; dontRememberToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; }; internalAdapter?: { createOAuthUser?: (user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>, account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "userId" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<{ user: any; account: any; }>; createUser?: <T>(user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt" | "emailVerified"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>; createAccount?: <T>(account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>; listSessions?: (userId: string) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }[]>; listUsers?: (limit?: number | undefined, offset?: number | undefined, sortBy?: { field: string; direction: "asc" | "desc"; } | undefined, where?: Where[] | undefined) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }[]>; countTotalUsers?: (where?: Where[] | undefined) => Promise<number>; deleteUser?: (userId: string) => Promise<void>; createSession?: (userId: string, ctx: GenericEndpointContext, dontRememberMe?: boolean | undefined, override?: (Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>) | undefined, overrideAll?: boolean | undefined) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }>; findSession?: (token: string) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null>; findSessions?: (sessionTokens: string[]) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; }[]>; updateSession?: (sessionToken: string, session: Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; deleteSession?: (token: string) => Promise<void>; deleteAccounts?: (userId: string) => Promise<void>; deleteAccount?: (accountId: string) => Promise<void>; deleteSessions?: (userIdOrSessionTokens: string | string[]) => Promise<void>; findOAuthUser?: (email: string, accountId: string, providerId: string) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserByEmail?: (email: string, options?: { includeAccounts: boolean; } | undefined) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserById?: (userId: string) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } | null>; linkAccount?: (account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUser?: (userId: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUserByEmail?: (email: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>>, context?: GenericEndpointContext | undefined) => Promise<any>; updatePassword?: (userId: string, password: string, context?: GenericEndpointContext | undefined) => Promise<void>; findAccounts?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; findAccount?: (accountId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByProviderId?: (accountId: string, providerId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByUserId?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; updateAccount?: (id: string, data: Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; createVerificationValue?: (data: Omit<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>; findVerificationValue?: (identifier: string) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; } | null>; deleteVerificationValue?: (id: string) => Promise<void>; deleteVerificationByIdentifier?: (identifier: string) => Promise<void>; updateVerificationValue?: (id: string, data: Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<any>; }; createAuthCookie?: (cookieName: string, overrideAttributes?: Partial<CookieOptions> | undefined) => { name: string; attributes: CookieOptions; }; sessionConfig?: { updateAge?: number; expiresIn?: number; freshAge?: number; }; generateId?: (options: { model: LiteralUnion<Models, string>; size?: number; }) => string; tables?: { [x: string]: { modelName?: string; fields?: { [x: string]: { type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]" | ("" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; } | undefined)[]; required?: boolean; returned?: boolean; input?: boolean; defaultValue?: string | number | boolean | { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; } | (string | undefined)[] | (() => Primitive) | (number | undefined)[] | null | undefined; transform?: { input?: (value: Primitive) => Primitive | Promise<Primitive>; output?: (value: Primitive) => Primitive | Promise<Primitive>; }; references?: { model?: string; field?: string; onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default"; }; unique?: boolean; bigint?: boolean; validator?: { input?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; output?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; }; fieldName?: string; sortable?: boolean; } | undefined; }; disableMigrations?: boolean; order?: number; } | undefined; }; runMigrations?: () => Promise<void>; }; options?: Partial<BetterAuthOptions>; }'.
      Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<boolean>; }; adapter?: { id?: string; create?: <T extends Record<string, any>, R = T>(data: { model: string; data: Omit<T, "id">; select?: string[]; forceAllowId?: boolean; }) => Promise<R>; findOne?: <T>(data: { model: string; where: Where[]; select?: string[]; }) => Promise<T | null>; findMany?: <T>(data: { model: string; where?: Where[]; limit?: number; sortBy?: { field: string; direction: "asc" | "desc"; }; offset?: number; }) => Promise<T[]>; count?: (data: { model: string; where?: Where[]; }) => Promise<number>; update?: <T>(data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<T | null>; updateMany?: (data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<number>; delete?: <T>(data: { model: string; where: Where[]; }) => Promise<void>; deleteMany?: (data: { model: string; where: Where[]; }) => Promise<number>; createSchema?: (options: BetterAuthOptions, file?: string | undefined) => Promise<AdapterSchemaCreation>; options?: { [x: string]: any; }; }; session?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; appName?: string; baseURL?: string; secret?: string; secondaryStorage?: { get?: (key: string) => string | Promise<string | null> | null; set?: (key: string, value: string, ttl?: number | undefined) => void | Promise<string | void | null>; delete?: (key: string) => void | Promise<string | void | null>; } | undefined; socialProviders?: ({ id?: "" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; }; createAuthorizationURL?: (data: { state: string; codeVerifier: string; scopes?: string[]; redirectURI: string; display?: string; loginHint?: string; }) => URL | Promise<URL>; name?: string; validateAuthorizationCode?: (data: { code: string; redirectURI: string; codeVerifier?: string; deviceId?: string; }) => Promise<OAuth2Tokens>; getUserInfo?: (token: OAuth2Tokens & { user?: { name?: { firstName?: string; lastName?: string; }; email?: string; }; }) => Promise<{ user: { id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: Record<string, any>; } | null>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; revokeToken?: (token: string) => Promise<void>; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; options?: { clientId?: string; clientSecret?: string; scope?: (string | undefined)[]; disableDefaultScope?: boolean; redirectURI?: string; clientKey?: string; disableIdTokenSignIn?: boolean; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; getUserInfo?: (token: OAuth2Tokens) => Promise<{ user: { [key: string]: any; id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: any; }>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; mapProfileToUser?: (profile: any) => { [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; } | Promise<{ [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; }>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; prompt?: "select_account" | "consent" | "login" | "none" | "select_account+consent"; responseMode?: "query" | "form_post"; overrideUserInfoOnSignIn?: boolean; }; } | undefined)[]; trustedOrigins?: (string | undefined)[]; rateLimit?: { enabled?: boolean; window?: number; max?: number; storage?: "database" | "memory" | "secondary-storage"; customRules?: { [x: string]: ((request: Request) => { window: number; max: number; } | Promise<{ window: number; max: number; }>) | { window?: number; max?: number; } | undefined; }; modelName?: string; fields?: { count?: string; key?: string; lastRequest?: string; }; customStorage?: { get?: (key: string) => Promise<RateLimit | undefined>; set?: (key: string, value: RateLimit) => Promise<void>; }; }; logger?: { error?: (message: string, ...args: any[]) => void; warn?: (message: string, ...args: any[]) => void; info?: (message: string, ...args: any[]) => void; debug?: (message: string, ...args: any[]) => void; success?: (message: string, ...args: any[]) => void; }; newSession?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; setNewSession?: (session: { session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null) => void; authCookies?: { sessionToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; sessionData?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; dontRememberToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; }; internalAdapter?: { createOAuthUser?: (user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>, account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "userId" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<{ user: any; account: any; }>; createUser?: <T>(user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt" | "emailVerified"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>; createAccount?: <T>(account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>; listSessions?: (userId: string) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }[]>; listUsers?: (limit?: number | undefined, offset?: number | undefined, sortBy?: { field: string; direction: "asc" | "desc"; } | undefined, where?: Where[] | undefined) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }[]>; countTotalUsers?: (where?: Where[] | undefined) => Promise<number>; deleteUser?: (userId: string) => Promise<void>; createSession?: (userId: string, ctx: GenericEndpointContext, dontRememberMe?: boolean | undefined, override?: (Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>) | undefined, overrideAll?: boolean | undefined) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }>; findSession?: (token: string) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null>; findSessions?: (sessionTokens: string[]) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; }[]>; updateSession?: (sessionToken: string, session: Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; deleteSession?: (token: string) => Promise<void>; deleteAccounts?: (userId: string) => Promise<void>; deleteAccount?: (accountId: string) => Promise<void>; deleteSessions?: (userIdOrSessionTokens: string | string[]) => Promise<void>; findOAuthUser?: (email: string, accountId: string, providerId: string) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserByEmail?: (email: string, options?: { includeAccounts: boolean; } | undefined) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserById?: (userId: string) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } | null>; linkAccount?: (account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUser?: (userId: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUserByEmail?: (email: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>>, context?: GenericEndpointContext | undefined) => Promise<any>; updatePassword?: (userId: string, password: string, context?: GenericEndpointContext | undefined) => Promise<void>; findAccounts?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; findAccount?: (accountId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByProviderId?: (accountId: string, providerId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByUserId?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; updateAccount?: (id: string, data: Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; createVerificationValue?: (data: Omit<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>; findVerificationValue?: (identifier: string) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; } | null>; deleteVerificationValue?: (id: string) => Promise<void>; deleteVerificationByIdentifier?: (identifier: string) => Promise<void>; updateVerificationValue?: (id: string, data: Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<any>; }; createAuthCookie?: (cookieName: string, overrideAttributes?: Partial<CookieOptions> | undefined) => { name: string; attributes: CookieOptions; }; sessionConfig?: { updateAge?: number; expiresIn?: number; freshAge?: number; }; generateId?: (options: { model: LiteralUnion<Models, string>; size?: number; }) => string; tables?: { [x: string]: { modelName?: string; fields?: { [x: string]: { type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]" | ("" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; } | undefined)[]; required?: boolean; returned?: boolean; input?: boolean; defaultValue?: string | number | boolean | { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; } | (string | undefined)[] | (() => Primitive) | (number | undefined)[] | null | undefined; transform?: { input?: (value: Primitive) => Primitive | Promise<Primitive>; output?: (value: Primitive) => Primitive | Promise<Primitive>; }; references?: { model?: string; field?: string; onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default"; }; unique?: boolean; bigint?: boolean; validator?: { input?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; output?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; }; fieldName?: string; sortable?: boolean; } | undefined; }; disableMigrations?: boolean; order?: number; } | undefined; }; runMigrations?: () => Promise<void>; }; options?: Partial<BetterAuthOptions>; }'.
        The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types.
          Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<void>'.
            Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<void>'.
<!-- gh-comment-id:3113816949 --> @aniravi24 commented on GitHub (Jul 24, 2025): I see a simliar error, likely caused by `exactOptionalPropertyTypes` which I would like to keep enabled. Here's the complete error with `noErrorTruncation` set to true. ``` Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined; }; }; }; endpoints: { createVerificationOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; type: "sign-in" | "forget-password" | "email-verification"; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: string; } : string>; options: { method: "POST"; body: ZodObject<{ email: ZodString; type: ZodEnum<{ "sign-in": "sign-in"; "forget-password": "forget-password"; "email-verification": "email-verification"; }>; }, $strip>; metadata: { SERVER_ONLY: true; openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "string"; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/create-verification-otp"; }; getVerificationOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body?: undefined; } & { method?: "GET" | undefined; } & { query: { email: string; type: "sign-in" | "forget-password" | "email-verification"; }; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { otp: null; } | { otp: string; }; } : { otp: null; } | { otp: string; }>; options: { method: "GET"; query: ZodObject<{ email: ZodString; type: ZodEnum<{ "sign-in": "sign-in"; "forget-password": "forget-password"; "email-verification": "email-verification"; }>; }, $strip>; metadata: { SERVER_ONLY: true; openapi: { description: string; responses: { "200": { description: string; content: { "application/json": { schema: { type: "object"; properties: { otp: { type: string; nullable: boolean; description: string; }; }; required: string[]; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/get-verification-otp"; }; verifyEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; otp: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { status: boolean; token: string; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; } | { status: boolean; token: null; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; }; } : { status: boolean; token: string; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; } | { status: boolean; token: null; user: { id: any; email: any; emailVerified: any; name: any; image: any; createdAt: any; updatedAt: any; }; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; otp: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { status: { type: string; description: string; enum: boolean[]; }; token: { type: string; nullable: boolean; description: string; }; user: { $ref: string; }; required: string[]; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/verify-email"; }; signInEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; otp: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { token: string; user: { id: string; email: string; emailVerified: boolean; name: string; image: string | null | undefined; createdAt: Date; updatedAt: Date; }; }; } : { token: string; user: { id: string; email: string; emailVerified: boolean; name: string; image: string | null | undefined; createdAt: Date; updatedAt: Date; }; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; otp: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { token: { type: string; description: string; }; user: { $ref: string; }; }; required: string[]; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/sign-in/email-otp"; }; forgetPasswordEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { success: boolean; }; } : { success: boolean; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { success: { type: string; description: string; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/forget-password/email-otp"; }; resetPasswordEmailOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; otp: string; password: string; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { success: boolean; }; } : { success: boolean; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; otp: ZodString; password: ZodString; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; contnt: { "application/json": { schema: { type: string; properties: { success: { type: string; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/reset-password"; }; sendVerificationOTP: { <AsResponse extends boolean = false, ReturnHeaders extends boolean = false>(inputCtx_0: { body: { email: string; type: "sign-in" | "forget-password" | "email-verification"; }; } & { method?: "POST" | undefined; } & { query?: Record<string, any> | undefined; } & { params?: Record<string, any>; } & { request?: Request; } & { headers?: HeadersInit; } & { asResponse?: boolean; returnHeaders?: boolean; use?: any[]; path?: string; } & { asResponse?: AsResponse | undefined; returnHeaders?: ReturnHeaders | undefined; }): Promise<[AsResponse] extends [true] ? Response : [ReturnHeaders] extends [true] ? { headers: Headers; response: { success: boolean; }; } : { success: boolean; }>; options: { method: "POST"; body: ZodObject<{ email: ZodString; type: ZodEnum<{ "sign-in": "sign-in"; "forget-password": "forget-password"; "email-verification": "email-verification"; }>; }, $strip>; metadata: { openapi: { description: string; responses: { 200: { description: string; content: { "application/json": { schema: { type: "object"; properties: { success: { type: string; }; }; }; }; }; }; }; }; }; } & { use: any[]; }; path: "/email-otp/send-verification-otp"; }; }; hooks: { after: { matcher(context: HookEndpointContext): boolean; handler: (inputContext: MiddlewareInputContext<MiddlewareOptions>) => Promise<void>; }[]; }; $ERROR_CODES: { readonly OTP_EXPIRED: "otp expired"; readonly INVALID_OTP: "Invalid OTP"; readonly INVALID_EMAIL: "Invalid email"; readonly USER_NOT_FOUND: "User not found"; readonly TOO_MANY_ATTEMPTS: "Too many attempts"; }; rateLimit: ({ pathMatcher(path: string): path is "/email-otp/send-verification-otp"; window: number; max: number; } | { pathMatcher(path: string): path is "/email-otp/verify-email"; window: number; max: number; } | { pathMatcher(path: string): path is "/sign-in/email-otp"; window: number; max: number; })[]; }' is not assignable to type 'BetterAuthPlugin'. The types returned by 'init(...)' are incompatible between these types. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<boolean>; }; adapter?: { id?: string; create?: <T extends Record<string, any>, R = T>(data: { model: string; data: Omit<T, "id">; select?: string[]; forceAllowId?: boolean; }) => Promise<R>; findOne?: <T>(data: { model: string; where: Where[]; select?: string[]; }) => Promise<T | null>; findMany?: <T>(data: { model: string; where?: Where[]; limit?: number; sortBy?: { field: string; direction: "asc" | "desc"; }; offset?: number; }) => Promise<T[]>; count?: (data: { model: string; where?: Where[]; }) => Promise<number>; update?: <T>(data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<T | null>; updateMany?: (data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<number>; delete?: <T>(data: { model: string; where: Where[]; }) => Promise<void>; deleteMany?: (data: { model: string; where: Where[]; }) => Promise<number>; createSchema?: (options: BetterAuthOptions, file?: string | undefined) => Promise<AdapterSchemaCreation>; options?: { [x: string]: any; }; }; session?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; appName?: string; baseURL?: string; secret?: string; secondaryStorage?: { get?: (key: string) => string | Promise<string | null> | null; set?: (key: string, value: string, ttl?: number | undefined) => void | Promise<string | void | null>; delete?: (key: string) => void | Promise<string | void | null>; } | undefined; socialProviders?: ({ id?: "" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; }; createAuthorizationURL?: (data: { state: string; codeVerifier: string; scopes?: string[]; redirectURI: string; display?: string; loginHint?: string; }) => URL | Promise<URL>; name?: string; validateAuthorizationCode?: (data: { code: string; redirectURI: string; codeVerifier?: string; deviceId?: string; }) => Promise<OAuth2Tokens>; getUserInfo?: (token: OAuth2Tokens & { user?: { name?: { firstName?: string; lastName?: string; }; email?: string; }; }) => Promise<{ user: { id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: Record<string, any>; } | null>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; revokeToken?: (token: string) => Promise<void>; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; options?: { clientId?: string; clientSecret?: string; scope?: (string | undefined)[]; disableDefaultScope?: boolean; redirectURI?: string; clientKey?: string; disableIdTokenSignIn?: boolean; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; getUserInfo?: (token: OAuth2Tokens) => Promise<{ user: { [key: string]: any; id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: any; }>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; mapProfileToUser?: (profile: any) => { [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; } | Promise<{ [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; }>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; prompt?: "select_account" | "consent" | "login" | "none" | "select_account+consent"; responseMode?: "query" | "form_post"; overrideUserInfoOnSignIn?: boolean; }; } | undefined)[]; trustedOrigins?: (string | undefined)[]; rateLimit?: { enabled?: boolean; window?: number; max?: number; storage?: "database" | "memory" | "secondary-storage"; customRules?: { [x: string]: ((request: Request) => { window: number; max: number; } | Promise<{ window: number; max: number; }>) | { window?: number; max?: number; } | undefined; }; modelName?: string; fields?: { count?: string; key?: string; lastRequest?: string; }; customStorage?: { get?: (key: string) => Promise<RateLimit | undefined>; set?: (key: string, value: RateLimit) => Promise<void>; }; }; logger?: { error?: (message: string, ...args: any[]) => void; warn?: (message: string, ...args: any[]) => void; info?: (message: string, ...args: any[]) => void; debug?: (message: string, ...args: any[]) => void; success?: (message: string, ...args: any[]) => void; }; newSession?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; setNewSession?: (session: { session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null) => void; authCookies?: { sessionToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; sessionData?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; dontRememberToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; }; internalAdapter?: { createOAuthUser?: (user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>, account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "userId" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<{ user: any; account: any; }>; createUser?: <T>(user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt" | "emailVerified"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>; createAccount?: <T>(account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>; listSessions?: (userId: string) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }[]>; listUsers?: (limit?: number | undefined, offset?: number | undefined, sortBy?: { field: string; direction: "asc" | "desc"; } | undefined, where?: Where[] | undefined) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }[]>; countTotalUsers?: (where?: Where[] | undefined) => Promise<number>; deleteUser?: (userId: string) => Promise<void>; createSession?: (userId: string, ctx: GenericEndpointContext, dontRememberMe?: boolean | undefined, override?: (Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>) | undefined, overrideAll?: boolean | undefined) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }>; findSession?: (token: string) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null>; findSessions?: (sessionTokens: string[]) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; }[]>; updateSession?: (sessionToken: string, session: Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; deleteSession?: (token: string) => Promise<void>; deleteAccounts?: (userId: string) => Promise<void>; deleteAccount?: (accountId: string) => Promise<void>; deleteSessions?: (userIdOrSessionTokens: string | string[]) => Promise<void>; findOAuthUser?: (email: string, accountId: string, providerId: string) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserByEmail?: (email: string, options?: { includeAccounts: boolean; } | undefined) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserById?: (userId: string) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } | null>; linkAccount?: (account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUser?: (userId: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUserByEmail?: (email: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>>, context?: GenericEndpointContext | undefined) => Promise<any>; updatePassword?: (userId: string, password: string, context?: GenericEndpointContext | undefined) => Promise<void>; findAccounts?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; findAccount?: (accountId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByProviderId?: (accountId: string, providerId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByUserId?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; updateAccount?: (id: string, data: Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; createVerificationValue?: (data: Omit<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>; findVerificationValue?: (identifier: string) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; } | null>; deleteVerificationValue?: (id: string) => Promise<void>; deleteVerificationByIdentifier?: (identifier: string) => Promise<void>; updateVerificationValue?: (id: string, data: Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<any>; }; createAuthCookie?: (cookieName: string, overrideAttributes?: Partial<CookieOptions> | undefined) => { name: string; attributes: CookieOptions; }; sessionConfig?: { updateAge?: number; expiresIn?: number; freshAge?: number; }; generateId?: (options: { model: LiteralUnion<Models, string>; size?: number; }) => string; tables?: { [x: string]: { modelName?: string; fields?: { [x: string]: { type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]" | ("" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; } | undefined)[]; required?: boolean; returned?: boolean; input?: boolean; defaultValue?: string | number | boolean | { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; } | (string | undefined)[] | (() => Primitive) | (number | undefined)[] | null | undefined; transform?: { input?: (value: Primitive) => Primitive | Promise<Primitive>; output?: (value: Primitive) => Primitive | Promise<Primitive>; }; references?: { model?: string; field?: string; onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default"; }; unique?: boolean; bigint?: boolean; validator?: { input?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; output?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; }; fieldName?: string; sortable?: boolean; } | undefined; }; disableMigrations?: boolean; order?: number; } | undefined; }; runMigrations?: () => Promise<void>; }; options?: Partial<BetterAuthOptions>; }'. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<boolean>; }; adapter?: { id?: string; create?: <T extends Record<string, any>, R = T>(data: { model: string; data: Omit<T, "id">; select?: string[]; forceAllowId?: boolean; }) => Promise<R>; findOne?: <T>(data: { model: string; where: Where[]; select?: string[]; }) => Promise<T | null>; findMany?: <T>(data: { model: string; where?: Where[]; limit?: number; sortBy?: { field: string; direction: "asc" | "desc"; }; offset?: number; }) => Promise<T[]>; count?: (data: { model: string; where?: Where[]; }) => Promise<number>; update?: <T>(data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<T | null>; updateMany?: (data: { model: string; where: Where[]; update: Record<string, any>; }) => Promise<number>; delete?: <T>(data: { model: string; where: Where[]; }) => Promise<void>; deleteMany?: (data: { model: string; where: Where[]; }) => Promise<number>; createSchema?: (options: BetterAuthOptions, file?: string | undefined) => Promise<AdapterSchemaCreation>; options?: { [x: string]: any; }; }; session?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; appName?: string; baseURL?: string; secret?: string; secondaryStorage?: { get?: (key: string) => string | Promise<string | null> | null; set?: (key: string, value: string, ttl?: number | undefined) => void | Promise<string | void | null>; delete?: (key: string) => void | Promise<string | void | null>; } | undefined; socialProviders?: ({ id?: "" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; }; createAuthorizationURL?: (data: { state: string; codeVerifier: string; scopes?: string[]; redirectURI: string; display?: string; loginHint?: string; }) => URL | Promise<URL>; name?: string; validateAuthorizationCode?: (data: { code: string; redirectURI: string; codeVerifier?: string; deviceId?: string; }) => Promise<OAuth2Tokens>; getUserInfo?: (token: OAuth2Tokens & { user?: { name?: { firstName?: string; lastName?: string; }; email?: string; }; }) => Promise<{ user: { id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: Record<string, any>; } | null>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; revokeToken?: (token: string) => Promise<void>; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; options?: { clientId?: string; clientSecret?: string; scope?: (string | undefined)[]; disableDefaultScope?: boolean; redirectURI?: string; clientKey?: string; disableIdTokenSignIn?: boolean; verifyIdToken?: (token: string, nonce?: string | undefined) => Promise<boolean>; getUserInfo?: (token: OAuth2Tokens) => Promise<{ user: { [key: string]: any; id: string; name?: string; email?: string | null; image?: string; emailVerified: boolean; }; data: any; }>; refreshAccessToken?: (refreshToken: string) => Promise<OAuth2Tokens>; mapProfileToUser?: (profile: any) => { [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; } | Promise<{ [key: string]: any; id?: string; name?: string; email?: string | null; image?: string; emailVerified?: boolean; }>; disableImplicitSignUp?: boolean; disableSignUp?: boolean; prompt?: "select_account" | "consent" | "login" | "none" | "select_account+consent"; responseMode?: "query" | "form_post"; overrideUserInfoOnSignIn?: boolean; }; } | undefined)[]; trustedOrigins?: (string | undefined)[]; rateLimit?: { enabled?: boolean; window?: number; max?: number; storage?: "database" | "memory" | "secondary-storage"; customRules?: { [x: string]: ((request: Request) => { window: number; max: number; } | Promise<{ window: number; max: number; }>) | { window?: number; max?: number; } | undefined; }; modelName?: string; fields?: { count?: string; key?: string; lastRequest?: string; }; customStorage?: { get?: (key: string) => Promise<RateLimit | undefined>; set?: (key: string, value: RateLimit) => Promise<void>; }; }; logger?: { error?: (message: string, ...args: any[]) => void; warn?: (message: string, ...args: any[]) => void; info?: (message: string, ...args: any[]) => void; debug?: (message: string, ...args: any[]) => void; success?: (message: string, ...args: any[]) => void; }; newSession?: { session?: { [x: string]: any; id?: string; userId?: string; expiresAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; token?: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user?: { [x: string]: any; id?: string; email?: string; emailVerified?: boolean; name?: string; createdAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; updatedAt?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; image?: string | null | undefined; }; } | null; setNewSession?: (session: { session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null) => void; authCookies?: { sessionToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; sessionData?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; dontRememberToken?: { name?: string; options?: { domain?: string; expires?: { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; }; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: "None" | "none" | "Strict" | "Lax" | "strict" | "lax"; partitioned?: boolean; prefix?: CookiePrefixOptions; }; }; }; internalAdapter?: { createOAuthUser?: (user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>, account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "userId" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<{ user: any; account: any; }>; createUser?: <T>(user: Omit<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }, "id" | "createdAt" | "updatedAt" | "emailVerified"> & Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }>; createAccount?: <T>(account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<T & { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>; listSessions?: (userId: string) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }[]>; listUsers?: (limit?: number | undefined, offset?: number | undefined, sortBy?: { field: string; direction: "asc" | "desc"; } | undefined, where?: Where[] | undefined) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }[]>; countTotalUsers?: (where?: Where[] | undefined) => Promise<number>; deleteUser?: (userId: string) => Promise<void>; createSession?: (userId: string, ctx: GenericEndpointContext, dontRememberMe?: boolean | undefined, override?: (Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>) | undefined, overrideAll?: boolean | undefined) => Promise<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }>; findSession?: (token: string) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; } & Record<string, any>; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>; } | null>; findSessions?: (sessionTokens: string[]) => Promise<{ session: { id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }; user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; }[]>; updateSession?: (sessionToken: string, session: Partial<{ id: string; userId: string; expiresAt: Date; createdAt: Date; updatedAt: Date; token: string; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; deleteSession?: (token: string) => Promise<void>; deleteAccounts?: (userId: string) => Promise<void>; deleteAccount?: (accountId: string) => Promise<void>; deleteSessions?: (userIdOrSessionTokens: string | string[]) => Promise<void>; findOAuthUser?: (email: string, accountId: string, providerId: string) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserByEmail?: (email: string, options?: { includeAccounts: boolean; } | undefined) => Promise<{ user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; accounts: { id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]; } | null>; findUserById?: (userId: string) => Promise<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } | null>; linkAccount?: (account: Omit<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUser?: (userId: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }> & Record<string, any>, context?: GenericEndpointContext | undefined) => Promise<any>; updateUserByEmail?: (email: string, data: Partial<{ id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; } & Record<string, any>>, context?: GenericEndpointContext | undefined) => Promise<any>; updatePassword?: (userId: string, password: string, context?: GenericEndpointContext | undefined) => Promise<void>; findAccounts?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; findAccount?: (accountId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByProviderId?: (accountId: string, providerId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; } | null>; findAccountByUserId?: (userId: string) => Promise<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }[]>; updateAccount?: (id: string, data: Partial<{ id: string; providerId: string; accountId: string; userId: string; createdAt: Date; updatedAt: Date; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: Date | null | undefined; refreshTokenExpiresAt?: Date | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; }>, context?: GenericEndpointContext | undefined) => Promise<any>; createVerificationValue?: (data: Omit<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }, "id" | "createdAt" | "updatedAt"> & Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>; findVerificationValue?: (identifier: string) => Promise<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; } | null>; deleteVerificationValue?: (id: string) => Promise<void>; deleteVerificationByIdentifier?: (identifier: string) => Promise<void>; updateVerificationValue?: (id: string, data: Partial<{ id: string; value: string; createdAt: Date; updatedAt: Date; expiresAt: Date; identifier: string; }>, context?: GenericEndpointContext | undefined) => Promise<any>; }; createAuthCookie?: (cookieName: string, overrideAttributes?: Partial<CookieOptions> | undefined) => { name: string; attributes: CookieOptions; }; sessionConfig?: { updateAge?: number; expiresIn?: number; freshAge?: number; }; generateId?: (options: { model: LiteralUnion<Models, string>; size?: number; }) => string; tables?: { [x: string]: { modelName?: string; fields?: { [x: string]: { type?: "string" | "number" | "boolean" | "date" | "string[]" | "number[]" | ("" | { readonly [x: number]: string | undefined; toString?: () => string; charAt?: (pos: number) => string; charCodeAt?: (index: number) => number; concat?: (...strings: string[]) => string; indexOf?: (searchString: string, position?: number | undefined) => number; lastIndexOf?: (searchString: string, position?: number | undefined) => number; localeCompare?: { (that: string): number; (that: string, locales?: string | string[] | undefined, options?: CollatorOptions | undefined): number; (that: string, locales?: LocalesArgument, options?: CollatorOptions | undefined): number; }; match?: { (regexp: string | RegExp): RegExpMatchArray | null; (matcher: { [Symbol.match](string: string): RegExpMatchArray | null; }): RegExpMatchArray | null; }; replace?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; (searchValue: { [Symbol.replace](string: string, replaceValue: string): string; }, replaceValue: string): string; (searchValue: { [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; }, replacer: (substring: string, ...args: any[]) => string): string; }; search?: { (regexp: string | RegExp): number; (searcher: { [Symbol.search](string: string): number; }): number; }; slice?: (start?: number | undefined, end?: number | undefined) => string; split?: { (separator: string | RegExp, limit?: number | undefined): string[]; (splitter: { [Symbol.split](string: string, limit?: number | undefined): string[]; }, limit?: number | undefined): string[]; }; substring?: (start: number, end?: number | undefined) => string; toLowerCase?: () => string; toLocaleLowerCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; toUpperCase?: () => string; toLocaleUpperCase?: { (locales?: string | string[] | undefined): string; (locales?: LocalesArgument): string; }; trim?: () => string; readonly length?: number; substr?: (from: number, length?: number | undefined) => string; valueOf?: () => string; codePointAt?: (pos: number) => number | undefined; includes?: (searchString: string, position?: number | undefined) => boolean; endsWith?: (searchString: string, endPosition?: number | undefined) => boolean; normalize?: { (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; (form?: string | undefined): string; }; repeat?: (count: number) => string; startsWith?: (searchString: string, position?: number | undefined) => boolean; anchor?: (name: string) => string; big?: () => string; blink?: () => string; bold?: () => string; fixed?: () => string; fontcolor?: (color: string) => string; fontsize?: { (size: number): string; (size: string): string; }; italics?: () => string; link?: (url: string) => string; small?: () => string; strike?: () => string; sub?: () => string; sup?: () => string; padStart?: (maxLength: number, fillString?: string | undefined) => string; padEnd?: (maxLength: number, fillString?: string | undefined) => string; trimEnd?: () => string; trimStart?: () => string; trimLeft?: () => string; trimRight?: () => string; matchAll?: (regexp: RegExp) => RegExpStringIterator<RegExpExecArray>; replaceAll?: { (searchValue: string | RegExp, replaceValue: string): string; (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; }; at?: (index: number) => string | undefined; isWellFormed?: () => boolean; toWellFormed?: () => string; [Symbol.iterator]?: () => StringIterator<string>; } | undefined)[]; required?: boolean; returned?: boolean; input?: boolean; defaultValue?: string | number | boolean | { toString?: () => string; toDateString?: () => string; toTimeString?: () => string; toLocaleString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleDateString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; toLocaleTimeString?: { (): string; (locales?: string | string[] | undefined, options?: DateTimeFormatOptions | undefined): string; (locales?: LocalesArgument, options?: DateTimeFormatOptions | undefined): string; }; valueOf?: () => number; getTime?: () => number; getFullYear?: () => number; getUTCFullYear?: () => number; getMonth?: () => number; getUTCMonth?: () => number; getDate?: () => number; getUTCDate?: () => number; getDay?: () => number; getUTCDay?: () => number; getHours?: () => number; getUTCHours?: () => number; getMinutes?: () => number; getUTCMinutes?: () => number; getSeconds?: () => number; getUTCSeconds?: () => number; getMilliseconds?: () => number; getUTCMilliseconds?: () => number; getTimezoneOffset?: () => number; setTime?: (time: number) => number; setMilliseconds?: (ms: number) => number; setUTCMilliseconds?: (ms: number) => number; setSeconds?: (sec: number, ms?: number | undefined) => number; setUTCSeconds?: (sec: number, ms?: number | undefined) => number; setMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setUTCMinutes?: (min: number, sec?: number | undefined, ms?: number | undefined) => number; setHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setUTCHours?: (hours: number, min?: number | undefined, sec?: number | undefined, ms?: number | undefined) => number; setDate?: (date: number) => number; setUTCDate?: (date: number) => number; setMonth?: (month: number, date?: number | undefined) => number; setUTCMonth?: (month: number, date?: number | undefined) => number; setFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; setUTCFullYear?: (year: number, month?: number | undefined, date?: number | undefined) => number; toUTCString?: () => string; toISOString?: () => string; toJSON?: (key?: any) => string; [Symbol.toPrimitive]?: { (hint: "default"): string; (hint: "string"): string; (hint: "number"): number; (hint: string): string | number; }; } | (string | undefined)[] | (() => Primitive) | (number | undefined)[] | null | undefined; transform?: { input?: (value: Primitive) => Primitive | Promise<Primitive>; output?: (value: Primitive) => Primitive | Promise<Primitive>; }; references?: { model?: string; field?: string; onDelete?: "no action" | "restrict" | "cascade" | "set null" | "set default"; }; unique?: boolean; bigint?: boolean; validator?: { input?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; output?: { def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; _def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: { check?: string; error?: $ZodErrorMap<never> | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; }; issc?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; _output?: unknown; _input?: unknown; check?: (...checks: (CheckFn<unknown> | $ZodCheck<unknown>)[]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; clone?: (def?: $ZodTypeDef | undefined, params?: { parent: boolean; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; register?: <R extends core.$ZodRegistry>(registry: R, ...meta: ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> extends R["_schema"] ? undefined extends R["_meta"] ? [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>?] : [$replace<R["_meta"], R["_schema"] & ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>] : ["Incompatible schema"]) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; brand?: <T extends PropertyKey = PropertyKey>(value?: T | undefined) => PropertyKey extends T ? ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>> : $ZodBranded<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; parse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => unknown; safeParse?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => ZodSafeParseResult<unknown>; parseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<unknown>; safeParseAsync?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; spa?: (data: unknown, params?: ParseContext<$ZodIssue> | undefined) => Promise<ZodSafeParseResult<unknown>>; refine?: (check: (arg: unknown) => unknown, params?: string | { params?: Record<string, any> | undefined; path?: PropertyKey[] | undefined; abort?: boolean | undefined; when?: ((payload: ParsePayload<unknown>) => boolean) | undefined; error?: string | $ZodErrorMap<NonNullable<$ZodIssue>> | undefined; message?: string | undefined; } | undefined) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; superRefine?: (refinement: (arg: unknown, ctx: RefinementCtx<unknown>) => void | Promise<void>) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; overwrite?: (fn: (x: unknown) => unknown) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; optional?: () => ZodOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nonoptional?: (params?: string | { error?: string | $ZodErrorMap<$ZodIssueInvalidType<unknown>> | undefined; message?: string | undefined; } | undefined) => ZodNonOptional<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullable?: () => ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; nullish?: () => ZodOptional<ZodNullable<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>>; default?: { (def: unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: () => unknown): ZodDefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; prefault?: { (def: () => unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: unknown): ZodPrefault<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; array?: () => ZodArray<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; or?: <T extends core.SomeType>(option: T) => ZodUnion<[ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T]>; and?: <T extends core.SomeType>(incoming: T) => ZodIntersection<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; transform?: <NewOut>(transform: (arg: unknown, ctx: RefinementCtx<unknown>) => NewOut | Promise<NewOut>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, ZodTransform<Awaited<NewOut>, unknown>>; catch?: { (def: unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; (def: (ctx: $ZodCatchCtx) => unknown): ZodCatch<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; }; pipe?: <T extends $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>>(target: T | $ZodType<any, unknown, $ZodTypeInternals<any, unknown>>) => ZodPipe<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>, T>; readonly?: () => ZodReadonly<ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>>; describe?: (description: string) => ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; description?: string; meta?: { (): { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; } | undefined; (data: { [x: string]: unknown; id?: string | undefined; title?: string | undefined; description?: string | undefined; deprecated?: boolean | undefined; }): ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; }; isOptional?: () => boolean; isNullable?: () => boolean; _zod?: { output?: unknown; input?: unknown; version?: { readonly major?: 4; readonly minor?: 0; readonly patch?: number; }; def?: { type?: "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "map" | "optional" | "default" | "date" | "set" | "success" | "transform" | "nonoptional" | "nullable" | "prefault" | "array" | "catch" | "pipe" | "readonly" | "int" | "null" | "void" | "never" | "any" | "unknown" | "record" | "file" | "tuple" | "union" | "intersection" | "enum" | "literal" | "nan" | "template_literal" | "promise" | "lazy" | "custom"; error?: $ZodErrorMap<never> | undefined; checks?: ({ _zod?: { def?: any; issc?: any; check?: (payload: ParsePayload<never>) => MaybeAsync<void>; onattach?: (((schema: $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>) => void) | undefined)[]; }; } | undefined)[]; }; deferred?: (AnyFunc | undefined)[] | undefined; run?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; parse?: (payload: ParsePayload<any>, ctx: ParseContextInternal<never>) => MaybeAsync<ParsePayload<unknown>>; traits?: { add?: (value: string) => Set<string>; clear?: () => void; delete?: (value: string) => boolean; forEach?: (callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any) => void; has?: (value: string) => boolean; readonly size?: number; entries?: () => SetIterator<[string, string]>; keys?: () => SetIterator<string>; values?: () => SetIterator<string>; union?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<string & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<string>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<string | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<string>; readonly [Symbol.toStringTag]?: string; }; optin?: "optional" | undefined; optout?: "optional" | undefined; values?: { add?: (value: Primitive) => PrimitiveSet; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; propValues?: { [x: string]: { add?: (value: Primitive) => Set<Primitive>; clear?: () => void; delete?: (value: Primitive) => boolean; forEach?: (callbackfn: (value: Primitive, value2: Primitive, set: Set<Primitive>) => void, thisArg?: any) => void; has?: (value: Primitive) => boolean; readonly size?: number; entries?: () => SetIterator<[Primitive, Primitive]>; keys?: () => SetIterator<Primitive>; values?: () => SetIterator<Primitive>; union?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; intersection?: <U>(other: ReadonlySetLike<U>) => Set<Primitive & U>; difference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive>; symmetricDifference?: <U>(other: ReadonlySetLike<U>) => Set<Primitive | U>; isSubsetOf?: (other: ReadonlySetLike<unknown>) => boolean; isSupersetOf?: (other: ReadonlySetLike<unknown>) => boolean; isDisjointFrom?: (other: ReadonlySetLike<unknown>) => boolean; [Symbol.iterator]?: () => SetIterator<Primitive>; readonly [Symbol.toStringTag]?: string; } | undefined; } | undefined; pattern?: { exec?: (string: string) => RegExpExecArray | null; test?: (string: string) => boolean; readonly source?: string; readonly global?: boolean; readonly ignoreCase?: boolean; readonly multiline?: boolean; lastIndex?: number; compile?: (pattern: string, flags?: string | undefined) => RegExp; readonly flags?: string; readonly sticky?: boolean; readonly unicode?: boolean; readonly dotAll?: boolean; readonly hasIndices?: boolean; readonly unicodeSets?: boolean; [Symbol.match]?: (string: string) => RegExpMatchArray | null; [Symbol.replace]?: { (string: string, replaceValue: string): string; (string: string, replacer: (substring: string, ...args: any[]) => string): string; }; [Symbol.search]?: (string: string) => number; [Symbol.split]?: (string: string, limit?: number | undefined) => string[]; [Symbol.matchAll]?: (str: string) => RegExpStringIterator<RegExpMatchArray>; } | undefined; constr?: new (def: any) => $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>; bag?: { [x: string]: unknown; }; isst?: { readonly code?: string; readonly input?: unknown; readonly path?: (PropertyKey | undefined)[]; readonly message?: string; }; toJSONSchema?: () => unknown; parent?: { _zod?: any; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; } | undefined; }; "~standard"?: { readonly version?: 1; readonly vendor?: string; readonly validate?: (value: unknown) => Result<unknown> | Promise<Result<unknown>>; readonly types?: { readonly input?: unknown; readonly output?: unknown; } | undefined; }; }; }; fieldName?: string; sortable?: boolean; } | undefined; }; disableMigrations?: boolean; order?: number; } | undefined; }; runMigrations?: () => Promise<void>; }; options?: Partial<BetterAuthOptions>; }'. The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types. Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<void>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<void>'. Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<void>'. ```
Author
Owner

@aniravi24 commented on GitHub (Jul 24, 2025):

@Bekacru in the generated typedefs, removing this undefined causes the type error to go away for me

Image
<!-- gh-comment-id:3113833269 --> @aniravi24 commented on GitHub (Jul 24, 2025): @Bekacru in the generated typedefs, removing this undefined causes the type error to go away for me <img width="1074" height="350" alt="Image" src="https://github.com/user-attachments/assets/68dca5c7-7948-4722-a660-42590cc70059" />
Author
Owner

@ping-maxwell commented on GitHub (Jul 24, 2025):

@rohovskoi try to disable declarations, declarationsMap & composite in your tsconfig

<!-- gh-comment-id:3114658184 --> @ping-maxwell commented on GitHub (Jul 24, 2025): @rohovskoi try to disable `declarations`, `declarationsMap` & `composite` in your tsconfig
Author
Owner

@aniravi24 commented on GitHub (Jul 24, 2025):

@rohovskoi try to disable declarations, declarationsMap & composite in your tsconfig

For whatever it's worth I see the same error and don't have any of those in my tsconfigs.

<!-- gh-comment-id:3114762746 --> @aniravi24 commented on GitHub (Jul 24, 2025): > [@rohovskoi](https://github.com/rohovskoi) try to disable `declarations`, `declarationsMap` & `composite` in your tsconfig For whatever it's worth I see the same error and don't have any of those in my tsconfigs.
Author
Owner

@rohovskoi commented on GitHub (Jul 24, 2025):

@rohovskoi try to disable declarations, declarationsMap & composite in your tsconfig

Didn't help. Still the same issue. @ping-maxwell @Bekacru

<!-- gh-comment-id:3114781127 --> @rohovskoi commented on GitHub (Jul 24, 2025): > @rohovskoi try to disable `declarations`, `declarationsMap` & `composite` in your tsconfig Didn't help. Still the same issue. @ping-maxwell @Bekacru
Author
Owner

@aniravi24 commented on GitHub (Jul 25, 2025):

I'm actually noticing this issue on other plugins as well; for example, the Better Auth Stripe plugin's schema.subscription has an undefined value that causes type errors.

<!-- gh-comment-id:3115816708 --> @aniravi24 commented on GitHub (Jul 25, 2025): I'm actually noticing this issue on other plugins as well; for example, the Better Auth Stripe plugin's `schema.subscription` has an undefined value that causes type errors.
Author
Owner

@ping-maxwell commented on GitHub (Jul 25, 2025):

This looks like a harder challenge to solve since it would requires us to also have exactOptionalPropertyTypes so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it.

We could go through our plugins and ensure that we add that | undefined option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work..

<!-- gh-comment-id:3119621695 --> @ping-maxwell commented on GitHub (Jul 25, 2025): This looks like a harder challenge to solve since it would requires us to also have `exactOptionalPropertyTypes` so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it. We could go through our plugins and ensure that we add that `| undefined` option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work..
Author
Owner

@aniravi24 commented on GitHub (Jul 25, 2025):

This looks like a harder challenge to solve since it would requires us to also have exactOptionalPropertyTypes so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it.

We could go through our plugins and ensure that we add that | undefined option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work..

Might be worth exploring what enabling exactOptionalPropertyTypes does to the better-auth codebase 😄

<!-- gh-comment-id:3119691548 --> @aniravi24 commented on GitHub (Jul 25, 2025): > This looks like a harder challenge to solve since it would requires us to also have `exactOptionalPropertyTypes` so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it. > > We could go through our plugins and ensure that we add that `| undefined` option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work.. Might be worth exploring what enabling `exactOptionalPropertyTypes` does to the better-auth codebase 😄
Author
Owner

@ping-maxwell commented on GitHub (Jul 25, 2025):

You're right, I'll do that. should had done so immediately.

Sorry that I messaged prematurely

<!-- gh-comment-id:3119796600 --> @ping-maxwell commented on GitHub (Jul 25, 2025): You're right, I'll do that. should had done so immediately. Sorry that I messaged prematurely
Author
Owner

@rohovskoi commented on GitHub (Jul 25, 2025):

This looks like a harder challenge to solve since it would requires us to also have exactOptionalPropertyTypes so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it.

We could go through our plugins and ensure that we add that | undefined option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work..

Thanks for your elaborate answer.

Why does it work on 1.2.12 then? There must have been a massive change that started causing it.

<!-- gh-comment-id:3119868838 --> @rohovskoi commented on GitHub (Jul 25, 2025): > This looks like a harder challenge to solve since it would requires us to also have `exactOptionalPropertyTypes` so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it. > > We could go through our plugins and ensure that we add that `| undefined` option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work.. Thanks for your elaborate answer. Why does it work on 1.2.12 then? There must have been a massive change that started causing it.
Author
Owner

@ping-maxwell commented on GitHub (Jul 25, 2025):

This looks like a harder challenge to solve since it would requires us to also have exactOptionalPropertyTypes so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it.
We could go through our plugins and ensure that we add that | undefined option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work..

Thanks for your elaborate answer.

Why does it work on 1.2.12 then? There must have been a massive change that started causing it.

Oh that's certainly interesting..
I'm trying to think of major changes possibly across how plugins would be defined, and one of them was the upgrade to zod4, but not sure if that would be the cause of it

<!-- gh-comment-id:3120005968 --> @ping-maxwell commented on GitHub (Jul 25, 2025): > > This looks like a harder challenge to solve since it would requires us to also have `exactOptionalPropertyTypes` so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it. > > We could go through our plugins and ensure that we add that `| undefined` option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work.. > > Thanks for your elaborate answer. > > Why does it work on 1.2.12 then? There must have been a massive change that started causing it. Oh that's certainly interesting.. I'm trying to think of major changes possibly across how plugins would be defined, and one of them was the upgrade to zod4, but not sure if that would be the cause of it
Author
Owner

@rohovskoi commented on GitHub (Jul 25, 2025):

This looks like a harder challenge to solve since it would requires us to also have exactOptionalPropertyTypes so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it.
We could go through our plugins and ensure that we add that | undefined option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work..

Thanks for your elaborate answer.

Why does it work on 1.2.12 then? There must have been a massive change that started causing it.

Oh that's certainly interesting..
I'm trying to think of major changes possibly across how plugins would be defined, and one of them was the upgrade to zod4, but not sure if that would be the cause of it

@ping-maxwell

I also had the following issue related to zodv4 on 1.3.3, but not on 1.2.12:

The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed. (ts 7056)
The inferred type of 'BetterAuthClient' cannot be named without a reference to '.pnpm/zod@4.0.5/node_modules/zod/v4/core/schemas.js'. This is likely not portable. A type annotation is necessary. (ts 2742)

However, then i turned preserve, declaration and declarationsMap off and the error disappeared.

<!-- gh-comment-id:3120279379 --> @rohovskoi commented on GitHub (Jul 25, 2025): > > > This looks like a harder challenge to solve since it would requires us to also have `exactOptionalPropertyTypes` so we would have to go through the entire codebase and make it suit the needs of this. An easier path out would probably be to just ts-ignore it. > > > We could go through our plugins and ensure that we add that `| undefined` option just to suit this, but I'm unsure if that's the only case necessary to solve this entire issue at hand, not to mention to enforce this idea in the future with other contributors could be additional work.. > > > > Thanks for your elaborate answer. > > > > Why does it work on 1.2.12 then? There must have been a massive change that started causing it. > > Oh that's certainly interesting.. > I'm trying to think of major changes possibly across how plugins would be defined, and one of them was the upgrade to zod4, but not sure if that would be the cause of it @ping-maxwell I also had the following issue related to zodv4 on 1.3.3, but not on 1.2.12: ``` The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed. (ts 7056) The inferred type of 'BetterAuthClient' cannot be named without a reference to '.pnpm/zod@4.0.5/node_modules/zod/v4/core/schemas.js'. This is likely not portable. A type annotation is necessary. (ts 2742) ``` However, then i turned preserve, declaration and declarationsMap off and the error disappeared.
Author
Owner

@Kinfe123 commented on GitHub (Jul 26, 2025):

if you are using a monorepo or a shared package that includes Zod schemas, ensure that both the consuming application and the shared package use the exact same version of Zod. Even minor version differences can lead to runtime issues. Locking the version using pnpm’s version resolution can help. this could solve your zod issue.

<!-- gh-comment-id:3120732965 --> @Kinfe123 commented on GitHub (Jul 26, 2025): if you are using a monorepo or a shared package that includes Zod schemas, ensure that both the consuming application and the shared package use the exact same version of Zod. Even minor version differences can lead to runtime issues. Locking the version using pnpm’s version resolution can help. this could solve your zod issue.
Author
Owner

@rohovskoi commented on GitHub (Jul 26, 2025):

if you are using a monorepo or a shared package that includes Zod schemas, ensure that both the consuming application and the shared package use the exact same version of Zod. Even minor version differences can lead to runtime issues. Locking the version using pnpm’s version resolution can help. this could solve your zod issue.

@Kinfe123 @ping-maxwell @Bekacru have a pnpm monorepo with nx and I don't use zod anywhere in either of my workspaces/packages, actually...
It may be a peer dependency. Pnpm doesn't show any warnings on install tho..

My main concern is not this zod issue atm. It's the plugin that was working fine before I upgraded to 1.3.3

<!-- gh-comment-id:3120774251 --> @rohovskoi commented on GitHub (Jul 26, 2025): > if you are using a monorepo or a shared package that includes Zod schemas, ensure that both the consuming application and the shared package use the exact same version of Zod. Even minor version differences can lead to runtime issues. Locking the version using pnpm’s version resolution can help. this could solve your zod issue. @Kinfe123 @ping-maxwell @Bekacru have a pnpm monorepo with nx and I don't use **zod** anywhere in either of my workspaces/packages, actually... It may be a peer dependency. Pnpm doesn't show any warnings on install tho.. My main concern is not this zod issue atm. It's the plugin that was working fine before I upgraded to 1.3.3
Author
Owner

@rohovskoi commented on GitHub (Jul 27, 2025):

@Bekacru @Kinfe123 @ping-maxwell

Hey y'all.

I hate asking this, as I know you already work hard on other issues, but is this bug tricky and could take a longer time to fix? Should I stay on 1.2.12 for some time?

<!-- gh-comment-id:3124772519 --> @rohovskoi commented on GitHub (Jul 27, 2025): @Bekacru @Kinfe123 @ping-maxwell Hey y'all. I hate asking this, as I know you already work hard on other issues, but is this bug tricky and could take a longer time to fix? Should I stay on 1.2.12 for some time?
Author
Owner

@Bekacru commented on GitHub (Jul 27, 2025):

Sorry for the late reply. Based on your config, it seems the issue is with module resolution. Try using bundler instead of node. Alos, enabling declaration: true often causes problems - we’re working on finding an optimal solution to reduce the type complexity in the current codebase. Until then, I’d recommend avoiding it (though there are some workarounds).

<!-- gh-comment-id:3124804478 --> @Bekacru commented on GitHub (Jul 27, 2025): Sorry for the late reply. Based on your config, it seems the issue is with module resolution. Try using `bundler` instead of `node`. Alos, enabling `declaration: true` often causes problems - we’re working on finding an optimal solution to reduce the type complexity in the current codebase. Until then, I’d recommend avoiding it (though there are some workarounds).
Author
Owner

@rohovskoi commented on GitHub (Jul 28, 2025):

@Bekacru @Kinfe123 @ping-maxwell

I changed my tsconfig to:

"declaration": false,
"declarationMap": false,
"composite": false,
"module": "Preserve",
 "moduleResolution": "Bundler"

It didn't help. The issue with emailOTP persists.

Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | ... 1 more ... | undefined; }; url: string; token: string; }, request: Request | u...' is not assignable to type 'BetterAuthPlugin'.
The types returned by 'init(...)' are incompatible between these types.
Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ....'.
Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ...; run...'.
The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types.
Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'.
Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. (ts 2322)
<!-- gh-comment-id:3125854800 --> @rohovskoi commented on GitHub (Jul 28, 2025): @Bekacru @Kinfe123 @ping-maxwell I changed my tsconfig to: ```json "declaration": false, "declarationMap": false, "composite": false, "module": "Preserve", "moduleResolution": "Bundler" ``` It didn't help. The issue with emailOTP persists. ``` Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | ... 1 more ... | undefined; }; url: string; token: string; }, request: Request | u...' is not assignable to type 'BetterAuthPlugin'. The types returned by 'init(...)' are incompatible between these types. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ....'. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 18 more ...; run...'. The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types. Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. (ts 2322) ```
Author
Owner

@rohovskoi commented on GitHub (Jul 28, 2025):

@Kinfe123 @ping-maxwell @Bekacru

As @aniravi24 mentioned, removing this undefined in the generated typedefs, fixes the issue for me as well.

Image

This could be the fix. Alternatively, I guess smth is wrong with overrideDefaultEmailVerification

- async sendVerificationEmail(data, request) {  
+ async sendVerificationEmail(data, request?) {

How much load would it be to get it fixed ?

<!-- gh-comment-id:3129877043 --> @rohovskoi commented on GitHub (Jul 28, 2025): @Kinfe123 @ping-maxwell @Bekacru As @aniravi24 mentioned, removing this undefined in the generated typedefs, fixes the issue for me as well. <img width="1074" height="350" alt="Image" src="https://github.com/user-attachments/assets/0f4ddec4-9fec-4328-85b2-d7c0bdb46fe7" /> This could be the fix. Alternatively, I guess smth is wrong with overrideDefaultEmailVerification ```ts - async sendVerificationEmail(data, request) { + async sendVerificationEmail(data, request?) { ``` How much load would it be to get it fixed ?
Author
Owner

@natejms commented on GitHub (Jul 29, 2025):

@Kinfe123 @ping-maxwell @Bekacru

As @aniravi24 mentioned, removing this undefined in the generated typedefs, fixes the issue for me as well.

Image This could be the fix. Alternatively, I guess smth is wrong with overrideDefaultEmailVerification
  • async sendVerificationEmail(data, request) {
  • async sendVerificationEmail(data, request?) {
    How much load would it be to get it fixed ?

Yeah I noticed this as well, I get the same issues on emailOTP() as well as organization() plugins. The type error might be Zod related but this has only started occurring after I upgraded from 1.2.12.

Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<...>; createdAt...' is not assignable to type 'BetterAuthPlugin'.
  The types returned by 'init(...)' are incompatible between these types.
    Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.Zod...' is not assignable to type 'void | { context?: { session?: { session?: any; user?: any; } | null; password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { ...; }; checkPassword?: (userId: string, c: any) => Promise<...>; }; ... 17 more ...; runMigrations?: (...'.
      Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.Zod...' is not assignable to type '{ context?: { session?: { session?: any; user?: any; } | null; password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { ...; }; checkPassword?: (userId: string, c: any) => Promise<...>; }; ... 17 more ...; runMigrations?: () => Pr...'.
        The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types.
          Type '((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.ZodDate>; updatedAt: z.ZodDefault<z.ZodDate>; }, z.core.$stri...' is not assignable to type '(data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.ZodDate>; updatedAt: z.ZodDefault<z.ZodDate>; }, z.core.$strip...'.
            Type 'undefined' is not assignable to type '(data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.ZodDate>; updatedAt: z.ZodDefault<z.ZodDate>; }, z.core.$strip...'.
<!-- gh-comment-id:3134276474 --> @natejms commented on GitHub (Jul 29, 2025): > [@Kinfe123](https://github.com/Kinfe123) [@ping-maxwell](https://github.com/ping-maxwell) [@Bekacru](https://github.com/Bekacru) > > As [@aniravi24](https://github.com/aniravi24) mentioned, removing this undefined in the generated typedefs, fixes the issue for me as well. > > <img alt="Image" width="1074" height="350" src="https://private-user-images.githubusercontent.com/49726741/471708287-0f4ddec4-9fec-4328-85b2-d7c0bdb46fe7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTM4MjkwNzYsIm5iZiI6MTc1MzgyODc3NiwicGF0aCI6Ii80OTcyNjc0MS80NzE3MDgyODctMGY0ZGRlYzQtOWZlYy00MzI4LTg1YjItZDdjMGJkYjQ2ZmU3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA3MjklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwNzI5VDIyMzkzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhYmZlMjhhMmNlZTIzMmI3ODEzMjRkNDkyMWI0ODc4NjU2NGRmYWNkMjI0NmU0OTA2ZjBjNDM3OGRmZmI5NzMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.FvysPJCqtC_R_5Bg4BQ35uZeq44s8YolNtjF791an60"> > This could be the fix. Alternatively, I guess smth is wrong with overrideDefaultEmailVerification > > - async sendVerificationEmail(data, request) { > + async sendVerificationEmail(data, request?) { > How much load would it be to get it fixed ? Yeah I noticed this as well, I get the same issues on `emailOTP()` as well as `organization()` plugins. The type error might be Zod related but this has only started occurring after I upgraded from 1.2.12. ``` Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<...>; createdAt...' is not assignable to type 'BetterAuthPlugin'. The types returned by 'init(...)' are incompatible between these types. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.Zod...' is not assignable to type 'void | { context?: { session?: { session?: any; user?: any; } | null; password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { ...; }; checkPassword?: (userId: string, c: any) => Promise<...>; }; ... 17 more ...; runMigrations?: (...'. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.Zod...' is not assignable to type '{ context?: { session?: { session?: any; user?: any; } | null; password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { ...; }; checkPassword?: (userId: string, c: any) => Promise<...>; }; ... 17 more ...; runMigrations?: () => Pr...'. The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types. Type '((data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.ZodDate>; updatedAt: z.ZodDefault<z.ZodDate>; }, z.core.$stri...' is not assignable to type '(data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.ZodDate>; updatedAt: z.ZodDefault<z.ZodDate>; }, z.core.$strip...'. Type 'undefined' is not assignable to type '(data: { user: z.infer<z.ZodObject<{ id: z.ZodString; email: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>; emailVerified: z.ZodDefault<z.ZodBoolean>; name: z.ZodString; image: z.ZodOptional<z.ZodNullable<z.ZodString>>; createdAt: z.ZodDefault<z.ZodDate>; updatedAt: z.ZodDefault<z.ZodDate>; }, z.core.$strip...'. ```
Author
Owner

@TimFL commented on GitHub (Jul 30, 2025):

Encountering the same issue here, having zod@4.0.10 installed seems to fix the issue for me (error only popped up after a few zod upgrades, that version specifically was the last one that worked for me).

<!-- gh-comment-id:3135115238 --> @TimFL commented on GitHub (Jul 30, 2025): Encountering the same issue here, having zod@4.0.10 installed seems to fix the issue for me (error only popped up after a few zod upgrades, that version specifically was the last one that worked for me).
Author
Owner

@rohovskoi commented on GitHub (Jul 30, 2025):

Encountering the same issue here, having zod@4.0.10 installed seems to fix the issue for me (error only popped up after a few zod upgrades, that version specifically was the last one that worked for me).

@TimFL Do you have exactOptionalPropertyTypes enabled?

<!-- gh-comment-id:3137227468 --> @rohovskoi commented on GitHub (Jul 30, 2025): > Encountering the same issue here, having zod@4.0.10 installed seems to fix the issue for me (error only popped up after a few zod upgrades, that version specifically was the last one that worked for me). @TimFL Do you have `exactOptionalPropertyTypes` enabled?
Author
Owner

@TimFL commented on GitHub (Jul 30, 2025):

Encountering the same issue here, having zod@4.0.10 installed seems to fix the issue for me (error only popped up after a few zod upgrades, that version specifically was the last one that worked for me).

@TimFL Do you have exactOptionalPropertyTypes enabled?

I do not.

<!-- gh-comment-id:3137289196 --> @TimFL commented on GitHub (Jul 30, 2025): > > Encountering the same issue here, having zod@4.0.10 installed seems to fix the issue for me (error only popped up after a few zod upgrades, that version specifically was the last one that worked for me). > > @TimFL Do you have `exactOptionalPropertyTypes` enabled? I do not.
Author
Owner

@rohovskoi commented on GitHub (Jul 31, 2025):

@Bekacru @ping-maxwell @Kinfe123 Hey 👋🏻 Are there any updates? Have you been able to reproduce the bug?

<!-- gh-comment-id:3140927839 --> @rohovskoi commented on GitHub (Jul 31, 2025): @Bekacru @ping-maxwell @Kinfe123 Hey 👋🏻 Are there any updates? Have you been able to reproduce the bug?
Author
Owner

@Kinfe123 commented on GitHub (Aug 8, 2025):

please if you could give us that would be appriciated.

<!-- gh-comment-id:3169186951 --> @Kinfe123 commented on GitHub (Aug 8, 2025): please if you could give us that would be appriciated.
Author
Owner

@rohovskoi commented on GitHub (Aug 10, 2025):

please if you could give us that would be appriciated.

Give what exactly?

<!-- gh-comment-id:3172558497 --> @rohovskoi commented on GitHub (Aug 10, 2025): > please if you could give us that would be appriciated. > Give what exactly?
Author
Owner

@rohovskoi commented on GitHub (Aug 11, 2025):

please if you could give us that would be appriciated.

Hey @Bekacru @ping-maxwell @Kinfe123, congrats on 1.3.5!

This version however didn't solve the exactOptionalPropertyTypes issue (as mentioned in the release notes). I upgraded to 1.3.5 and got the same error. Then removed exactOptionalPropertyTypes from my tsconfig and the error disappeared.

<!-- gh-comment-id:3176054811 --> @rohovskoi commented on GitHub (Aug 11, 2025): > please if you could give us that would be appriciated. > Hey @Bekacru @ping-maxwell @Kinfe123, congrats on 1.3.5! This version however didn't solve the exactOptionalPropertyTypes issue (as mentioned in the release notes). I upgraded to 1.3.5 and got the same error. Then removed exactOptionalPropertyTypes from my tsconfig and the error disappeared.
Author
Owner

@humemm commented on GitHub (Aug 11, 2025):

Same issue with organization plugin.

<!-- gh-comment-id:3176668263 --> @humemm commented on GitHub (Aug 11, 2025): Same issue with organization plugin.
Author
Owner

@Kinfe123 commented on GitHub (Aug 12, 2025):

Can you trying installing this and see if this fixes your issue:

npm i https://pkg.pr.new/better-auth/better-auth@3941
<!-- gh-comment-id:3180252674 --> @Kinfe123 commented on GitHub (Aug 12, 2025): Can you trying installing this and see if this fixes your issue: ``` npm i https://pkg.pr.new/better-auth/better-auth@3941 ```
Author
Owner

@rohovskoi commented on GitHub (Aug 12, 2025):

@Kinfe123 installed. It didn't fix it for me..

Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | ... 1 more ... | undefined; }; url: string; token: string; }, request: Request | u...' is not assignable to type 'BetterAuthPlugin'.
The types returned by 'init(...)' are incompatible between these types.
Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 19 more ....'.
Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 19 more ...; pub...'.
The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types.
Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'.
Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. (ts 2322)
<!-- gh-comment-id:3180735668 --> @rohovskoi commented on GitHub (Aug 12, 2025): @Kinfe123 installed. It didn't fix it for me.. ``` Type '{ id: "email-otp"; init(ctx: AuthContext): { options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | ... 1 more ... | undefined; }; url: string; token: string; }, request: Request | u...' is not assignable to type 'BetterAuthPlugin'. The types returned by 'init(...)' are incompatible between these types. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type 'void | { context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 19 more ....'. Type '{ options: { emailVerification: { sendVerificationEmail?: ((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined; }; }; }' is not assignable to type '{ context?: { password?: { hash?: (password: string) => Promise<string>; verify?: (data: { password: string; hash: string; }) => Promise<boolean>; config?: { minPasswordLength?: number; maxPasswordLength?: number; }; checkPassword?: (userId: string, c: GenericEndpointContext) => Promise<...>; }; ... 19 more ...; pub...'. The types of 'options.emailVerification.sendVerificationEmail' are incompatible between these types. Type '((data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request: Request | undefined) => Promise<...>) | undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. Type 'undefined' is not assignable to type '(data: { user: { id: string; email: string; emailVerified: boolean; name: string; createdAt: Date; updatedAt: Date; image?: string | null | undefined; }; url: string; token: string; }, request?: Request | undefined) => Promise<...>'. (ts 2322) ```
Author
Owner

@Kinfe123 commented on GitHub (Aug 12, 2025):

the fix is for those having an issue with organization plugin @humemm

<!-- gh-comment-id:3181016128 --> @Kinfe123 commented on GitHub (Aug 12, 2025): the fix is for those having an issue with organization plugin @humemm
Author
Owner

@Kinfe123 commented on GitHub (Aug 12, 2025):

@rohovskoi will look into right after this.

<!-- gh-comment-id:3181017284 --> @Kinfe123 commented on GitHub (Aug 12, 2025): @rohovskoi will look into right after this.
Author
Owner

@Kinfe123 commented on GitHub (Aug 12, 2025):

@rohovskoi can you try installing this and check if the issue exists

npm i https://pkg.pr.new/better-auth/better-auth@3961
<!-- gh-comment-id:3181519751 --> @Kinfe123 commented on GitHub (Aug 12, 2025): @rohovskoi can you try installing this and check if the issue exists ``` npm i https://pkg.pr.new/better-auth/better-auth@3961 ```
Author
Owner

@amosbastian commented on GitHub (Aug 13, 2025):

npm i https://pkg.pr.new/better-auth/better-auth@3941

It fixed it for me, but the Stripe plugin is still broken:

Types of property 'lang_id' are incompatible.
Type 'LANG.RUS' is not assignable to type 'LANG | undefined'.
<!-- gh-comment-id:3182688153 --> @amosbastian commented on GitHub (Aug 13, 2025): > ``` > npm i https://pkg.pr.new/better-auth/better-auth@3941 > ``` It fixed it for me, but the Stripe plugin is still broken: ``` Types of property 'lang_id' are incompatible. Type 'LANG.RUS' is not assignable to type 'LANG | undefined'. ```
Author
Owner

@rohovskoi commented on GitHub (Aug 13, 2025):

@Kinfe123, this fixed the issue! Thank you!

npm i https://pkg.pr.new/better-auth/better-auth@3961

<!-- gh-comment-id:3182884906 --> @rohovskoi commented on GitHub (Aug 13, 2025): @Kinfe123, this fixed the issue! Thank you! `npm i https://pkg.pr.new/better-auth/better-auth@3961`
Author
Owner

@Kinfe123 commented on GitHub (Aug 13, 2025):

@amosbastian This thread is getting long and messy. Since the original author’s issue has been resolved, please create a new issue that includes all your configuration and setup details. Closing this now.

<!-- gh-comment-id:3183095496 --> @Kinfe123 commented on GitHub (Aug 13, 2025): @amosbastian This thread is getting long and messy. Since the original author’s issue has been resolved, please create a new issue that includes all your configuration and setup details. Closing this now.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/better-auth#26973