import { Guid } from '@cashfarm/lang';
import { IEntity, Entity } from './entity';
import { IDomainEvent } from './domainEvent';
import { Identity } from './identity';
export interface IAggregateRoot<TId extends Identity<any> | Guid> extends IEntity<TId> {
    readonly id: TId;
}
/**
 * Base implementation of an aggregate root.
 *
 * @export
 * @class AggregateRoot
 * @template TId
 */
export declare abstract class AggregateRoot<TId extends Identity<any> | Guid> extends Entity<TId> implements IAggregateRoot<TId> {
    protected _events: IDomainEvent[];
}
