import { Command, CommandBus, CommandHandler, Disposable, EmittableCommandBus, Event, EventBus, ExecuteActionOptions, ObservableCommandBus, Removable, Result } from "@tmorin/ceb-messaging-core";
/**
 * The symbol used to register {@link SimpleCommandBus}.
 */
export declare const SimpleCommandBusSymbol: unique symbol;
export declare class SimpleCommandBus implements CommandBus, Disposable {
    private readonly eventBus;
    private readonly emitter;
    private readonly handlers;
    constructor(eventBus: EventBus, emitter: EmittableCommandBus, handlers?: Map<string, CommandHandler<any, any, any>>);
    get observer(): ObservableCommandBus;
    execute<R extends Result = Result, C extends Command = Command>(command: C, options?: Partial<ExecuteActionOptions>): Promise<R>;
    executeAndForget<C extends Command = Command>(command: C): void;
    handle<C extends Command = Command, R extends Result = Result, Es extends Array<Event> = []>(commandType: string, handler: CommandHandler<C, R, Es>): Removable;
    dispose(): Promise<void>;
    private resolveHandler;
    private processHandlerOutput;
}
