import { QueueClient, QueueSendMessageResponse } from "@azure/storage-queue";
export interface QueueManagedIdentityOptions {
    accountName: string;
    managedIdentityClientId?: string;
}
/**
 * @class QueueStorage - A class that contains azure queue storage helpers
 * Supports both connection string and managed identity authentication
 */
export declare class QueueStorage {
    private queueServiceClient;
    constructor(connectionString: string);
    constructor(managedIdentityOptions: QueueManagedIdentityOptions);
    /**
     * Gets a QueueClient for a specific queue
     * @param {string} queueName - The name of the queue
     * @returns {QueueClient} - A QueueClient instance for the specified queue
     */
    getQueueClient(queueName: string): QueueClient;
    /**
     * Sends a message to the specified queue
     * @param {string} queueName - The name of the queue
     * @param {string | object} message - The message to send (string or object that will be JSON stringified)
     * @param {boolean} base64Encode - Whether to base64 encode the message (default: true)
     * @returns {Promise<QueueSendMessageResponse>} - The response from the queue operation
     * @throws {Error} If queue name or message is missing
     */
    sendMessage(queueName: string, message: string | object, base64Encode?: boolean): Promise<QueueSendMessageResponse>;
    /**
     * Receives messages from the specified queue
     * @param {string} queueName - The name of the queue
     * @param {number} maxMessages - Maximum number of messages to receive (1-32, default: 1)
     * @param {number} visibilityTimeout - Visibility timeout in seconds (default: 30)
     * @returns {Promise<any>} - The received messages
     * @throws {Error} If queue name is missing
     */
    receiveMessages(queueName: string, maxMessages?: number, visibilityTimeout?: number): Promise<any>;
    /**
     * Deletes a message from the specified queue
     * @param {string} queueName - The name of the queue
     * @param {string} messageId - The message ID
     * @param {string} popReceipt - The pop receipt from when the message was received
     * @returns {Promise<void>}
     * @throws {Error} If queue name, message ID, or pop receipt is missing
     */
    deleteMessage(queueName: string, messageId: string, popReceipt: string): Promise<void>;
    /**
     * Peeks messages from the specified queue without removing them
     * @param {string} queueName - The name of the queue
     * @param {number} maxMessages - Maximum number of messages to peek (1-32, default: 1)
     * @returns {Promise<any>} - The peeked messages
     * @throws {Error} If queue name is missing
     */
    peekMessages(queueName: string, maxMessages?: number): Promise<any>;
    /**
     * Clears all messages from the specified queue
     * @param {string} queueName - The name of the queue
     * @returns {Promise<void>}
     * @throws {Error} If queue name is missing
     */
    clearMessages(queueName: string): Promise<void>;
    /**
     * Creates a queue if it doesn't exist
     * @param {string} queueName - The name of the queue to create
     * @returns {Promise<void>}
     * @throws {Error} If queue name is missing
     */
    createQueue(queueName: string): Promise<void>;
    /**
     * Deletes a queue
     * @param {string} queueName - The name of the queue to delete
     * @returns {Promise<void>}
     * @throws {Error} If queue name is missing
     */
    deleteQueue(queueName: string): Promise<void>;
    /**
     * Checks if a queue exists
     * @param {string} queueName - The name of the queue
     * @returns {Promise<boolean>} - True if the queue exists, false otherwise
     * @throws {Error} If queue name is missing
     */
    queueExists(queueName: string): Promise<boolean>;
    /**
     * Gets the approximate number of messages in a queue
     * @param {string} queueName - The name of the queue
     * @returns {Promise<number>} - The approximate message count
     * @throws {Error} If queue name is missing
     */
    getMessageCount(queueName: string): Promise<number>;
}
