import { AggregateId } from './tactical/aggregate/aggregate-id'; import { AggregateRoot } from './tactical/aggregate/aggregate-root'; import { Command } from './command/command'; import { CommandHandler } from '../domain/command/handler/command.handler'; import { AggregateFactory, AggregateRepository, Container, CreateAggregateCommandHandler, DomainEvent, DomainEventHandler, MultiDomainEventHandler } from '../../index'; export interface Type extends Function { new (...args: any[]): T; } export interface ApiProviders { registerProviders(container: Container): void; } export type AggregateDefinition, C extends Command> = { aggregateKey: string; createCommandHandler: Type>; factory: Type>; repository: Type>; }; export interface DomainProviders { defineAggregate, C extends Command>(): AggregateDefinition | null; registerKey(container: Container): string; registerProviders(container: Container): void; registerCommandHandlers, C extends Command>(): Array>>; registerDomainEventHandler>(): Array>>; registerMultiDomainEventHandler>(): Array>>; } export declare class DomainInitializer { private readonly api; private readonly domain; private readonly container; private initialized; constructor(api: ApiProviders, domain: DomainProviders); init(): void; private defineAggregate; private registerApiProviders; private registerDomainProviders; private registerCommandHandlers; private registerEventHandlers; private registerMultiEventHandlers; }