import { IndexConfiguration, IndexDefinition } from "./IndexDefinition.js";
import { FieldIndexing, FieldStorage, FieldTermVector, IndexLockMode, IndexPriority, IndexState } from "./Enums.js";
import { SpatialOptions } from "./Spatial.js";
import { DocumentConventions } from "../Conventions/DocumentConventions.js";
import { IndexDeploymentMode } from "./IndexDeploymentMode.js";
import { AdditionalAssembly } from "./AdditionalAssembly.js";
import { FieldVectorOptions } from "../Queries/VectorSearch/VectorSearchOptions.js";
export declare abstract class AbstractIndexDefinitionBuilder<TIndexDefinition extends IndexDefinition> {
    protected readonly _indexName: string;
    reduce: string;
    storesStrings: {
        [key: string]: FieldStorage;
    };
    indexesStrings: {
        [key: string]: FieldIndexing;
    };
    analyzersStrings: {
        [key: string]: string;
    };
    suggestionsOptions: Set<string>;
    termVectorsStrings: {
        [key: string]: FieldTermVector;
    };
    spatialIndexesStrings: {
        [key: string]: SpatialOptions;
    };
    vectorFieldStrings: {
        [key: string]: FieldVectorOptions;
    };
    lockMode: IndexLockMode;
    priority: IndexPriority;
    state: IndexState;
    compoundFieldsStrings: string[][];
    deploymentMode: IndexDeploymentMode;
    outputReduceToCollection: string;
    patternForOutputReduceToCollectionReferences: string;
    patternReferencesCollectionName: string;
    additionalSources: Record<string, string>;
    additionalAssemblies: AdditionalAssembly[];
    configuration: IndexConfiguration;
    protected constructor(indexName: string);
    toIndexDefinition(conventions: DocumentConventions, validateMap?: boolean): TIndexDefinition;
    protected abstract _newIndexDefinition(): TIndexDefinition;
    protected abstract _toIndexDefinition(indexDefinition: TIndexDefinition, conventions: DocumentConventions): any;
    private _applyValues;
}
//# sourceMappingURL=AbstractIndexDefinitionBuilder.d.ts.map