import { Observable } from 'apollo-link'; import { w3cwebsocket } from 'websocket'; import { GQLServerEvents } from '../protocol'; import { OperationRequest } from '../types'; declare type ExecutedOperation = { id: string; isSubscription: boolean; observer: any; operation: OperationRequest; clearTimeout: () => void; startTimeout: () => void; }; declare type Options = { /** * Number of ms to wait for operation result (in case of subscriptions this is ignored) * 0/Infinity is the same */ operationTimeout?: number; }; declare class OperationProcessor { executedOperations: { [id: string]: ExecutedOperation; }; private queuedOperations; private operationTimeout; private stopped; private socket; constructor({ operationTimeout }?: Options); execute: (operation: OperationRequest) => Observable<{}>; processOperationResult: (event: GQLServerEvents.GQLOperationResult) => void; start: (socket: w3cwebsocket) => void; stop: () => void; private send; private sendRaw; private flushQueuedMessages; } export { OperationProcessor }; export default OperationProcessor;