import type { EdgeNodeRepository } from '../../identity/drizzle/EdgeNodeRepository'; import type { P2PCandidateUpdateRequest, P2PSession, P2PSessionList, P2PSessionRequest, RelaySession, RelaySessionRequest } from './types'; export interface ReachabilitySessionServiceOptions { repository: EdgeNodeRepository; baseStorageDomain?: string; apiBaseUrl: string | (() => string); now?: () => Date; randomId?: () => string; defaultP2PTtlSeconds?: number; defaultRelayTtlSeconds?: number; defaultRelayBandwidthLimitBytes?: number; maxActiveP2PSessionsPerNode?: number; maxP2PCandidatesPerUpdate?: number; maxP2PCandidatesPerSession?: number; } export declare class ReachabilitySessionService { private readonly options; private readonly now; private readonly randomId; private readonly defaultP2PTtlSeconds; private readonly defaultRelayTtlSeconds; private readonly defaultRelayBandwidthLimitBytes; private readonly maxActiveP2PSessionsPerNode; private readonly maxP2PCandidatesPerUpdate; private readonly maxP2PCandidatesPerSession; constructor(options: ReachabilitySessionServiceOptions); createP2PSession(nodeId: string, request: P2PSessionRequest): Promise; getP2PSession(nodeId: string, sessionId: string): Promise; listP2PSessions(nodeId: string): Promise; addP2PCandidates(nodeId: string, sessionId: string, request: P2PCandidateUpdateRequest): Promise; createRelaySession(nodeId: string, request: RelaySessionRequest): Promise; private loadNodeRouteSource; private readActiveP2PSessions; private p2pSessionLimits; private resolveP2PSessionLimits; private appendSession; private loadP2PSession; private assertP2PSessionActive; private isP2PSessionActive; private normalizeP2PCandidates; } export declare class InvalidRelaySessionRequestError extends Error { } export declare class NodeRouteSourceNotFoundError extends Error { } export declare class P2PActiveSessionLimitExceededError extends Error { } export declare class P2PCandidateUpdateLimitExceededError extends Error { } export declare class P2PCandidateSessionLimitExceededError extends Error { } export declare class P2PSessionExpiredError extends Error { } export declare class P2PSessionNotFoundError extends Error { }