import { DynamicModule, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { QueueModuleOptions, QueueModuleAsyncOptions, NamedAMQPConnectionOptions, MultiConnectionQueueModuleOptions } from './interface';
import { QueueService } from './service';
import { ListenerExplorer } from './explorer';
export declare class QueueModule implements OnModuleInit, OnModuleDestroy {
    private readonly moduleOptions;
    private readonly queueService;
    private readonly listenerExplorer;
    private readonly moduleRef;
    private static readonly moduleDefinition;
    static forRoot(options: QueueModuleOptions): DynamicModule;
    static forRoot(connectionUri: string): DynamicModule;
    static forRoot(connectionUri: string, options: Omit<QueueModuleOptions, 'connectionUri'>): DynamicModule;
    static forRoot(connections: NamedAMQPConnectionOptions[], options?: MultiConnectionQueueModuleOptions): DynamicModule;
    static forRootAsync(options: QueueModuleAsyncOptions): DynamicModule;
    static forFeature(): DynamicModule;
    private static createAsyncProviders;
    private static createAsyncQueueModuleOptionsProvider;
    private static createAsyncAMQConnectionsOptionsProvider;
    /**
     * Creates a connection provider with the given name
     *
     * @param {string} connection Name of the connection
     *
     * @returns {Provider} Named Connection provider
     *
     * @private
     * @static
     */
    private static getConnectionProvider;
    private static getQueueModuleOptionsProvider;
    private static getAMQPConnectionOptionsProvider;
    private static getConnectionOptions;
    constructor(moduleOptions: QueueModuleOptions, queueService: QueueService, listenerExplorer: ListenerExplorer, moduleRef: ModuleRef);
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    private attachListeners;
}
