import { MiddlewareChain } from './middlewareChain';
import { IMiddleware, EventSubscriptionCallback } from './interfaces';
export declare class Publisher<T = {}> {
    middlewareChain: MiddlewareChain<IMiddleware<T>, T>;
    listeners: Set<EventSubscriptionCallback>;
    handler: (item: T, original: T) => Promise<void>;
    constructor(handler: (item: T, original: T) => Promise<void>);
    publish(item: T): Promise<void>;
    cleanMiddlewares(): void;
    clone(): Publisher<T>;
    pushMiddleware(middleware: IMiddleware<T>): void;
    unshiftMiddleware(middleware: IMiddleware<T>): void;
    pushMiddlewareAndKeepLast(middleware: IMiddleware<T>, force?: boolean): void;
    unshiftMiddlewareAndKeepFirst(middleware: IMiddleware<T>, force?: boolean): void;
}
