import type { MeshClientRecord, MeshClientRegistryBackend, MeshClientRegistrationState, RegisteredClient, RegisterResult } from './types'; export interface MeshClientRedisRegistryOptions { maxClientIdBytes?: number; maxMetadataBytes?: number; maxClientsPerNode?: number; scanBatchSize?: number; cleanupBatchSize?: number; maxAuthReplayPrincipals?: number; maxAuthNoncesPerPrincipal?: number; /** Global durable orphan queue caps (not merely per snapshot). */ maxOrphanItems?: number; maxOrphanBytes?: number; } export declare function destroyClientRedis(): void; export declare class MeshClientRedisRegistry implements MeshClientRegistryBackend { private key; private readonly maxClientIdBytes; private readonly maxMetadataBytes; private readonly maxClientsPerNode; private readonly scanBatchSize; private readonly cleanupBatchSize; private readonly maxAuthReplayPrincipals; private readonly maxAuthNoncesPerPrincipal; private readonly maxOrphanItems; private readonly maxOrphanBytes; constructor(key: string, options?: MeshClientRedisRegistryOptions); private clientsKey; private nodeSetKey; private nodeSetKeyPrefix; private nodeClaimsKey; private claimsKey; private claimsIndexKey; private orphanedKey; private orphanedIndexKey; private orphanedAccountingKey; private authNonceKey; private authNoncePrincipalsKey; private encodeMetadata; private registerWithState; register(clientId: string, nodeId: number, metadata: TMeta, allowSupersede: boolean, connectionId: string, processId?: string): Promise; reserve(clientId: string, nodeId: number, metadata: TMeta, allowSupersede: boolean, connectionId: string, processId?: string): Promise; activate(clientId: string, nodeId: number, metadata: TMeta, connectionId: string): Promise; unregister(clientId: string, nodeId: number, connectionId: string): Promise; updateMetadata(clientId: string, nodeId: number, metadata: TMeta, connectionId: string): Promise; private tryParse; private toRegisteredClient; private toClientRecord; getClient(clientId: string): Promise | undefined>; getClientIncludingPending(clientId: string): Promise | undefined>; listClients(): Promise[]>; listClientsForNode(nodeId: number): Promise[]>; listClientsPage(cursor?: string): Promise>; listClientsForNodePage(nodeId: number, cursor?: string): Promise>; cleanupNode(nodeId: number): Promise[]>; cleanupNodeAndEnqueueOrphaned(nodeId: number): Promise[]>; private decodeRemovedRecords; refreshNode(nodeId: number): Promise; claim(clientId: string, nodeId: number, metadata: TMeta, state: MeshClientRegistrationState, allowSupersede: boolean, connectionId: string, processId?: string, operationId?: `${string}-${string}-${string}-${string}-${string}`): Promise>; commitClaim(clientId: string, nodeId: number, claimId: string): Promise; removeClaimPrevious(clientId: string, nodeId: number, claimId: string): Promise; abortClaim(clientId: string, nodeId: number, claimId: string): Promise; removeClaimResult(clientId: string, nodeId: number, claimId: string): Promise; enqueueOrphaned(nodeId: number, clients: RegisteredClient[]): Promise; claimOrphaned(_claimerId: string): Promise | undefined>; ackOrphaned(id: string, claimToken: string): Promise; nackOrphaned(id: string, claimToken: string): Promise; consumeAuthNonce(principal: string, nonce: string, expiresAt: number): Promise; private assertClientId; } //# sourceMappingURL=mesh-client-redis-registry.d.ts.map