import { Channel, ConsumeMessage } from 'amqplib';
import { QueueOptions } from '../rabbitmq.interfaces';
export declare enum MessageHandlerErrorBehavior {
    ACK = "ACK",
    NACK = "NACK",
    REQUEUE = "REQUEUE"
}
type BaseMessageErrorHandler<T extends ConsumeMessage | ConsumeMessage[]> = (channel: Channel, msg: T, error: any) => Promise<void> | void;
export type MessageErrorHandler = BaseMessageErrorHandler<ConsumeMessage>;
export type BatchMessageErrorHandler = BaseMessageErrorHandler<ConsumeMessage[]>;
export type LegacyMessageErrorHandler = BaseMessageErrorHandler<ConsumeMessage | ConsumeMessage[]>;
/**
 * An error handler that will ack the message which caused an error during processing
 */
export declare const ackErrorHandler: LegacyMessageErrorHandler;
/**
 * An error handler that will nack and requeue a message which created an error during processing
 */
export declare const requeueErrorHandler: LegacyMessageErrorHandler;
/**
 * An error handler that will nack a message which created an error during processing
 */
export declare const defaultNackErrorHandler: LegacyMessageErrorHandler;
export declare const getHandlerForLegacyBehavior: (behavior: MessageHandlerErrorBehavior) => LegacyMessageErrorHandler;
export type AssertQueueErrorHandler = (channel: Channel, queueName: string, queueOptions: QueueOptions | undefined, error: any) => Promise<string> | string;
/**
 * Just rethrows the error
 */
export declare const defaultAssertQueueErrorHandler: AssertQueueErrorHandler;
/**
 * Tries to delete the queue and to redeclare it with the provided options
 */
export declare const forceDeleteAssertQueueErrorHandler: AssertQueueErrorHandler;
export {};
//# sourceMappingURL=errorBehaviors.d.ts.map