/**
 * What it does.
 *
 * @param name - Parameter description.
 * @returns Type and description of the returned object.
 *
 * @example
 * ```
 * Write me later.
 * ```
 */
import { AggregateRoot } from "../domain/aggregate.root";
import { UniqueId } from "../domain/unique.id";
import { IDomainEvent } from "./event";
/**
 *
 *
 */
export interface Callback {
    callback(event: IDomainEvent): Promise<void>;
    eventName: string;
}
/**
 *
 */
export declare class Dispatcher {
    /**
     *
     */
    private static handlers;
    private static aggregates;
    /**
     *
     */
    private static dispatch;
    /**
     *
     */
    private static getAggregate;
    /**
     *
     */
    static clearHandlers(): void;
    /**
     *
     */
    static addAggregate(aggregate: AggregateRoot<any>): void;
    /**
     *
     */
    static removeAggregate(aggregate: AggregateRoot<any>): void;
    /**
     *
     */
    static register(cb: Callback): void;
    /**
     *
     */
    static dispatchAggregateEvents(id: UniqueId): void;
}
