/**
 * Action Executor Registry
 *
 * Extensible registry that maps action kinds to their executor functions.
 * Apps can register custom executors at runtime.
 *
 * Core app executors are imported from their respective app packages.
 */
import type { ZodSchema } from 'zod';
import type { ActionExecutor, ActionKind, ActionStep, ValidationResult } from '../types';
/**
 * Registration entry for an executor.
 */
export interface ExecutorRegistration {
    kind: string;
    executor: ActionExecutor<any>;
    schema?: ZodSchema;
    source: string;
    isBuiltIn: boolean;
}
/**
 * Extensible registry for action executors.
 *
 * Core executors (setText, highlight, etc.) are registered synchronously
 * at construction time for immediate availability - no async loading.
 *
 * External app executors are registered when apps activate.
 */
export declare class ExecutorRegistry {
    private executors;
    /**
     * Constructor - registers core executors synchronously.
     * These are available IMMEDIATELY when the module loads,
     * enabling instant action execution without waiting for app activation.
     */
    constructor();
    /**
     * Register a core executor (synchronous, built-in, cannot be overridden).
     */
    private registerCore;
    /**
     * Register an executor for an action kind.
     *
     * @param kind - The action kind (e.g., "gamification:awardBadge")
     * @param executor - The executor function
     * @param schema - Optional Zod schema for validation
     * @param source - The source app ID (for tracking)
     * @param isBuiltIn - Whether this is from a built-in app (prevents override)
     */
    register(kind: string, executor: ActionExecutor<any>, schema?: ZodSchema, source?: string, isBuiltIn?: boolean): void;
    /**
     * Unregister an executor.
     *
     * @param kind - The action kind to unregister
     * @returns true if the executor was unregistered, false if not found or built-in
     */
    unregister(kind: string): boolean;
    /**
     * Unregister all executors from a specific source.
     *
     * @param source - The source app ID
     */
    unregisterBySource(source: string): void;
    /**
     * Get the executor for an action kind.
     */
    get(kind: string): ActionExecutor<ActionStep> | undefined;
    /**
     * Get the full registration for an action kind.
     */
    getRegistration(kind: string): ExecutorRegistration | undefined;
    /**
     * Check if an executor exists for a given action kind.
     */
    has(kind: string): boolean;
    /**
     * Validate an action using its registered schema.
     *
     * @param action - The action to validate
     * @returns Validation result
     */
    validate(action: unknown): ValidationResult;
    /**
     * List all registered action kinds.
     */
    list(): string[];
    /**
     * List all registrations.
     */
    listRegistrations(): ExecutorRegistration[];
    /**
     * Get all built-in action kinds.
     */
    getBuiltInKinds(): string[];
    /**
     * Get all custom action kinds.
     */
    getCustomKinds(): string[];
}
/**
 * Default singleton instance of ExecutorRegistry.
 */
export declare const executorRegistry: ExecutorRegistry;
/**
 * Get the executor for an action kind.
 * @deprecated Use executorRegistry.get() instead
 */
export declare function getExecutor(kind: ActionKind | string): ActionExecutor<ActionStep> | undefined;
/**
 * Check if an executor exists for a given action kind.
 * @deprecated Use executorRegistry.has() instead
 */
export declare function hasExecutor(kind: ActionKind | string): boolean;
export { executeAddClass, executeInsertHtml, executeRemoveClass, executeSetAttr, executeSetStyle, executeSetText, } from '@syntrologie/adapt-content/runtime';
export { executeBadge, executeHighlight, executeModal, executePulse, executeTooltip, executeTour, } from '@syntrologie/adapt-overlays/runtime';
export { executeParallel, executeSequence, executeWait } from './core-flow';
