import { Observable, Subject } from "rxjs";
import { PrintEvent, PrintJob } from "../models";
import * as SocketIOClient from 'socket.io-client';
import Socket = SocketIOClient.Socket;
import { ManagerOptions } from "socket.io-client/build/esm/manager";
import { SocketOptions } from "socket.io-client/build/esm/socket";
import * as i0 from "@angular/core";
export type ConnectionData = {
    host?: string;
    path?: string;
    token?: string;
};
type Printable = {
    jobId: number;
    data: string;
};
export type Connection = {
    id: string;
    socket: Socket;
    event$: Subject<PrintEvent>;
    jobs: Map<number, PrintJob[]>;
    printables: Printable[];
};
export declare class VisaPrintService {
    private _connections;
    private static _connectionCounter;
    private _iframe;
    private _pdfUrl;
    private _pdfDidOpen;
    connect(data: ConnectionData, connectionOptions?: Partial<ManagerOptions & SocketOptions>): Observable<PrintEvent>;
    disconnect(connectionId: string): void;
    enablePrinting(connectionId: string): void;
    disablePrinting(connectionId: string): void;
    openPrintable(connectionId: string, jobId: number): void;
    private initialiseReceiver;
    private handlePrintJob;
    private processJob;
    private openPDF;
    static ɵfac: i0.ɵɵFactoryDeclaration<VisaPrintService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<VisaPrintService>;
}
export {};
