import type { AccessUser, AuthSessionResolver } from '../access.js'; import type { DbFor } from '../db.js'; import type { EmailFacade } from '../email.js'; import type { AuthInstance, StorageFacade } from '../index.js'; import type { JobsRuntimeFacade } from '../jobs/define.js'; import type { RealtimeFacade } from '../realtime/facade.js'; export interface ApiContextDeps = Record, TEnv = Record> { db: DbFor; env: TEnv; storage: StorageFacade; email: EmailFacade; jobs: JobsRuntimeFacade; realtime: RealtimeFacade; auth: AuthInstance; authResolver?: AuthSessionResolver; } export interface ApiContext = Record, TEnv = Record> { db: DbFor; env: TEnv; storage: StorageFacade; email: EmailFacade; jobs: JobsRuntimeFacade; realtime: RealtimeFacade; auth: AuthInstance; request: Request; resHeaders: Headers; getRawBody: () => Promise; getSession: () => Promise<{ user: AccessUser | null; activeOrganizationId: string | null; }>; /** * The session that some earlier code already resolved, or `undefined`. * Never starts a resolution, so a global middleware can log the caller * without removing the lazy session behavior that signed webhooks rely on. * Use it for observability only. Never use it for authorization. */ peekSession: () => { user: AccessUser | null; activeOrganizationId: string | null; } | undefined; } export declare function createApiContext = Record, TEnv = Record>(deps: ApiContextDeps, request: Request): ApiContext; //# sourceMappingURL=context.d.ts.map