import { Datagram, Message, Request, Response } from "./Datagram/datagram-types.js"; import { Subscription } from "./util/Subscription.js"; import { Handler, MessageHandler } from "../Independents/Server.js"; export interface SinglePortMachineInit { onRequest?: Handler; onMessage?: MessageHandler; } export declare type MultiPortMachineInit = { ports: { [port: string]: SinglePortMachineInit; }; }; export declare type MachineInit = SinglePortMachineInit | MultiPortMachineInit; export interface IMachine { tryRequest(request: Request): Subscription | null; tryMessage(message: Message): void; } export declare class Machine implements IMachine { init: MultiPortMachineInit; constructor(init: MachineInit); install(init: MachineInit): void; /** * Handle a request and return a promise or return null. * * @param request A request to process * @returns Null if this machine does not handle the request or the response promise */ tryMessage(message: Datagram): Subscription | null; /** * Handle a request and return a promise or return null. * * @param request A request to process * @returns Null if this machine does not handle the request or the response promise */ tryRequest(request: Request): Subscription | null; } export declare function isMultiportInit(machine: MachineInit): machine is MultiPortMachineInit; export declare function processMessageByHandler(handler: MessageHandler, message: Message): void; export declare function processRequestByHandler(handler: Handler, request: Request): Subscription;