import { type ReactNode } from "react";
import { CustomCommandData, CustomCommandHandler, CustomCommandContext, EditorConfiguration } from "../../config/types";
import { ComponentCommand, ComponentCommandVisibilityScope } from "./componentCommands";
import { Component } from "../pageModel";
import { EditContextType } from "../client/editContext";
/**
 * Find the handler for a given command type
 */
export declare function findHandler(commandType: string, configuration: EditorConfiguration): CustomCommandHandler | undefined;
export declare function isCustomCommandDisabled(command: CustomCommandData, configuration: EditorConfiguration, context: CustomCommandContext): boolean;
export declare function executeCustomCommand(command: CustomCommandData, configuration: EditorConfiguration, context: CustomCommandContext): Promise<boolean>;
export declare function renderCustomCommandIcon(command: CustomCommandData, configuration: EditorConfiguration, options?: {
    svgClassName?: string;
    fallback?: ReactNode;
}): ReactNode;
/**
 * Convert CustomCommandData + Handler into a ComponentCommand.
 * This allows custom commands to work with the existing component command infrastructure.
 */
export declare function toComponentCommand(data: CustomCommandData, handler: CustomCommandHandler, components: Component[], visibilityScopes?: ComponentCommandVisibilityScope[]): ComponentCommand;
/**
 * Load and convert custom commands for a specific use case.
 * Returns ComponentCommands that can be used in frame menu, context menu, etc.
 */
export declare function getCustomComponentCommands(components: Component[], editContext: EditContextType, loadCommands: () => Promise<CustomCommandData[]>, visibilityScopes?: ComponentCommandVisibilityScope[]): Promise<ComponentCommand[]>;
