import "reflect-metadata";
import { RootMap } from "../../apis/codiac-api/contracts";
import { CommandBaseExec, IEnterpriseEntity } from "../../command-base-exec";
import { AtLeast } from "@codiac.io/codiac-common/contracts";
import { DocumentData } from "flexsearch";
export interface SnapShotData extends DocumentData {
    id: string;
    version: string;
    date: string;
    cabinets: string[];
    tags: string[];
    ownerTags: {
        id: string;
        name: string;
    }[];
}
export interface Item {
    [key: string]: any;
}
export type SnapShotDataFilter = {
    expr: object;
    input: string[];
};
export type SnapShotTagInfo = {
    filters?: {
        cabinets?: SnapShotDataFilter;
        dates?: SnapShotDataFilter;
        versions?: SnapShotDataFilter;
        tags?: SnapShotDataFilter;
    };
    silent?: boolean;
    pageSize?: number;
    toScript?: {
        enabled: boolean;
        addTags?: Set<string>;
        removeTags?: Set<string>;
        snapShotData?: SnapShotData[];
    };
} & Pick<SnapShotTagPiped, "add" | "remove"> & IEnterpriseEntity;
export interface SnapShotTagPiped {
    filters?: {
        cabinets?: string[];
        dates?: string[];
        versions?: string[];
        tags?: string[];
    };
    add?: string[];
    remove?: string[];
}
export default class SnapshotTags extends CommandBaseExec<SnapShotTagInfo> {
    static hidden: boolean;
    static description: string;
    static examples: string[];
    static flags: {
        filterCabinets: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        filterDates: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        filterVersions: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        filterTags: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        addTags: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        removeTags: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
        toScript: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        "to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        pageSize: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
    };
    static args: {};
    private indexedSnapShots;
    captureArgs(): Promise<[Partial<SnapShotTagInfo>, boolean]>;
    protected runAsync(): Promise<void>;
    buildCandidate_silently(partial: AtLeast<SnapShotTagInfo, "enterprise">, rootMap: RootMap): Promise<SnapShotTagInfo | undefined>;
    buildCandidate_interactively(partial: AtLeast<SnapShotTagInfo, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<SnapShotTagInfo | undefined>;
    buildCommandString(candidate: SnapShotTagInfo, cmd: string[]): string[];
    executeTask(candidate: SnapShotTagInfo): Promise<void>;
    private bulkManageTags;
    private bulkAddTag;
    private addTags;
    private bulkRemoveTag;
    private checkForTags;
    private removeTags;
    private multiSelect;
    private multiSelectInstructions;
    private getData;
    private loadIndexed;
    private getOptions;
    private getCachedStore;
    private reduceByField;
    private toInQuery;
    private clearScreen;
}
