import { IPropagationStatus, PromiseDispatcherBase } from "ste-core";
import { IPromiseSimpleEventHandler } from "./IPromiseSimpleEventHandler";
import { IPromiseSimpleEvent } from "./IPromiseSimpleEvent";
/**
 * The dispatcher handles the storage of subsciptions and facilitates
 * subscription, unsubscription and dispatching of a simple event
 *
 * @export
 * @class PromiseSimpleEventDispatcher
 * @extends {PromiseDispatcherBase<IPromiseSimpleEventHandler<TArgs>>}
 * @implements {IPromiseSimpleEvent<TArgs>}
 * @template TArgs
 */
export declare class PromiseSimpleEventDispatcher<TArgs> extends PromiseDispatcherBase<IPromiseSimpleEventHandler<TArgs>> implements IPromiseSimpleEvent<TArgs> {
    /**
     * Creates a new SimpleEventDispatcher instance.
     */
    constructor();
    /**
     * Dispatches the event.
     * @param args The arguments object.
     * @returns {IPropagationStatus} The status of the dispatch.
     * @memberOf PromiseSimpleEventDispatcher
     */
    dispatch(args: TArgs): Promise<IPropagationStatus>;
    /**
     * Dispatches the event without waiting for it to complete.
     * @param args The argument object.
     * @memberOf PromiseSimpleEventDispatcher
     */
    dispatchAsync(args: TArgs): void;
    /**
     * Creates an event from the dispatcher. Will return the dispatcher
     * in a wrapper. This will prevent exposure of any dispatcher methods.
     */
    asEvent(): IPromiseSimpleEvent<TArgs>;
}
