///
import { CallMessage, RemoteMethodsMessage, GetProvidedMethodsMessage, MethodsMap } from '../types.js';
import { AnyFn } from '../utils/index.js';
import { Namespace } from './Namespace.js';
import { ReactiveValue } from './ReactiveValue.js';
import { EndpointListSet } from './EndpointListSet.js';
import { EndpointList } from './EndpointList.js';
export declare type Channel = {
type: string;
send: AnyFn;
};
export declare type Packet = CallMessage | RemoteMethodsMessage | GetProvidedMethodsMessage;
export declare class Endpoint {
id: string | null;
namespaces: {
[key: string]: TNamespace;
};
get namespaceClass(): typeof Namespace;
type: string;
channels: Channel[];
connected: ReactiveValue;
remoteEndpoints: EndpointListSet;
providedMethodsUpdateTimer?: number | NodeJS.Timeout | null;
constructor(id?: string);
getName(): string;
ns(name: K): TNamespace;
send(packet: T, callback?: ((...args: unknown[]) => void) | null): void;
requestRemoteApi(): void;
setRemoteApi(api?: MethodsMap): void;
getProvidedApi(): MethodsMap;
scheduleProvidedMethodsUpdate(): void;
processInput(packet: Packet, callback: AnyFn): void;
setupChannel(type: string, send: AnyFn, remoteEndpoints: EndpointList, available: boolean): void;
}