import { type EndpointAvailability, type EndpointHelloPayload, type EndpointKind, type EndpointToolDescriptor } from '@xopcai/endpoint-tools-protocol'; import { EndpointToolPolicy } from './policy.js'; export interface EndpointTransport { readonly readyState: number; send(data: string): void; close(code?: number, reason?: string): void; } export interface RegisteredEndpointTool { descriptor: EndpointToolDescriptor; revision: string; } export interface EndpointConnectionSnapshot { principalId: string; endpointId: string; connectionId: string; displayName: string; kind: EndpointKind; platform: string; appVersion: string; availability: EndpointAvailability; lastHeartbeatAt: number; tools: RegisteredEndpointTool[]; } export interface EndpointRegistration { connection: EndpointConnectionSnapshot; turnToken: string; } export declare function endpointToolRevision(descriptor: EndpointToolDescriptor): string; export declare class EndpointRegistry { private readonly policy; private readonly connectionByEndpointId; constructor(policy?: EndpointToolPolicy); register(hello: EndpointHelloPayload, connectionId: string, transport: EndpointTransport, now?: number): EndpointRegistration; remove(endpointId: string, connectionId: string): boolean; heartbeat(endpointId: string, connectionId: string, availability: EndpointAvailability, now?: number): void; get(endpointId: string): EndpointConnectionSnapshot | undefined; isCurrentConnection(endpointId: string, connectionId: string): boolean; list(): EndpointConnectionSnapshot[]; getTool(endpointId: string, toolName: string): RegisteredEndpointTool | undefined; verifyTurnClaim(endpointId: string, turnToken: string): boolean; send(endpointId: string, type: 'tool.invoke' | 'tool.cancel', payload: unknown): void; disconnect(endpointId: string, code?: number, reason?: string): boolean; closeAll(code?: number, reason?: string): void; private requireConnection; }