import { RabbitMQConfig, QueueOptions, PublishOptions, RabbitMQInstance, ConnectionConfig, PublisherQueueOptions } from './types';
export declare class RabbitMQ implements RabbitMQInstance {
    private config;
    private connectionManager;
    private publisher;
    private consumer?;
    private queueManager?;
    private gracefulShutdown;
    private registeredQueues;
    private isInitialized;
    private mode;
    constructor(config: RabbitMQConfig);
    /**
     * Register queue consumer
     */
    registerQueue(options: QueueOptions): Promise<void>;
    /**
     * Publish a message to queue
     */
    publish(queueName: string, data: any, options?: PublishOptions): Promise<void>;
    /**
     * Check if connected
     */
    isConnected(): boolean;
    /**
     * Get connection info
     */
    getConnectionInfo(): ConnectionConfig | null;
    /**
     * Publisher-specific queue assertion
     */
    assertQueue(options: PublisherQueueOptions): Promise<void>;
    /**
     * Check queue status
     */
    checkQueue(queueName: string): Promise<{
        messageCount: number;
        consumerCount: number;
    }>;
    /**
     * Publish to exchange
     */
    publishToExchange(exchange: string, routingKey: string, data: any, options?: PublishOptions): Promise<void>;
    /**
     * Flush any pending batches
     */
    flush(): Promise<void>;
    /**
     * Close connection
     */
    close(): Promise<void>;
    /**
     * Ensure connection is established
     */
    private ensureConnection;
    /**
     * Setup reconnection handler for registered queues
     */
    private setupReconnectionHandler;
}
//# sourceMappingURL=rabbitmq.d.ts.map