import { Options, CloseEvent, ErrorEvent, Event, UrlProvider as RWSUrlProvider } from 'reconnecting-websocket'; import { Request, Response, IPrinter, JsonObject, PrinterConfig, PrintTask, CMD } from './interfaces'; declare type FlattenArrayType = T extends any[] ? T[number] : T; export declare type NotifyResultCallback = (response: T) => void | T; export interface CallbackMap { open?: (value: boolean | PromiseLike) => void; error?: (value: boolean | PromiseLike) => void; } export declare type PrinterListenersMap = { close: Array<(event: CloseEvent) => void>; error: Array<(event: ErrorEvent) => void>; open: Array<(event: Event) => void>; }; export interface PrinterProps { url?: UrlProvider; options?: SocketOption; version?: string; } export interface SocketOption extends Options { /** * if true attempt to reconnect when send message to ws * @default true */ autoReconnect?: boolean; } export declare type UrlProvider = RWSUrlProvider; export default abstract class PrinterProvider implements IPrinter { private ws?; private url?; private options; private _debug; private readonly $requestQueue; private readonly $notifyPrintResultListener; private readonly $callback; private readonly _listeners; constructor(props?: PrinterProps); get isConnect(): boolean; abstract readonly providerKey: string; onclose: ((event: CloseEvent) => void) | null; onerror: ((event: ErrorEvent) => void) | null; onopen: ((event: Event) => void) | null; private _connectLock; connect(): Promise; private _handleOpen; private _handleError; private _handleClose; reconnect(): Promise; disconnect(code?: number, reason?: string): void; private _removeListners; private _addCallback; private _dispatchCallback; private _onMessage; addEventListener(type: T, listener: FlattenArrayType): void; removeEventListener(type: T, listener?: FlattenArrayType): void; /** * 子类中实现该方法用于将 平台打印组件返回的消息 解析成统一的协议格式 * @param event */ abstract handleResponseMessage(event: MessageEvent): T; /** * 子类中实现该方法用于将 标准标准数据 解析成不同打印组件的协议格式 * @param jsonData */ abstract handleRequestMessage(jsonData: { [k: string]: any; }): T; /** * 打印组件调用的统一入口 * @param jsonData * @returns */ request(jsonData: Omit): Promise; startRequest(): Promise; protected getRequestHeader(cmd: CMD): { cmd: CMD; version: string; }; print(task: PrintTask): Promise; printPreview(task: PrintTask): Promise; getPrinters(): Promise; getPrinterConfig(printer: string): Promise; setPrinterConfig(config: PrinterConfig): Promise; notifyPrintResult(callback: (response: T) => void): void; getTaskStatus(taskID: string[]): Promise; getGlobalConfig(): Promise; setGlobalConfig(config: { notifyOnTaskFailure?: boolean | undefined; }): Promise; getAgentInfo(): Promise; } export {};