import { ISocialAuthStateStore, SocialAuthRedirectContext } from '../interfaces/social-auth-state-store.interface'; import { StorageAdapter } from '../interfaces/storage-adapter.interface'; import { NAuthLogger } from '../utils/nauth-logger'; /** * StorageAdapter-backed social OAuth state store * * Replaces in-memory `Map` usage for OAuth CSRF state to support multi-server deployments. * * This implementation stores: * - CSRF state record (provider + createdAt) under a short TTL * - Redirect context record (returnTo/appState/action) under the same TTL (optional) * * Replay protection: * - Uses a separate `used` marker key with `{ nx: true }` so both Redis and Database adapters * can enforce one-time consumption without requiring special atomic commands. * * @example * ```typescript * const store = new SocialAuthStateStore(storageAdapter, logger); * const state = await store.createCsrfState('google'); * await store.setRedirectContext(state, { returnTo: '/auth/callback', appState: '12345', action: 'login' }); * // later during callback: * await store.validateAndConsumeCsrfState('google', state); * const ctx = await store.consumeRedirectContext(state); * ``` */ export declare class SocialAuthStateStore implements ISocialAuthStateStore { private readonly storage; private readonly logger?; private readonly ttlSeconds; constructor(storage: StorageAdapter, logger?: NAuthLogger | undefined, ttlSeconds?: number); /** * Create a CSRF state token and persist it for one-time validation. */ createCsrfState(provider: string): Promise; /** * Validate and consume CSRF state (one-time). */ validateAndConsumeCsrfState(provider: string, state: string): Promise; /** * Persist redirect context for a CSRF state token. */ setRedirectContext(state: string, context: SocialAuthRedirectContext): Promise; /** * Consume redirect context (read + delete). */ consumeRedirectContext(state: string): Promise; private getCsrfKey; private getUsedKey; private getRedirectKey; private normalizeProvider; private normalizeState; private normalizeReturnTo; private safeParseCsrfRecord; private safeParseRedirectRecord; private safeParseJsonObject; } //# sourceMappingURL=social-auth-state-store.service.d.ts.map