import 'colors';
import { Transform, TransformCallback } from 'stream';
import PeanarApp, { IPeanarRequest } from './app';
import { IDelivery } from 'ts-amqp/dist/interfaces/Basic';
import PeanarJob from './job';
import CloseReason from 'ts-amqp/dist/utils/CloseReason';
import { Channel } from 'amqplib';
export type IWorkerResult = {
    status: 'SUCCESS';
    job: PeanarJob;
    result: unknown;
} | {
    status: 'FAILURE';
    job: PeanarJob;
    error: unknown;
};
export interface IDeathInfo {
    count: bigint;
    reason: string;
    queue: string;
    time: bigint;
    exchange: string;
    'routing-keys': string[];
}
interface WorkerOptions {
    logger?: (msg: string) => void;
}
export default class PeanarWorker extends Transform {
    private app;
    private _channel;
    private queue;
    private n;
    private state;
    private activeJob?;
    private destroy_cb?;
    private _destroy_timeout?;
    private _shutdown_timeout;
    private _channel_lost;
    logger: (message?: any, ...optionalParams: any[]) => void;
    constructor(app: PeanarApp, channel: Channel, queue: string, options?: WorkerOptions);
    get channel(): Channel;
    set channel(ch: Channel);
    onChannelClosed: (err: CloseReason) => void;
    shutdown(timeout?: number): Promise<void>;
    _destroy(error: Error | null, callback: (error: Error | null) => void): void;
    log(msg: string): void;
    getJobDefinition(name: string): import("./app").IPeanarJobDefinition | undefined;
    _parseBody(body: Buffer): IPeanarRequest | null;
    private _getJob;
    private run;
    _transform(delivery: IDelivery, _encoding: string, cb: TransformCallback): void;
}
export {};
