import { IClientBuildResults } from '@dolittle/sdk.common';
import { Constructor } from '@dolittle/types';
import { CollectionNameLike } from '../../Copies/MongoDB/CollectionName';
import { Conversion } from '../../Copies/MongoDB/Conversion';
import { MongoDBCopies } from '../../Copies/MongoDB/MongoDBCopies';
import { ProjectionId } from '../../ProjectionId';
import { ReadModelField } from './../ReadModelField';
import { ICopyToMongoDBBuilder } from './ICopyToMongoDBBuilder';
/**
 * Represents an implementation of {@link ICopyToMongoDBBuilder}.
 * @template T The type of the projection read model.
 */
export declare class CopyToMongoDBBuilder<T> extends ICopyToMongoDBBuilder<T> {
    private readonly _projectionId;
    private readonly _readModelTypeOrInstance;
    private _collectionName?;
    private readonly _conversions;
    /**
     * Initialises a new instance of the {@link CopyToMongoDBBuilder} class.
     * @param {ProjectionId} _projectionId - The unique identifier of the projection to build for.
     * @param {Constructor<T> | T} _readModelTypeOrInstance - The read model type.
     */
    constructor(_projectionId: ProjectionId, _readModelTypeOrInstance: Constructor<T> | T);
    /** @inheritdoc */
    toCollection(collectionName: CollectionNameLike): ICopyToMongoDBBuilder<T>;
    /** @inheritdoc */
    withConversion(field: ReadModelField<T>, to: Conversion): ICopyToMongoDBBuilder<T>;
    /**
     * Builds the {@link MongoDBCopies} specification configured by this builder.
     * @param {IClientBuildResults} results - For keeping track of build results.
     * @returns {MongoDBCopies} The built {@link MongoDBCopies} specification.
     */
    build(results: IClientBuildResults): MongoDBCopies | undefined;
    private inferCollectionNameFromType;
    private buildPropertyConversions;
    private makeConversionWithParents;
    private convertPropertyConversions;
}
//# sourceMappingURL=CopyToMongoDBBuilder.d.ts.map