import { EventEmitter } from 'node:events'; import { BaseAction, DisconnectReason, ServerRequest, ServerResponse, ClientRequest, ClientResponse } from '@script-bridge/protocol'; import { Session } from './session'; import { ActionHandler } from './types'; interface ServerOptions { port: number; /** The interval ticks clients should wait before sending a query. Defaults to `8` */ requestIntervalTicks?: number; /** * A multiplier indicating how many times the `requestIntervalTicks` * can be exceeded before considering the request as failed. * Defaults to `20`. * Set `Infinity` to disable auto disconnection. */ timeoutThresholdMultiplier?: number; } export declare class ScriptBridgeServer extends EventEmitter { static readonly PROTOCOL_VERSION = 2; readonly sessions: Map; readonly port: number; readonly requestIntervalTicks: number; readonly timeoutThresholdMultiplier: number; private readonly actionHandlers; private readonly app; private server; constructor(options: ServerOptions); start(): Promise; stop(): Promise; broadcast(channelId: A['id'], data?: A['request'], timeout?: number): Promise[]>; registerHandler(channelId: A['id'], handler: ActionHandler): void; private handleRequest; private handleResponse; } interface ServerEvents { serverOpen: []; serverClose: []; clientConnect: [session: Session]; clientDisconnect: [session: Session, reason: DisconnectReason]; sessionCreate: [session: Session]; sessionDestroy: [session: Session]; queryReceive: [session: Session]; requestSend: [request: ServerRequest, session: Session]; responseSend: [response: ServerResponse, session: Session]; requestReceive: [request: ClientRequest, session: Session]; responseReceive: [response: ClientResponse, session: Session]; error: [error: Error]; } export {};