import type { Connection } from './connection';
export declare class MessageQueue {
    private connection;
    queue: [string, string][];
    private conn;
    log: any;
    queueCallbackChars: Record<string, Function[]>;
    callbackLocks: Record<string, {
        queueLock: boolean;
        queueLockDate: number | null;
        message: string | undefined;
    }>;
    constructor(connection: Connection);
    /**
     * Starts periodic checking and processing of the queue.
     * Releases locks and processes messages as needed.
     */
    private startQueueCheck;
    /**
     * Processes the first item in the queue, sending the message if not locked.
     */
    processQueue(): Promise<void>;
    /**
     * Adds a message to the queue with optional callback characters and a callback function.
     * @param message - The message to send
     * @param callbackChars - The callback character string to track
     * @param callback - The function to execute when the response is received
     */
    enqueue(message: string, callbackChars?: string, callback?: Function): void;
    /**
     * Clears the entire queue and resets all locks and callbacks.
     */
    clearQueue(): void;
    /**
     * Removes all callbacks associated with a specific callback character key.
     * @param callbackKey - The callback key to clear
     * @param callback - The specific callback to remove
     */
    removeCallbackForKey(callbackKey: string): void;
    /**
     * Retrieves all callback keys currently in the queueCallbackChars map.
     * @returns {string[]} - An array of callback keys
     */
    getCallbackKeys(): string[];
    /**
     * Retrieves all callbacks associated with a specific callback key.
     * @param callbackKey - The key to retrieve callbacks for
     * @returns {Function[]} - An array of callbacks
     */
    getCallbacksForKey(callbackKey: string): Function[];
}
//# sourceMappingURL=messageQueue.d.ts.map