/*!
 * @package @coolgk/utils
 * @version 3.1.4
 * @link https://github.com/coolgk/node-utils
 * @license MIT
 * @author Daniel Gong <daniel.k.gong@gmail.com>
 *
 * Copyright (c) 2017 Daniel Gong <daniel.k.gong@gmail.com>. All rights reserved.
 * Licensed under the MIT License.
 */

/// <reference types="uuid" />
/*!
 *  Copyright (c) 2017 Daniel Gong <daniel.k.gong@gmail.com>. All rights reserved.
 *  Licensed under the MIT License.
 */
import { connect, Message, Replies } from 'amqplib';
import { v1 } from 'uuid';
export interface IAmqpConfig {
    readonly url: string;
    readonly connect?: typeof connect;
    readonly uuid?: typeof v1;
    readonly sslPem?: string;
    readonly sslCa?: string;
    readonly sslPass?: string;
}
export interface IConsumeConfig {
    routes?: string | string[];
    queueName?: string;
    exchangeName?: string;
    priority?: number;
    prefetch?: number;
    exchangeType?: string;
    fallbackExchange?: string;
}
export interface IMessage {
    rawMessage: Message | null;
    message: any;
}
export interface IResponseMessage {
    rawResponseMessage: Message | null;
    responseMessage: any;
}
export declare class Amqp {
    private _url;
    private _sslPem;
    private _sslCa;
    private _sslPass;
    private _uuid;
    private _connect;
    private _channel;
    private _connection;
    constructor(options: IAmqpConfig);
    closeConnection(): void;
    publish(message: any, callback?: (message: IResponseMessage) => any, {routes, exchangeName}?: {
        routes?: string;
        exchangeName?: string;
    }): Promise<boolean[]>;
    consume(callback: (message: IMessage) => any, {routes, queueName, exchangeName, exchangeType, priority, prefetch, fallbackExchange}?: IConsumeConfig): Promise<Replies.Consume[]>;
    getChannel(): any;
    private _publish(channel, exchangeName, routes, message, options);
}
export default Amqp;
