import { FabrixApp } from '@fabrix/fabrix';
import { FabrixGeneric, FabrixModel } from '@fabrix/fabrix/dist/common';
import { Promise } from 'bluebird';
import { BroadcastEvent } from './api/models';
import { Entry } from './Entry';
import { BroadcastAction, BroadcastOptions } from './Interface';
import { BroadcastEntity } from './BroadcastEntity';
import { Broadcast } from './Broadcast';
export declare class BroadcastProcess extends FabrixGeneric {
    event: BroadcastEvent;
    options: {
        [key: string]: any;
    };
    consistency: string;
    manager: {
        [key: string]: any;
    };
    broadcaster: Broadcast;
    message: any;
    isAcknowledged: boolean;
    isRedelivered: boolean;
    versions: number[];
    retries: number;
    processorModel: FabrixModel;
    private _id;
    constructor(app: FabrixApp, { event, options, consistency, message, manager, broadcaster }: {
        event: BroadcastEvent;
        options: BroadcastOptions;
        consistency?: string;
        message?: string;
        manager?: any;
        broadcaster?: Broadcast;
    });
    id: string;
    readonly name: string;
    run(): Promise<(BroadcastEvent | BroadcastAction | BroadcastOptions)[]>;
    request(req: any): Promise<any>;
    ack(): Promise<(BroadcastEvent | BroadcastAction | BroadcastOptions)[]>;
    nack(): Promise<(BroadcastEvent | BroadcastAction | BroadcastOptions)[]>;
    reject(): Promise<(BroadcastEvent | BroadcastAction | BroadcastOptions)[]>;
    interrupt(msg: any): Promise<any>;
    reply(msg: any): Promise<any>;
    finalize(): Promise<any>;
    entries(name: string): Entry;
    Sequelize(): any;
    mapSeries(...args: any[]): Promise<any>;
    readonly metadata: {
        channel: any;
        channel_session: any;
        user: any;
        device: any;
        application: any;
        causation_uuid: any;
        correlation_uuid: any;
        correlation_type: any;
        explain: any;
        ip: any;
    };
}
export declare class BroadcastProcessor extends BroadcastEntity {
    private _managers;
    constructor(app: FabrixApp);
    newProcessor(func: any, vals: any): BroadcastProcess;
    readonly managers: Map<string, string>;
    hasManager(name: any): boolean;
}
