import { AddTransaction, Transaction, Transactions } from '../interface/Interface';
import { Listener } from '../modules/Listener';
import { Time, Timer } from '..';
import { ConnectionStatus, TransactionType } from '../enum/Enum';
import { WebSocketWrapper } from '../modules/WebSocketWrapper';
export declare class Queue extends Listener {
    private _status;
    get status(): ConnectionStatus;
    set status(status: ConnectionStatus);
    transactions: Transactions;
    lastReceivedMessage: Time | null;
    private type;
    private messageQueues;
    private _transactionIdIncrement;
    private messagesElapsedTime;
    private messageSender;
    private rateLimit;
    protected openTimeout: Timer;
    protected WebSocket: WebSocketWrapper;
    private get queueSize();
    constructor(rateLimit: number, type: TransactionType);
    stopTimer(): void;
    private addQueu;
    private addElapsedTime;
    private isRateLimitReached;
    protected resetMessageTube(): void;
    createTransactionId(): string;
    protected addTransaction(newTransaction: AddTransaction): Transaction<null, null>;
    rejectOldTransactions(): void;
    removeOldTransactions(): {
        removed: number;
    };
    private sendJSON;
    protected resolveTransaction(returnData: any, time: Time, transaction: Transaction<any, any>): void;
    protected rejectTransaction(json: {
        code: string;
        explain: string;
    }, transaction: Transaction<any, any>, interrupted?: boolean, received?: Time): void;
    protected sendMessage(transaction: Transaction<any, any>, addQueu: boolean): boolean;
    private callCleanQueuTimeout;
    private tryCleanQueue;
    isQueueContains(command: string): boolean;
}
