/** * RFC 7591 dynamic client persistence. * * `OAuthManager.registerDynamicClient` previously kept clients in an in-memory * Map, so any process restart (Railway redeploy) invalidated every Claude * desktop / mobile / ChatGPT integration that had auto-registered via DCR. * Tokens persisted, but the *client_id* didn't — so refresh attempts failed * with "Unknown client_id" and clients re-ran the full OAuth flow. * * `ClientStore` mirrors `TokenStore`: SQLite for local/single-instance, * Supabase PostgREST for multi-instance / stateless deployments. See * `scripts/supabase-oauth-clients.sql` for the migration. */ export interface StoredClient { clientId: string; redirectUris: string[]; scopes: string[]; createdAt: number; } export interface ClientStore { save(record: StoredClient): Promise; find(clientId: string): Promise; listAll(since?: number): Promise; } export declare class LocalSQLiteClientStore implements ClientStore { private readonly db; constructor(storageLocation: string); save(record: StoredClient): Promise; find(clientId: string): Promise; listAll(since?: number): Promise; } export declare class PostgresClientStore implements ClientStore { private readonly supabaseUrl; private readonly serviceRoleKey; constructor(supabaseUrl: string, serviceRoleKey: string); private authHeaders; private get baseUrl(); save(record: StoredClient): Promise; find(clientId: string): Promise; listAll(since?: number): Promise; } export declare function createClientStore(storageLocation: string): ClientStore; //# sourceMappingURL=clientStore.d.ts.map