import { VoxelPickResult } from "Voxels/Interaction/VoxelPickResult"; import { TypedEventTarget } from "../../Util/TypedEventTarget"; import { VoxelBuildSpace } from "../VoxelBuildSpace"; type ToolOptionBase = { cateogry: string; property: string; name: string; } & Data; export type ToolOption = ToolOptionBase<{ type: "string"; options: [name: string, value: any][]; }> | ToolOptionBase<{ type: "number"; min: number; max: number; }>; export type ToolOptionsData = ToolOption[]; export declare abstract class BuilderToolBase> extends TypedEventTarget { space: VoxelBuildSpace; rayProviderIndex: number; protected _lastPicked: VoxelPickResult | null; get picked(): Readonly | null; constructor(space: VoxelBuildSpace); protected _options: ToolOptionsData; protected _optionsMap: Map; protected _categoryMap: Map>; protected processOptions(data: ToolOptionsData): void; getOptions(): ToolOptionsData; getOptionCategories(): [string, Set][]; abstract getOptionValue(id: string): any; getOptionData(id: string): ToolOption | undefined; optionInCategory(option: string, cateogry: string): boolean; abstract getCurrentOptions(): ToolOptionsData; abstract updateOption(property: string, value: any): void; abstract cancel(): void; abstract use(...args: any): Promise; abstract update(...args: any): Promise; } export {};