import { Options, Replies } from 'amqplib';
export interface RabbitMQConfig {
    socketOptions?: any;
    uri: Options.Connect | string;
}
export declare class RabbitMQConnector {
    private channel?;
    private config;
    private connection?;
    constructor(config: RabbitMQConfig);
    /**
     * Connects to RabbitMQ and creates a channel.
     */
    connect(): Promise<void>;
    /**
   * Disconnects from RabbitMQ.
   */
    disconnect(): Promise<void>;
    /**
     * Publishes a message to a queue.
     */
    publish(queue: string, message: Buffer | string, options?: Options.Publish): Promise<Replies.Empty>;
    /**
     * Subscribes to a queue and processes messages.
     */
    subscribe(queue: string, callback: (message: Buffer | string) => void): Promise<void>;
}
/**
 * Singleton class for RabbitMQConnector.
 */
declare class RabbitMQService extends RabbitMQConnector {
    private static _instance;
    private constructor();
    static getInstance(): Promise<RabbitMQService>;
}
export declare const rabbitMQ: RabbitMQService;
export {};
