import { MercuriusContext } from "mercurius"; import { EventEmitter } from "stream"; export interface SubscriptionClientConfig { protocols?: Array, reconnect?: boolean, maxReconnectAttempts?: number, serviceName: string, connectionCallback?: (params: any) => Promise, failedConnectionCallback?: (params: any) => Promise, failedReconnectCallback?: (params: any) => Promise, connectionInitPayload?: any, rewriteConnectionInitPayload?: (connectionInit: any, context: MercuriusContext) => void, keepAlive?: number } export type SubscriptionOperationId = string export class SubscriptionClient extends EventEmitter { constructor(uri: string, config: SubscriptionClientConfig) connect(): void close (tryReconnect: boolean, closedByUser?: boolean): void unsubscribe (operationId: SubscriptionOperationId, forceUnsubscribe?: boolean) : void unsubscribeAll() : void createSubscription (query: string, variables: any, publish: (props: any) => Promise, context: MercuriusContext) : SubscriptionOperationId }