import { IConnectionParams } from 'ts-amqp/dist/interfaces/Connection';
import ChannelPool from 'ts-amqp/dist/classes/ChannelPool';
import { IExchange } from 'ts-amqp/dist/interfaces/Exchange';
import { IQueue, IBinding } from 'ts-amqp/dist/interfaces/Queue';
import { IMessage } from 'ts-amqp/dist/interfaces/Basic';
interface IBrokerOptions {
    connection?: IConnectionParams;
    poolSize: number;
    prefetch?: number;
}
/**
 * Peanar's broker adapter
 */
export default class PeanarBroker {
    private config;
    private conn?;
    private _connectPromise?;
    pool?: ChannelPool;
    constructor(config: IBrokerOptions);
    private _connect;
    /**
     * Initializes adapter connection and channel
     */
    connect: () => Promise<void>;
    shutdown(): Promise<void>;
    queues(queues: IQueue[]): Promise<import("ts-amqp/dist/interfaces/Queue").IQueueDeclareResponse[]>;
    exchanges(exchanges: IExchange[]): Promise<void[]>;
    bindings(bindings: IBinding[]): Promise<void[]>;
    consume(queue: string): Promise<import("ts-amqp/dist/classes/Consumer").default>;
    consumeOver(queues: string[]): Promise<{
        queue: string;
        consumer: import("ts-amqp/dist/classes/Consumer").default;
    }>[];
    publish(message: IMessage<unknown>): Promise<boolean>;
}
export {};
