export type HostedDemoAuthStoreValue = {
    token: string;
    email: string;
    userId?: string;
    refreshToken?: string;
    activeDemoSessionId?: string;
    updatedAt: number;
};
export type HostedDemoAuthStoreRecord = {
    sessionId: string;
    value: HostedDemoAuthStoreValue;
};
export type HostedDemoAuthSessionStore = {
    initialize: () => Promise<void>;
    loadAll: () => Promise<HostedDemoAuthStoreRecord[]>;
    set: (sessionId: string, value: HostedDemoAuthStoreValue, ttlMs: number) => Promise<void>;
    delete: (sessionId: string) => Promise<void>;
    shutdown: () => Promise<void>;
};
export declare class InMemoryHostedDemoAuthSessionStore implements HostedDemoAuthSessionStore {
    private readonly records;
    initialize(): Promise<void>;
    loadAll(): Promise<HostedDemoAuthStoreRecord[]>;
    set(sessionId: string, value: HostedDemoAuthStoreValue, _ttlMs: number): Promise<void>;
    delete(sessionId: string): Promise<void>;
    shutdown(): Promise<void>;
}
type RedisHostedDemoAuthSessionStoreOptions = {
    redisUrl: string;
    keyPrefix: string;
};
export declare class RedisHostedDemoAuthSessionStore implements HostedDemoAuthSessionStore {
    private readonly client;
    private readonly keyPrefix;
    constructor(options: RedisHostedDemoAuthSessionStoreOptions);
    initialize(): Promise<void>;
    loadAll(): Promise<HostedDemoAuthStoreRecord[]>;
    set(sessionId: string, value: HostedDemoAuthStoreValue, ttlMs: number): Promise<void>;
    delete(sessionId: string): Promise<void>;
    shutdown(): Promise<void>;
    private getKey;
}
export {};
//# sourceMappingURL=HostedDemoAuthSessionStore.d.ts.map