import { Logger } from 'winston';
import { Constructor } from '@dolittle/types';
import { EventSourceIdLike, IEventStore, IEventTypes } from '@dolittle/sdk.events';
import { AggregateRoot } from '../AggregateRoot';
import { IAggregateOf } from '../IAggregateOf';
import { IAggregateRootTypes } from '../IAggregateRootTypes';
import { IAggregateRootOperations } from '../IAggregateRootOperations';
import { IAggregates } from './IAggregates';
/**
 * Represents an implementation of {@link IAggregates}.
 */
export declare class Aggregates extends IAggregates {
    private readonly _aggregateRootTypes;
    private readonly _eventTypes;
    private readonly _eventStore;
    private readonly _logger;
    /**
     * Initialises a new instance of the {@link Aggregates} class.
     * @param {IAggregateRootTypes} _aggregateRootTypes - For aggregate root types resolution.
     * @param {IEventTypes} _eventTypes - For event types resolution.
     * @param {IEventStore} _eventStore - The event store to use to fetch committed aggregate events.
     * @param {Logger} _logger - For logging.
     */
    constructor(_aggregateRootTypes: IAggregateRootTypes, _eventTypes: IEventTypes, _eventStore: IEventStore, _logger: Logger);
    /** @inheritdoc */
    get<TAggregateRoot extends AggregateRoot>(type: Constructor<TAggregateRoot>, eventSourceId: EventSourceIdLike): IAggregateRootOperations<TAggregateRoot>;
    /** @inheritdoc */
    of<TAggregateRoot extends AggregateRoot>(type: Constructor<TAggregateRoot>): IAggregateOf<TAggregateRoot>;
}
//# sourceMappingURL=Aggregates.d.ts.map