import { Type } from '@nestjs/common';
import { IEvent, IEventHandler } from '@nestjs/cqrs/dist/interfaces';
declare const INTERNAL_EVENTS: unique symbol;
declare const IS_AUTO_COMMIT_ENABLED: unique symbol;
export declare abstract class AggregateRoot<EventBase extends IEvent = IEvent> {
    [IS_AUTO_COMMIT_ENABLED]: boolean;
    private readonly [INTERNAL_EVENTS];
    get autoCommit(): boolean;
    set autoCommit(value: boolean);
    publish<T extends EventBase = EventBase>(_event: T): Promise<void>;
    publishAll<T extends EventBase = EventBase>(_events: T[]): Promise<void>;
    commit(): Promise<void>;
    uncommit(): void;
    getUncommittedEvents(): EventBase[];
    apply<T extends EventBase = EventBase>(event: T, isFromHistory?: boolean): void;
    loadFromHistory(history: EventBase[]): void;
    protected getEventHandler<T extends EventBase = EventBase>(event: T): Type<IEventHandler> | undefined;
    protected getEventName(event: any): string;
}
export {};
