import { AggregateRoot } from '../../../api/tactical/aggregate/aggregate-root'; import { Command } from '../../../api/command/command'; import { CommandHandler } from './command.handler'; import { AggregateId } from '../../../api/tactical/aggregate/aggregate-id'; export declare function commandHandlerFactory, C extends Command>(commandHandler: CommandHandler, aggregateName: string): CommandHandlerImpl; export declare class CommandHandlerImpl, C extends Command> { private readonly commandHandler; private readonly aggregateType; private readonly aggregateRepositoryArchive; private readonly domainEventPublisher; private readonly commandType; constructor(commandHandler: CommandHandler, aggregateType: string); publishDomainEvents(aggregate: A, command: C): void; handleCommand(command: C): void; forCommand(command: C): boolean; private createCommandInstance; }