/// import { Socket } from 'net'; import { Subscription } from 'rxjs'; import { SocketWithInfo, MessageWithInfo } from './types'; import { AnySocketEpic } from '../kit'; import { BasicLogger } from '../logging'; export declare type WaitForCompletionFn = () => Promise<'completed' | 'timed-out'>; export declare type WatchModeDetachBehavior = 'unsubscribe' | 'disconnect'; export interface IConnectedSocket { id: string; pathname: string; ws: SocketWithInfo; socket: Socket; request: MessageWithInfo; subscription?: Subscription; waitForCompletion?: WaitForCompletionFn; onDetach: WatchModeDetachBehavior; } export interface ISocketRegistryState { epicsByPath: Map; sockets: Map; logger: BasicLogger; } export declare const buildRegistryStateApi: (state: ISocketRegistryState) => Readonly<{ addSocket: (socketState: IConnectedSocket) => void; closeSocket: (id: string, code?: number | undefined) => void; detachFromSocketInWatchMode: (id: string) => void; attachToSocket: (id: string, subscription: Subscription, waitForCompletion: WaitForCompletionFn, onDetach: WatchModeDetachBehavior) => void; onServerClose: () => Promise; }>; export declare type RegistryStateApi = ReturnType;