import WebSocket from 'ws'; import type { IncomingHttpHeaders } from 'http'; type Operation = { started: boolean; options: { query: string; variables: Record; operationName: string | undefined | null; }; handler: (data: unknown) => Promise; extensions?: { type: string; payload: unknown; }[]; }; export declare class SubscriptionClient { subscriptionQueryMap: Record; socket: WebSocket | null; protocols: string[]; headers: IncomingHttpHeaders; uri: string; operationId: number; ready: boolean; operations: Map; operationsCount: Record; tryReconnect: boolean; maxReconnectAttempts: number; serviceName?: string; reconnectAttempts: number; connectionCallback?: Function; failedConnectionCallback?: Function; failedReconnectCallback?: Function; connectionInitPayload?: unknown; closedByUser?: boolean; reconnecting?: boolean; reconnectTimeoutId?: NodeJS.Timeout; constructor(uri: string, config: { protocols?: []; reconnect?: boolean; maxReconnectAttempts?: number; serviceName?: string; connectionCallback?: Function; failedConnectionCallback?: Function; failedReconnectCallback?: Function; connectionInitPayload?: object; headers?: IncomingHttpHeaders; }); connect(): void; close(tryReconnect?: boolean, closedByUser?: boolean): void; getReconnectDelay(): number; reconnect(): any; unsubscribe(operationId: string | number, forceUnsubscribe?: boolean): void; unsubscribeAll(): void; sendMessage(operationId: number | string | null, type: string, payload?: unknown, extensions?: unknown): Promise; handleMessage(message: string): Promise; startOperation(operationId: string): Promise; createSubscription(query: string, variables: Record, publish: (args: { topic: string; payload: any; }) => void | Promise, operationName?: string | null, connectionInit?: Record): Promise; } export {};