/**
 * Default Tool Registry Factory
 *
 * Creates a ToolRegistry pre-populated with all PIE framework tools.
 * Integrators can use this as a starting point and customize as needed.
 */
import { ToolRegistry } from "./ToolRegistry.js";
import type { ToolRegistration } from "./ToolRegistry.js";
import type { ToolModuleLoader } from "./ToolRegistry.js";
import { type ToolComponentFactory, type ToolComponentFactoryMap, type ToolTagMap } from "../tools/tool-tag-map.js";
import { DEFAULT_TOOL_PLACEMENT, PACKAGED_TOOL_PLACEMENT, SECTION_PLAYER_PREFERRED_TOOL_PLACEMENT } from "./tool-config-defaults.js";
export interface DefaultToolRegistryOptions {
    /**
     * Override default tool registrations by toolId.
     * This is the highest-precedence extension point.
     */
    overrides?: Partial<Record<string, ToolRegistration>>;
    /**
     * Override default component tag mapping used by built-in registrations.
     */
    toolTagMap?: Partial<ToolTagMap>;
    /**
     * Override component factory globally (all tools) or per tool.
     */
    toolComponentFactory?: ToolComponentFactory;
    toolComponentFactories?: Partial<ToolComponentFactoryMap>;
    /**
     * Optional lazy module loaders keyed by toolId.
     * Hosts can inject default loaders from an external package.
     */
    toolModuleLoaders?: Partial<Record<string, ToolModuleLoader>>;
    /**
     * Register packaged PIE tools by default.
     *
     * @default false
     */
    includePackagedTools?: boolean;
    /**
     * Restrict registration to specific packaged tool IDs.
     * Ignored when includePackagedTools is false.
     */
    toolIds?: string[];
}
/**
 * Create a tool registry.
 *
 * By default, this creates an empty registry so hosts can explicitly opt in.
 * For convenience, pass { includePackagedTools: true } to register all packaged tools,
 * or use createPackagedToolRegistry().
 *
 * @returns ToolRegistry with all default tools
 */
export declare function createDefaultToolRegistry(options?: DefaultToolRegistryOptions): ToolRegistry;
export interface RegisterPackagedToolsOptions {
    toolIds?: string[];
    applyOverrides?: (registration: ToolRegistration) => ToolRegistration;
}
/**
 * Register packaged PIE tools onto an existing registry.
 */
export declare function registerPackagedTools(registry: ToolRegistry, options?: RegisterPackagedToolsOptions): void;
/**
 * Convenience factory that registers all packaged PIE tools.
 */
export declare function createPackagedToolRegistry(options?: Omit<DefaultToolRegistryOptions, "includePackagedTools">): ToolRegistry;
/**
 * Default tool placement configuration
 *
 * Defines which tools appear at which levels by default.
 * Integrators can override this configuration.
 *
 * Categories:
 * - Global tools: theme (assessment/section level)
 * - Context-smart: calculator, graph, periodicTable (item/element, auto-detect)
 * - Reading aids: textToSpeech, lineReader, annotationToolbar (where text exists)
 * - Interaction-specific: answerEliminator (choice questions), highlighter (text)
 * - Measurement: ruler, protractor (element level, diagram/geometry)
 */
export { DEFAULT_TOOL_PLACEMENT };
export { PACKAGED_TOOL_PLACEMENT };
export { SECTION_PLAYER_PREFERRED_TOOL_PLACEMENT };
/**
 * Tool priority order for rendering
 * Tools will be rendered in this order when multiple tools are visible
 */
export declare const DEFAULT_TOOL_ORDER: readonly ["theme", "calculator", "textToSpeech", "lineReader", "annotationToolbar", "highlighter", "answerEliminator", "ruler", "protractor", "graph", "periodicTable"];
