/** @packageDocumentation
 * @module Tools
 */
import { Id64String } from "@itwin/core-bentley";
import { PlanarClipMaskSettings } from "@itwin/core-common";
import { BeButtonEvent, ContextRealityModelState, EventHandled, HitDetail, LocateFilterStatus, LocateResponse, PrimitiveTool, ScreenViewport, Tool } from "@itwin/core-frontend";
/** Set Map Masking by selected models.
 * @beta
 */
export declare class SetMapHigherPriorityMasking extends Tool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    run(transparency: number, invert: boolean): Promise<boolean>;
    parseAndRun(...args: string[]): Promise<boolean>;
}
/** Unmask Mask.
 * @beta
 */
export declare class UnmaskMapTool extends Tool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    run(): Promise<boolean>;
}
/** Base class for the reality model planar masking tools.
 * @beta
 */
export declare abstract class PlanarMaskBaseTool extends PrimitiveTool {
    protected readonly _acceptedModelIds: Set<string>;
    protected readonly _acceptedSubCategoryIds: Set<string>;
    protected readonly _acceptedElementIds: Set<string>;
    protected _transparency: number;
    protected _useSelection: boolean;
    protected _invert: boolean;
    protected _targetMaskModel?: Id64String | ContextRealityModelState;
    requireWriteableTarget(): boolean;
    onPostInstall(): Promise<void>;
    onUnsuspend(): Promise<void>;
    private setupAndPromptForNextAction;
    protected targetModelRequired(): boolean;
    protected elementRequired(): boolean;
    protected allowSelection(): boolean;
    protected abstract showPrompt(): void;
    protected abstract createToolInstance(): PlanarMaskBaseTool;
    protected abstract applyMask(vp: ScreenViewport): void;
    private clearIds;
    exitTool(): Promise<void>;
    onRestartTool(): Promise<void>;
    parseAndRun(...args: string[]): Promise<boolean>;
    onCleanup(): Promise<void>;
    filterHit(hit: HitDetail, _out?: LocateResponse): Promise<LocateFilterStatus>;
    onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled>;
    protected createSubCategoryMask(): PlanarClipMaskSettings;
    protected createElementMask(option: "include" | "exclude"): PlanarClipMaskSettings;
    protected createModelMask(): PlanarClipMaskSettings;
    protected setRealityModelMask(vp: ScreenViewport, mask: PlanarClipMaskSettings): void;
}
/** Tool to mask background map by elements
 * @beta
 */
export declare class MaskBackgroundMapByElementTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask background map by excluded elements
 * @beta
 */
export declare class MaskBackgroundMapByExcludedElementTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask background map by SubCategories
 * @beta
 */
export declare class MaskBackgroundMapBySubCategoryTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected allowSelection(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask background map by geometric models
 * @beta
 */
export declare class MaskBackgroundMapByModelTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask reality model by elements
 * @beta
 */
export declare class MaskRealityModelByElementTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask reality model by excluded elements
 * @beta
 */
export declare class MaskRealityModelByExcludedElementTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask reality model by geometric models
 * @beta
 */
export declare class MaskRealityModelByModelTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask reality model by SubCategories
 * @beta
 */
export declare class MaskRealityModelBySubCategoryTool extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected allowSelection(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
}
/** Tool to mask reality model by higher priority models.
 * @beta
 */
export declare class SetHigherPriorityRealityModelMasking extends PlanarMaskBaseTool {
    static toolId: string;
    static get minArgs(): number;
    static get maxArgs(): number;
    protected targetModelRequired(): boolean;
    protected elementRequired(): boolean;
    private _priority;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
    parseAndRun(...args: string[]): Promise<boolean>;
}
/** Remove masks from reality model.
 * @beta
 */
export declare class UnmaskRealityModelTool extends PlanarMaskBaseTool {
    static toolId: string;
    protected targetModelRequired(): boolean;
    protected showPrompt(): void;
    protected createToolInstance(): PlanarMaskBaseTool;
    protected applyMask(vp: ScreenViewport): void;
    onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled>;
}
//# sourceMappingURL=PlanarMaskTools.d.ts.map