UNPKG

@convex-dev/better-auth

Version:
711 lines 42.5 kB
import { type Auth as ConvexAuth, type DefaultFunctionArgs, type Expand, type FunctionReference, GenericActionCtx, type GenericDataModel, GenericMutationCtx, type GenericQueryCtx, type HttpRouter } from "convex/server"; import { type GenericId, Infer } from "convex/values"; import type { api } from "../component/_generated/api"; import schema from "../component/schema"; import { convexAdapter } from "./adapter"; import { betterAuth } from "better-auth"; import { adapterArgsValidator } from "../component/lib"; export { convexAdapter }; declare const createUserValidator: import("convex/values").VObject<{ image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; }, { name: import("convex/values").VString<string, "required">; email: import("convex/values").VString<string, "required">; emailVerified: import("convex/values").VBoolean<boolean, "required">; image: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; createdAt: import("convex/values").VFloat64<number, "required">; updatedAt: import("convex/values").VFloat64<number, "required">; twoFactorEnabled: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; isAnonymous: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; username: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; displayUsername: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; phoneNumber: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; phoneNumberVerified: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; role: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; banned: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; banReason: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; banExpires: import("convex/values").VUnion<number | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VFloat64<number, "required">], "optional", never>; stripeCustomerId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; teamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; }, "required", "name" | "email" | "emailVerified" | "image" | "createdAt" | "updatedAt" | "twoFactorEnabled" | "isAnonymous" | "username" | "displayUsername" | "phoneNumber" | "phoneNumberVerified" | "role" | "banned" | "banReason" | "banExpires" | "stripeCustomerId" | "teamId">; declare const createUserArgsValidator: import("convex/values").VObject<{ input: { model: "user"; data: { image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; }; }; }, { input: import("convex/values").VObject<{ model: "user"; data: { image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; }; }, { model: import("convex/values").VLiteral<"user", "required">; data: import("convex/values").VObject<{ image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; }, { name: import("convex/values").VString<string, "required">; email: import("convex/values").VString<string, "required">; emailVerified: import("convex/values").VBoolean<boolean, "required">; image: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; createdAt: import("convex/values").VFloat64<number, "required">; updatedAt: import("convex/values").VFloat64<number, "required">; twoFactorEnabled: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; isAnonymous: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; username: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; displayUsername: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; phoneNumber: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; phoneNumberVerified: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; role: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; banned: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; banReason: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; banExpires: import("convex/values").VUnion<number | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VFloat64<number, "required">], "optional", never>; stripeCustomerId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; teamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; }, "required", "name" | "email" | "emailVerified" | "image" | "createdAt" | "updatedAt" | "twoFactorEnabled" | "isAnonymous" | "username" | "displayUsername" | "phoneNumber" | "phoneNumberVerified" | "role" | "banned" | "banReason" | "banExpires" | "stripeCustomerId" | "teamId">; }, "required", "model" | "data" | "data.name" | "data.email" | "data.emailVerified" | "data.image" | "data.createdAt" | "data.updatedAt" | "data.twoFactorEnabled" | "data.isAnonymous" | "data.username" | "data.displayUsername" | "data.phoneNumber" | "data.phoneNumberVerified" | "data.role" | "data.banned" | "data.banReason" | "data.banExpires" | "data.stripeCustomerId" | "data.teamId">; }, "required", "input" | "input.model" | "input.data" | "input.data.name" | "input.data.email" | "input.data.emailVerified" | "input.data.image" | "input.data.createdAt" | "input.data.updatedAt" | "input.data.twoFactorEnabled" | "input.data.isAnonymous" | "input.data.username" | "input.data.displayUsername" | "input.data.phoneNumber" | "input.data.phoneNumberVerified" | "input.data.role" | "input.data.banned" | "input.data.banReason" | "input.data.banExpires" | "input.data.stripeCustomerId" | "input.data.teamId">; declare const updateUserArgsValidator: import("convex/values").VObject<{ input: { where?: { operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined; connector?: "AND" | "OR" | undefined; value: string | number | boolean | string[] | number[] | null; field: string; }[] | undefined; update: { name?: string | undefined; email?: string | undefined; emailVerified?: boolean | undefined; image?: string | null | undefined; createdAt?: number | undefined; updatedAt?: number | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; }; model: "user"; }; }, { input: import("convex/values").VObject<{ where?: { operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined; connector?: "AND" | "OR" | undefined; value: string | number | boolean | string[] | number[] | null; field: string; }[] | undefined; update: { name?: string | undefined; email?: string | undefined; emailVerified?: boolean | undefined; image?: string | null | undefined; createdAt?: number | undefined; updatedAt?: number | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; }; model: "user"; }, { model: import("convex/values").VLiteral<"user", "required">; where: import("convex/values").VArray<{ operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined; connector?: "AND" | "OR" | undefined; value: string | number | boolean | string[] | number[] | null; field: string; }[] | undefined, import("convex/values").VObject<{ operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined; connector?: "AND" | "OR" | undefined; value: string | number | boolean | string[] | number[] | null; field: string; }, { field: import("convex/values").VString<string, "required">; operator: import("convex/values").VUnion<"lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined, [import("convex/values").VLiteral<"lt", "required">, import("convex/values").VLiteral<"lte", "required">, import("convex/values").VLiteral<"gt", "required">, import("convex/values").VLiteral<"gte", "required">, import("convex/values").VLiteral<"eq", "required">, import("convex/values").VLiteral<"in", "required">, import("convex/values").VLiteral<"ne", "required">, import("convex/values").VLiteral<"contains", "required">, import("convex/values").VLiteral<"starts_with", "required">, import("convex/values").VLiteral<"ends_with", "required">], "optional", never>; value: import("convex/values").VUnion<string | number | boolean | string[] | number[] | null, [import("convex/values").VString<string, "required">, import("convex/values").VFloat64<number, "required">, import("convex/values").VBoolean<boolean, "required">, import("convex/values").VArray<string[], import("convex/values").VString<string, "required">, "required">, import("convex/values").VArray<number[], import("convex/values").VFloat64<number, "required">, "required">, import("convex/values").VNull<null, "required">], "required", never>; connector: import("convex/values").VUnion<"AND" | "OR" | undefined, [import("convex/values").VLiteral<"AND", "required">, import("convex/values").VLiteral<"OR", "required">], "optional", never>; }, "required", "value" | "field" | "operator" | "connector">, "optional">; update: import("convex/values").VObject<{ name?: string | undefined; email?: string | undefined; emailVerified?: boolean | undefined; image?: string | null | undefined; createdAt?: number | undefined; updatedAt?: number | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; }, { name: import("convex/values").VString<string | undefined, "optional">; email: import("convex/values").VString<string | undefined, "optional">; emailVerified: import("convex/values").VBoolean<boolean | undefined, "optional">; image: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; createdAt: import("convex/values").VFloat64<number | undefined, "optional">; updatedAt: import("convex/values").VFloat64<number | undefined, "optional">; twoFactorEnabled: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; isAnonymous: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; username: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; displayUsername: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; phoneNumber: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; phoneNumberVerified: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; role: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; banned: import("convex/values").VUnion<boolean | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VBoolean<boolean, "required">], "optional", never>; banReason: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; banExpires: import("convex/values").VUnion<number | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VFloat64<number, "required">], "optional", never>; stripeCustomerId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; teamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; }, "required", "name" | "email" | "emailVerified" | "image" | "createdAt" | "updatedAt" | "twoFactorEnabled" | "isAnonymous" | "username" | "displayUsername" | "phoneNumber" | "phoneNumberVerified" | "role" | "banned" | "banReason" | "banExpires" | "stripeCustomerId" | "teamId">; }, "required", "update" | "model" | "where" | "update.name" | "update.email" | "update.emailVerified" | "update.image" | "update.createdAt" | "update.updatedAt" | "update.twoFactorEnabled" | "update.isAnonymous" | "update.username" | "update.displayUsername" | "update.phoneNumber" | "update.phoneNumberVerified" | "update.role" | "update.banned" | "update.banReason" | "update.banExpires" | "update.stripeCustomerId" | "update.teamId">; }, "required", "input" | "input.model" | "input.update" | "input.where" | "input.update.name" | "input.update.email" | "input.update.emailVerified" | "input.update.image" | "input.update.createdAt" | "input.update.updatedAt" | "input.update.twoFactorEnabled" | "input.update.isAnonymous" | "input.update.username" | "input.update.displayUsername" | "input.update.phoneNumber" | "input.update.phoneNumberVerified" | "input.update.role" | "input.update.banned" | "input.update.banReason" | "input.update.banExpires" | "input.update.stripeCustomerId" | "input.update.teamId">; declare const createSessionArgsValidator: import("convex/values").VObject<{ input: { model: "session"; data: { ipAddress?: string | null | undefined; userAgent?: string | null | undefined; impersonatedBy?: string | null | undefined; activeOrganizationId?: string | null | undefined; activeTeamId?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; expiresAt: number; token: string; }; }; }, { input: import("convex/values").VObject<{ model: "session"; data: { ipAddress?: string | null | undefined; userAgent?: string | null | undefined; impersonatedBy?: string | null | undefined; activeOrganizationId?: string | null | undefined; activeTeamId?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; expiresAt: number; token: string; }; }, { model: import("convex/values").VLiteral<"session", "required">; data: import("convex/values").VObject<{ ipAddress?: string | null | undefined; userAgent?: string | null | undefined; impersonatedBy?: string | null | undefined; activeOrganizationId?: string | null | undefined; activeTeamId?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; expiresAt: number; token: string; }, { expiresAt: import("convex/values").VFloat64<number, "required">; token: import("convex/values").VString<string, "required">; createdAt: import("convex/values").VFloat64<number, "required">; updatedAt: import("convex/values").VFloat64<number, "required">; ipAddress: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; userAgent: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; userId: import("convex/values").VString<string, "required">; impersonatedBy: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; activeOrganizationId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; activeTeamId: import("convex/values").VUnion<string | null | undefined, [import("convex/values").VNull<null, "required">, import("convex/values").VString<string, "required">], "optional", never>; }, "required", "createdAt" | "updatedAt" | "userId" | "expiresAt" | "token" | "ipAddress" | "userAgent" | "impersonatedBy" | "activeOrganizationId" | "activeTeamId">; }, "required", "model" | "data" | "data.createdAt" | "data.updatedAt" | "data.userId" | "data.expiresAt" | "data.token" | "data.ipAddress" | "data.userAgent" | "data.impersonatedBy" | "data.activeOrganizationId" | "data.activeTeamId">; }, "required", "input" | "input.model" | "input.data" | "input.data.createdAt" | "input.data.updatedAt" | "input.data.userId" | "input.data.expiresAt" | "input.data.token" | "input.data.ipAddress" | "input.data.userAgent" | "input.data.impersonatedBy" | "input.data.activeOrganizationId" | "input.data.activeTeamId">; export type EventFunction<T extends DefaultFunctionArgs> = FunctionReference<"mutation", "internal" | "public", T>; export type AuthFunctions = { createUser: FunctionReference<"mutation", "internal", Infer<typeof createUserArgsValidator>>; deleteUser: FunctionReference<"mutation", "internal", Infer<typeof adapterArgsValidator>>; updateUser: FunctionReference<"mutation", "internal", Infer<typeof updateUserArgsValidator>>; createSession: FunctionReference<"mutation", "internal", Infer<typeof createSessionArgsValidator>>; }; export type PublicAuthFunctions = { isAuthenticated: FunctionReference<"query", "public">; }; export declare class BetterAuth<UserId extends string = string> { component: UseApi<typeof api>; config: { authFunctions: AuthFunctions; publicAuthFunctions?: PublicAuthFunctions; verbose?: boolean; }; constructor(component: UseApi<typeof api>, config: { authFunctions: AuthFunctions; publicAuthFunctions?: PublicAuthFunctions; verbose?: boolean; }); isAuthenticated(token?: string | null): Promise<any>; getHeaders(ctx: RunQueryCtx & { auth: ConvexAuth; }): Promise<Headers>; getAuthUserId(ctx: RunQueryCtx & { auth: ConvexAuth; }): Promise<UserId | null>; getAuthUser(ctx: RunQueryCtx & { auth: ConvexAuth; }): Promise<any>; getIdTokenCookieName(createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>): Promise<string>; updateUserMetadata(ctx: GenericMutationCtx<GenericDataModel>, userId: UserId, metadata: Omit<Partial<Infer<typeof schema.tables.user.validator>>, "userId">): Promise<{ _id: string; _creationTime: number; ipAddress?: string | null | undefined; userAgent?: string | null | undefined; impersonatedBy?: string | null | undefined; activeOrganizationId?: string | null | undefined; activeTeamId?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; expiresAt: number; token: string; } | { _id: string; _creationTime: number; image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; userId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; } | { _id: string; _creationTime: number; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; idToken?: string | null | undefined; accessTokenExpiresAt?: number | null | undefined; refreshTokenExpiresAt?: number | null | undefined; scope?: string | null | undefined; password?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; accountId: string; providerId: string; } | { _id: string; _creationTime: number; createdAt?: number | null | undefined; updatedAt?: number | null | undefined; expiresAt: number; identifier: string; value: string; } | { _id: string; _creationTime: number; userId: string; secret: string; backupCodes: string; } | { _id: string; _creationTime: number; name?: string | null | undefined; createdAt?: number | null | undefined; transports?: string | null | undefined; aaguid?: string | null | undefined; userId: string; publicKey: string; credentialID: string; counter: number; deviceType: string; backedUp: boolean; } | { _id: string; _creationTime: number; name?: string | null | undefined; expiresAt?: number | null | undefined; start?: string | null | undefined; prefix?: string | null | undefined; refillInterval?: number | null | undefined; refillAmount?: number | null | undefined; lastRefillAt?: number | null | undefined; enabled?: boolean | null | undefined; rateLimitEnabled?: boolean | null | undefined; rateLimitTimeWindow?: number | null | undefined; rateLimitMax?: number | null | undefined; requestCount?: number | null | undefined; remaining?: number | null | undefined; lastRequest?: number | null | undefined; permissions?: string | null | undefined; metadata?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; key: string; } | { _id: string; _creationTime: number; name?: string | null | undefined; type?: string | null | undefined; createdAt?: number | null | undefined; updatedAt?: number | null | undefined; userId?: string | null | undefined; metadata?: string | null | undefined; icon?: string | null | undefined; clientId?: string | null | undefined; clientSecret?: string | null | undefined; redirectURLs?: string | null | undefined; disabled?: boolean | null | undefined; } | { _id: string; _creationTime: number; createdAt?: number | null | undefined; updatedAt?: number | null | undefined; userId?: string | null | undefined; accessToken?: string | null | undefined; refreshToken?: string | null | undefined; accessTokenExpiresAt?: number | null | undefined; refreshTokenExpiresAt?: number | null | undefined; clientId?: string | null | undefined; scopes?: string | null | undefined; } | { _id: string; _creationTime: number; createdAt?: number | null | undefined; updatedAt?: number | null | undefined; userId?: string | null | undefined; clientId?: string | null | undefined; scopes?: string | null | undefined; consentGiven?: boolean | null | undefined; } | { _id: string; _creationTime: number; metadata?: string | null | undefined; slug?: string | null | undefined; logo?: string | null | undefined; name: string; createdAt: number; } | { _id: string; _creationTime: number; createdAt: number; role: string; userId: string; organizationId: string; } | { _id: string; _creationTime: number; role?: string | null | undefined; teamId?: string | null | undefined; email: string; expiresAt: number; organizationId: string; status: string; inviterId: string; } | { _id: string; _creationTime: number; updatedAt?: number | null | undefined; name: string; createdAt: number; organizationId: string; } | { _id: string; _creationTime: number; createdAt?: number | null | undefined; userId: string; teamId: string; } | { _id: string; _creationTime: number; userId?: string | null | undefined; organizationId?: string | null | undefined; oidcConfig?: string | null | undefined; samlConfig?: string | null | undefined; providerId: string; issuer: string; domain: string; } | { _id: string; _creationTime: number; createdAt: number; publicKey: string; privateKey: string; } | { _id: string; _creationTime: number; stripeCustomerId?: string | null | undefined; status?: string | null | undefined; stripeSubscriptionId?: string | null | undefined; periodStart?: number | null | undefined; periodEnd?: number | null | undefined; cancelAtPeriodEnd?: boolean | null | undefined; seats?: number | null | undefined; plan: string; referenceId: string; } | { _id: string; _creationTime: number; isPrimary?: boolean | null | undefined; createdAt: number; userId: string; address: string; chainId: number; } | { _id: string; _creationTime: number; key?: string | null | undefined; lastRequest?: number | null | undefined; count?: number | null | undefined; }>; getUserByUsername(ctx: GenericQueryCtx<GenericDataModel>, username: string): Promise<any>; createAuthFunctions<DataModel extends GenericDataModel>(opts: { onCreateUser: (ctx: GenericMutationCtx<DataModel>, user: Infer<typeof createUserValidator>) => Promise<UserId>; onDeleteUser?: (ctx: GenericMutationCtx<DataModel>, id: UserId) => void | Promise<void>; onUpdateUser?: (ctx: GenericMutationCtx<DataModel>, user: Infer<typeof schema.tables.user.validator>) => void | Promise<void>; onCreateSession?: (ctx: GenericMutationCtx<DataModel>, session: Infer<typeof schema.tables.session.validator>) => void | Promise<void>; }): { isAuthenticated: import("convex/server").RegisteredQuery<"public", {}, Promise<boolean>>; createUser: import("convex/server").RegisteredMutation<"internal", { input: { model: "user"; data: { image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; }; }; }, Promise<any>>; deleteUser: import("convex/server").RegisteredMutation<"internal", { where?: { operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined; connector?: "AND" | "OR" | undefined; value: string | number | boolean | string[] | number[] | null; field: string; }[] | undefined; sortBy?: { field: string; direction: "asc" | "desc"; } | undefined; select?: string[] | undefined; limit?: number | undefined; offset?: number | undefined; unique?: boolean | undefined; model: string; }, Promise<any>>; updateUser: import("convex/server").RegisteredMutation<"internal", { input: { where?: { operator?: "lt" | "lte" | "gt" | "gte" | "eq" | "in" | "ne" | "contains" | "starts_with" | "ends_with" | undefined; connector?: "AND" | "OR" | undefined; value: string | number | boolean | string[] | number[] | null; field: string; }[] | undefined; update: { name?: string | undefined; email?: string | undefined; emailVerified?: boolean | undefined; image?: string | null | undefined; createdAt?: number | undefined; updatedAt?: number | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; teamId?: string | null | undefined; }; model: "user"; }; }, Promise<{ _id: string; _creationTime: number; image?: string | null | undefined; twoFactorEnabled?: boolean | null | undefined; isAnonymous?: boolean | null | undefined; username?: string | null | undefined; displayUsername?: string | null | undefined; phoneNumber?: string | null | undefined; phoneNumberVerified?: boolean | null | undefined; role?: string | null | undefined; banned?: boolean | null | undefined; banReason?: string | null | undefined; banExpires?: number | null | undefined; stripeCustomerId?: string | null | undefined; userId?: string | null | undefined; teamId?: string | null | undefined; name: string; email: string; emailVerified: boolean; createdAt: number; updatedAt: number; }>>; createSession: import("convex/server").RegisteredMutation<"internal", { input: { model: "session"; data: { ipAddress?: string | null | undefined; userAgent?: string | null | undefined; impersonatedBy?: string | null | undefined; activeOrganizationId?: string | null | undefined; activeTeamId?: string | null | undefined; createdAt: number; updatedAt: number; userId: string; expiresAt: number; token: string; }; }; }, Promise<any>>; }; registerRoutes(http: HttpRouter, createAuth: (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>, opts?: { cors?: boolean | { allowedOrigins?: string[]; allowedHeaders?: string[]; exposedHeaders?: string[]; }; }): void; } export type RunQueryCtx = { runQuery: GenericQueryCtx<GenericDataModel>["runQuery"]; }; export type RunMutationCtx = { runQuery: GenericQueryCtx<GenericDataModel>["runQuery"]; runMutation: GenericMutationCtx<GenericDataModel>["runMutation"]; }; export type RunActionCtx = { runQuery: GenericQueryCtx<GenericDataModel>["runQuery"]; runMutation: GenericMutationCtx<GenericDataModel>["runMutation"]; runAction: GenericActionCtx<GenericDataModel>["runAction"]; }; export type RunCtx = RunQueryCtx | RunMutationCtx | RunActionCtx; export type OpaqueIds<T> = T extends GenericId<infer _T> ? string : T extends (infer U)[] ? OpaqueIds<U>[] : T extends ArrayBuffer ? ArrayBuffer : T extends object ? { [K in keyof T]: OpaqueIds<T[K]>; } : T; export type UseApi<API> = Expand<{ [mod in keyof API]: API[mod] extends FunctionReference<infer FType, "public", infer FArgs, infer FReturnType, infer FComponentPath> ? FunctionReference<FType, "internal", OpaqueIds<FArgs>, OpaqueIds<FReturnType>, FComponentPath> : UseApi<API[mod]>; }>; //# sourceMappingURL=index.d.ts.map