import { Guid, IEquatable } from '@dolittle/rudiments';
import { Constructor } from '@dolittle/types';
import { IClientBuildResults, IModelBuilder } from '@dolittle/sdk.common';
import { IEventTypes, ScopeId } from '@dolittle/sdk.events';
import { IProjection } from '../IProjection';
import { ProjectionId } from '../ProjectionId';
import { IProjectionBuilder } from './IProjectionBuilder';
import { IProjectionBuilderForReadModel } from './IProjectionBuilderForReadModel';
/**
 * Represents an implementation of {@link IProjectionBuilder}.
 */
export declare class ProjectionBuilder extends IProjectionBuilder implements IEquatable {
    private readonly _projectionId;
    private readonly _modelBuilder;
    private _scopeId;
    private _readModelTypeOrInstance?;
    private _builder?;
    /**
     * Initializes a new instance of {@link ProjectionBuilder}.
     * @param {ProjectionId} _projectionId - The unique identifier of the projection to build for.
     * @param {IModelBuilder} _modelBuilder - For binding this projection builder and read model to its identifier.
     */
    constructor(_projectionId: ProjectionId, _modelBuilder: IModelBuilder);
    /** @inheritdoc */
    inScope(scopeId: string | ScopeId | Guid): IProjectionBuilder;
    /** @inheritdoc */
    forReadModel<T>(typeOrInstance: T | Constructor<T>): IProjectionBuilderForReadModel<T>;
    /** @inheritdoc */
    equals(other: any): boolean;
    /**
     * Builds the projection.
     * @param {IEventTypes} eventTypes - For event types resolution.
     * @param {IClientBuildResults} results - For keeping track of build results.
     * @returns {IProjection | undefined} The built projection if successful.
     */
    build(eventTypes: IEventTypes, results: IClientBuildResults): IProjection<any> | undefined;
}
//# sourceMappingURL=ProjectionBuilder.d.ts.map