import { ComProtocolConnectOptions, ComProtocolDisconnectOptions, ComProtocolSendOptions } from '@iotize/tap/protocol/api';
import { Observable, Subscription } from 'rxjs';
import { AbstractComProtocol } from './abstract-com-protocol';
/**
 *
 */
export declare abstract class QueueComProtocol extends AbstractComProtocol {
    _disconnect$?: Observable<any>;
    _connect$?: Observable<any>;
    _connectionSubscription?: Subscription;
    private _jobQueue;
    abstract _connect(options?: ComProtocolConnectOptions): Observable<any>;
    abstract _disconnect(options?: ComProtocolDisconnectOptions): Observable<any>;
    _send(data: Uint8Array, options: ComProtocolSendOptions): Observable<Uint8Array>;
    constructor();
    /**
     * Cancel pending requests
     */
    cancel(): void;
    /**
     *
     * @param data
     * @param options
     */
    send(data: Uint8Array, options?: ComProtocolSendOptions): Observable<Uint8Array>;
    /**
     * Connect with timeout
     *
     * If connect has already been called or is in progress / no further action
     *
     * @param options
     */
    connect(options?: ComProtocolConnectOptions): Observable<any>;
    disconnect(options?: ComProtocolDisconnectOptions): Observable<any>;
}
