export type AiEditorToolTarget = {
    selected: true;
} | {
    id: string;
} | {
    uid: string;
} | {
    type: string;
    index?: number;
};
export type AiEditorToolCall = {
    name: "update_text";
    target: AiEditorToolTarget;
    text: string;
} | {
    name: "update_attribute";
    target: AiEditorToolTarget;
    key: string;
    value: unknown;
} | {
    name: "update_mobile_attribute";
    target: AiEditorToolTarget;
    key: string;
    value: unknown;
} | {
    name: "update_attributes";
    target: AiEditorToolTarget;
    attributes: Record<string, unknown>;
    scope?: "desktop" | "mobile";
} | {
    name: "update_data";
    target: AiEditorToolTarget;
    key: string;
    value: unknown;
} | {
    name: "replace_children";
    target: AiEditorToolTarget;
    children: unknown[];
} | {
    name: "set_visibility";
    target: AiEditorToolTarget;
    desktop: boolean;
    mobile: boolean;
} | {
    name: "replace_block";
    target: AiEditorToolTarget;
    block: unknown;
} | {
    name: "update_link";
    target: AiEditorToolTarget;
    href: string;
    blank?: boolean;
    title?: string;
} | {
    name: "move_up" | "move_down" | "duplicate" | "delete_node";
    target: AiEditorToolTarget;
} | {
    name: "add_block_after";
    target: AiEditorToolTarget;
    block: unknown;
} | {
    name: "add_block_before";
    target: AiEditorToolTarget;
    block: unknown;
} | {
    name: "select_node";
    target: AiEditorToolTarget;
} | {
    name: "apply_template";
    template: unknown;
};
export type AiEditorToolApplyResult = {
    applied: number;
    skipped: number;
    errors: string[];
    changes?: AiEditorAppliedChange[];
};
export type AiEditorAppliedChange = {
    id: string;
    label: string;
    description: string;
    target: AiEditorToolTarget;
    path?: number[];
};
export declare function useApplyAiToolCalls(): (toolCalls: AiEditorToolCall[]) => AiEditorToolApplyResult;
