import { IOAuthStateStore, OAuthStateRecord } from '../protocols/oauth-state-store.js';

interface MemoryOAuthStateStoreOptions {
    /** TTL in ms. Default 10 minutes. */
    ttlMs?: number;
    /** Injectable clock for tests. Default `Date.now`. */
    now?: () => number;
    /** Injectable token generator for tests. Default 32-byte base64url. */
    generateToken?: () => string;
}
declare class MemoryOAuthStateStore implements IOAuthStateStore {
    private readonly store;
    private readonly ttlMs;
    private readonly now;
    private readonly generateToken;
    constructor(opts?: MemoryOAuthStateStoreOptions);
    generate(record: OAuthStateRecord): Promise<string>;
    consume(state: string): Promise<OAuthStateRecord>;
}

export { MemoryOAuthStateStore, type MemoryOAuthStateStoreOptions };
