import { IndexLockMode, IndexType } from "./Enums.js";
import { IndexFieldOptions } from "./IndexFieldOptions.js";
import { DocumentConventions } from "../Conventions/DocumentConventions.js";
import { AbstractIndexDefinitionBuilder } from "./AbstractIndexDefinitionBuilder.js";
import { IndexSourceType } from "./IndexSourceType.js";
import { AdditionalAssembly } from "./AdditionalAssembly.js";
import { IndexDeploymentMode } from "./IndexDeploymentMode.js";
import { IndexDefinitionBase } from "./IndexDefinitionBase.js";
import { ArchivedDataProcessingBehavior } from "../DataArchival/ArchivedDataProcessingBehavior.js";
export interface IndexConfiguration {
    [key: string]: string;
}
export declare class IndexDefinition extends IndexDefinitionBase {
    /**
     * Index lock mode:
     * - Unlock - all index definition changes acceptable
     * - LockedIgnore - all index definition changes will be ignored, only log entry will be created
     * - LockedError - all index definition changes will raise exception
     */
    lockMode: IndexLockMode;
    indexType: IndexType;
    additionalSources: {
        [key: string]: string;
    };
    compoundFields: string[][];
    additionalAssemblies: AdditionalAssembly[];
    maps: Set<string>;
    reduce: string;
    fields: {
        [fieldName: string]: IndexFieldOptions;
    };
    private _indexSourceType;
    archivedDataProcessingBehavior: ArchivedDataProcessingBehavior;
    configuration: IndexConfiguration;
    outputReduceToCollection: string;
    reduceOutputIndex: number;
    patternForOutputReduceToCollectionReferences: string;
    patternReferencesCollectionName: string;
    deploymentMode: IndexDeploymentMode;
    toString(): string;
    detectStaticIndexSourceType(): IndexSourceType;
    get sourceType(): IndexSourceType;
    set sourceType(value: IndexSourceType);
    get type(): IndexType;
    set type(indexType: IndexType);
    detectStaticIndexType(): IndexType;
}
export declare class IndexDefinitionBuilder extends AbstractIndexDefinitionBuilder<IndexDefinition> {
    map: string;
    archivedDataProcessingBehavior: ArchivedDataProcessingBehavior;
    constructor(indexName?: string);
    protected _newIndexDefinition(): IndexDefinition;
    toIndexDefinition(conventions: DocumentConventions, validateMap?: boolean): IndexDefinition;
    protected _toIndexDefinition(indexDefinition: IndexDefinition, conventions: DocumentConventions): void;
}
//# sourceMappingURL=IndexDefinition.d.ts.map