import { AppObject } from "@vived/core";
import { AppObjectEntity } from "@vived/core";
import { AppObjectRepo } from "@vived/core";
import { HotKey, ToolEntity } from "./ToolEntity";
export interface ToolData {
    toolType: string;
    isDefault: boolean;
    label: string;
    shortcutLabel: string;
    hotkeys: HotKey[];
}
export declare abstract class ToolRepository extends AppObjectEntity {
    static readonly type = "TOOL_REPOSITORY";
    abstract get activeTool(): ToolEntity | undefined;
    abstract get allTools(): ToolEntity[];
    abstract defaultToolType: string | undefined;
    abstract makeToolFromData(toolData: ToolData): ToolEntity;
    abstract getTool(toolType: string): ToolEntity | undefined;
    abstract getToolForHotkey(hotkey: HotKey): ToolEntity | undefined;
    abstract setDefaultToolActive(): void;
    abstract triggerTool(toolType: string): void;
    abstract toolFactory: (id: string) => ToolEntity;
    abstract makeTool(id: string): ToolEntity;
    static get: (appObjects: AppObjectRepo) => ToolRepository | undefined;
}
export declare function makeToolRepo(appObject: AppObject): ToolRepository;
//# sourceMappingURL=ToolRepository.d.ts.map