import MillenniumDBError from './millenniumdb-error'; export interface ResponseMessage { type: number; payload: any; } export interface QueryPreamble { workerIndex: number; cancellationToken: string; } export interface ResponseHandlerObserver { /** Event handler triggered when variables are available. This should be the first event triggered during a query */ onVariables?: (variables: Array, queryPreamble: QueryPreamble) => void; /** Event handler triggered when a record is available */ onRecord?: (record: Array) => void; /** Event handler triggered after a successful execution */ onSuccess?: (summary: any) => void; /** Event handler triggered when an error occurs */ onError?: (error: MillenniumDBError) => void; } /** * ResponseHandler handles the responses coming from the server */ declare class ResponseHandler { private _currentObserver; private readonly _pendingObservers; constructor(); /** * Handle an incoming response * * @param message the message to handle */ handle(message: ResponseMessage): void; /** * Enqueue a new observer for handling a response * * @param observer that will handle the received data */ addObserver(observer: ResponseHandlerObserver): void; /** * Notify the connection error to current observer and cancel the other observers * * @param errorString the error to notify */ triggerConnectionError(errorString: string): void; /** * Shift the current observer to the next one in the queue */ private _nextObserver; } export default ResponseHandler;