import { type DingtalkBotMessage } from "./message.js"; export interface DingtalkStreamOptions { clientId: string; clientSecret: string; /** Gateway URL (default wss://api.dingtalk.com/connect). */ url?: string; logger?: { info?: (...args: unknown[]) => void; warn?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void; }; } export declare const DEFAULT_STREAM_URL = "wss://api.dingtalk.com/connect"; /** * STOMP-over-WebSocket gateway client. Usage: * ```ts * const client = new DingtalkStreamClient({ clientId, clientSecret }); * client.onInbound((raw) => console.log(raw.conversationId, raw.text?.content)); * await client.connect(); * await client.sendReply(msgId, buildTextReplyBody(msgId, "hi")); * ``` */ export declare class DingtalkStreamClient { private readonly clientId; private readonly clientSecret; private readonly url; private readonly logger?; private ws?; private rest; private heartbeat?; private reconnectTimer?; private backoffMs; private closedByUs; private messageHandler?; constructor(options: DingtalkStreamOptions); /** Register the inbound-message handler (called for every gateway push). */ onInbound(handler: (raw: DingtalkBotMessage) => void | Promise): void; /** Open the socket, perform the STOMP handshake and subscribe. Reconnect-safe. */ connect(): Promise; /** Send a reply to an inbound message (SEND frame to the reply topic). */ sendReply(msgId: string, body: string): Promise; /** Stop the client and cancel any scheduled reconnect. */ close(): void; private onSocketOpen; private onSocketMessage; private onSocketClose; private scheduleReconnect; private handleFrame; private sendFrame; private startHeartbeat; private stopHeartbeat; } //# sourceMappingURL=stream.d.ts.map