import { Auth, type AuthAccessToken, type AuthAccessTokenGrant, type AuthStorageDescription, type AuthChallengeGrant, type AuthIdentity, type AuthImpersonationGrant, type AuthRequestMetadata, type AuthSessionGrant, type AuthSession, type Disposes, type LifecycleContext, Instant, type IssueAccessTokenInput, type LoginInput, type RegistrationInput, type ResolvedHttpAuthentication, type ExecutionContext, type ActorRef, type AuthenticationContext, type PolicyDecision, type Starts } from '@doxajs/core'; import type { CompiledAuthenticationConfiguration, CompiledCredentialReader } from './compiled-auth.js'; export interface PostgresAuthOptions { readonly connectionString: string; readonly trustedOrigins: readonly string[]; readonly secureCookies: boolean; readonly absoluteSessionSeconds?: number; readonly idleSessionSeconds?: number; readonly applicationName?: string; readonly passwordCompromised?: (password: string) => boolean | Promise; readonly challengeSeconds?: number; readonly sessionRenewalSeconds?: number; readonly sessionRotationGraceSeconds?: number; readonly impersonationSessionSeconds?: number; readonly identityId?: () => string; readonly tables?: { readonly identities: AuthIdentityTableMapping; readonly passwords: AuthPasswordTableMapping; }; } export interface AuthIdentityTableMapping { readonly table: string; readonly id: string; readonly email: string; readonly contactEmail?: string; readonly emailVerifiedAt?: string; readonly createdAt: string; readonly updatedAt: string; readonly identifierKind?: 'email' | 'username' | 'custom'; readonly normalization?: CompiledAuthenticationConfiguration['identifier']['normalization']; readonly verificationMode?: 'mapped' | 'trusted' | 'unsupported'; readonly eligibility?: CompiledAuthenticationConfiguration['eligibility']; } export interface AuthPasswordTableMapping { readonly table: string; readonly identityId: string; /** The authoritative external credential column. */ readonly password: string; readonly readers: readonly CompiledCredentialReader[]; readonly mode?: 'managed' | 'login-only'; readonly upgrade?: { readonly mode: 'never'; } | { readonly mode: 'in-place'; readonly format: 'doxa-argon2id'; readonly updatedAt?: string; }; } export interface ManagedIdentityRegistrationRequest { readonly id: string; readonly identifier: string; readonly contactEmail?: string; readonly createdAt: Instant; readonly updatedAt: Instant; readonly persistAuthentication: (transaction: unknown, identityId: string) => Promise; } export interface CompiledAuthenticationRuntimeBinding { readonly registerManagedIdentity?: (request: ManagedIdentityRegistrationRequest) => Promise; } export declare class PostgresAuth extends Auth implements Starts, Disposes { #private; private readonly options; static readonly id = "auth"; constructor(options: PostgresAuthOptions); bindCompiledAuthentication(configuration: CompiledAuthenticationConfiguration, runtime?: CompiledAuthenticationRuntimeBinding): void; storage(): AuthStorageDescription; start(context: LifecycleContext): Promise; dispose(_context: LifecycleContext): Promise; register(input: RegistrationInput): Promise; findIdentity(identityId: string): Promise; login(input: LoginInput, metadata?: AuthRequestMetadata): Promise; issueEmailVerification(identityId: string): Promise; verifyEmail(token: string): Promise; issuePasswordReset(identifierInput: string, metadata?: AuthRequestMetadata): Promise; resetPassword(token: string, newPassword: string): Promise; changePassword(identityId: string, currentPassword: string, newPassword: string): Promise; reauthenticate(identityId: string, sessionId: string, password: string, metadata?: AuthRequestMetadata): Promise; startImpersonation(identityId: string, sessionId: string, targetIdentityId: string, reason: string): Promise; stopImpersonation(identityId: string, sessionId: string, impersonationGrantId: string): Promise; validateAuthentication(actor: ActorRef, authentication: AuthenticationContext): Promise; revokeSession(sessionId: string): Promise; listSessions(identityId: string): Promise; revokeAllSessions(identityId: string): Promise; issueAccessToken(identityId: string, input: IssueAccessTokenInput): Promise; listAccessTokens(identityId: string): Promise; rotateAccessToken(identityId: string, tokenId: string): Promise; revokeAccessToken(identityId: string, tokenId: string): Promise; recordAuthorization(ability: string, decision: PolicyDecision, context: ExecutionContext): Promise; resolveHttp(request: Request): Promise; sessionCookie(grant: AuthSessionGrant): string; expiredSessionCookie(): string; } //# sourceMappingURL=postgres-auth.d.ts.map