import { Transport } from "./communication/Transport.js"; import { Datagram, Response, RequestStub } from "../Independents/Datagram/datagram-types.js"; import { HostName, HostNameTemplate } from "../Independents/DNS/HostName.js"; import { Gateway } from "./Gateway.js"; import { Subscription } from "../Independents/util/Subscription.js"; export declare type RequestResponse = { request: RequestStub; subscription: Subscription; }; export declare type ResponseHookFn = (response: Response) => void; export declare type HostNames = { [host: string]: HostName; }; /** * Represents a remote gateway accessible via a communication channel (aka Transport) * such as a socket. It can match outgoing datagrams with incomming datagrams to * provide a mechanism for the request/response pattern. */ export declare class GatewayProxy { remoteAliases: HostNames; gateway: Gateway; hostTemplate: HostNameTemplate; secret: string; /** * Eeach request datagram is marked with a request number, unique * to the Transport. By providing the same request number in the response * datagram, requests and responses can be paired. */ Transport: Transport; responseHooks: { [reqno: number]: ResponseHookFn[]; }; constructor(remoteAliases: HostNames, gateway: Gateway, hostTemplate: HostNameTemplate, secret: string); addResponseHook(reqno: number, callback: ResponseHookFn): void; onReceiveDatagram(datagram: Datagram): void; transmitDatagram(datagram: Datagram): void; }