import { type User, type SharedWorkflowRepository } from '@n8n/db';
import z from 'zod';
import type { ToolDefinition } from '../../mcp.types';
import type { CollaborationService } from '../../../../collaboration/collaboration.service';
import type { CredentialsService } from '../../../../credentials/credentials.service';
import type { DataTableUserOperations } from '../../../../modules/data-table/data-table-proxy.service';
import type { NodeTypes } from '../../../../node-types';
import type { UrlService } from '../../../../services/url.service';
import type { Telemetry } from '../../../../telemetry';
import type { WorkflowFinderService } from '../../../../workflows/workflow-finder.service';
import type { WorkflowService } from '../../../../workflows/workflow.service';
declare const inputSchema: {
    workflowId: z.ZodString;
    operations: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
        type: z.ZodLiteral<"updateNodeParameters">;
        nodeName: z.ZodString;
        parameters: z.ZodRecord<z.ZodString, z.ZodUnknown>;
        replace: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        type: "updateNodeParameters";
        parameters: Record<string, unknown>;
        nodeName: string;
        replace?: boolean | undefined;
    }, {
        type: "updateNodeParameters";
        parameters: Record<string, unknown>;
        nodeName: string;
        replace?: boolean | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"setNodeParameter">;
        nodeName: z.ZodString;
        path: z.ZodString;
        value: z.ZodEffects<z.ZodUnknown, {} | null, unknown>;
    }, "strip", z.ZodTypeAny, {
        value: {} | null;
        path: string;
        type: "setNodeParameter";
        nodeName: string;
    }, {
        path: string;
        type: "setNodeParameter";
        nodeName: string;
        value?: unknown;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"addNode">;
        node: z.ZodObject<{
            name: z.ZodString;
            type: z.ZodString;
            typeVersion: z.ZodNumber;
            parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
            position: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodNumber, "many">, [number, number], number[]>>;
            credentials: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
                id: z.ZodOptional<z.ZodString>;
                name: z.ZodString;
            }, "strip", z.ZodTypeAny, {
                name: string;
                id?: string | undefined;
            }, {
                name: string;
                id?: string | undefined;
            }>>>;
            disabled: z.ZodOptional<z.ZodBoolean>;
            notes: z.ZodOptional<z.ZodString>;
            id: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            name: string;
            type: string;
            typeVersion: number;
            id?: string | undefined;
            credentials?: Record<string, {
                name: string;
                id?: string | undefined;
            }> | undefined;
            disabled?: boolean | undefined;
            position?: [number, number] | undefined;
            notes?: string | undefined;
            parameters?: Record<string, unknown> | undefined;
        }, {
            name: string;
            type: string;
            typeVersion: number;
            id?: string | undefined;
            credentials?: Record<string, {
                name: string;
                id?: string | undefined;
            }> | undefined;
            disabled?: boolean | undefined;
            position?: number[] | undefined;
            notes?: string | undefined;
            parameters?: Record<string, unknown> | undefined;
        }>;
    }, "strip", z.ZodTypeAny, {
        type: "addNode";
        node: {
            name: string;
            type: string;
            typeVersion: number;
            id?: string | undefined;
            credentials?: Record<string, {
                name: string;
                id?: string | undefined;
            }> | undefined;
            disabled?: boolean | undefined;
            position?: [number, number] | undefined;
            notes?: string | undefined;
            parameters?: Record<string, unknown> | undefined;
        };
    }, {
        type: "addNode";
        node: {
            name: string;
            type: string;
            typeVersion: number;
            id?: string | undefined;
            credentials?: Record<string, {
                name: string;
                id?: string | undefined;
            }> | undefined;
            disabled?: boolean | undefined;
            position?: number[] | undefined;
            notes?: string | undefined;
            parameters?: Record<string, unknown> | undefined;
        };
    }>, z.ZodObject<{
        type: z.ZodLiteral<"removeNode">;
        nodeName: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "removeNode";
        nodeName: string;
    }, {
        type: "removeNode";
        nodeName: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"renameNode">;
        oldName: z.ZodString;
        newName: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "renameNode";
        oldName: string;
        newName: string;
    }, {
        type: "renameNode";
        oldName: string;
        newName: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"addConnection">;
        source: z.ZodString;
        target: z.ZodString;
        sourceIndex: z.ZodOptional<z.ZodNumber>;
        targetIndex: z.ZodOptional<z.ZodNumber>;
        connectionType: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "addConnection";
        source: string;
        target: string;
        connectionType?: string | undefined;
        sourceIndex?: number | undefined;
        targetIndex?: number | undefined;
    }, {
        type: "addConnection";
        source: string;
        target: string;
        connectionType?: string | undefined;
        sourceIndex?: number | undefined;
        targetIndex?: number | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"removeConnection">;
        source: z.ZodString;
        target: z.ZodString;
        sourceIndex: z.ZodOptional<z.ZodNumber>;
        targetIndex: z.ZodOptional<z.ZodNumber>;
        connectionType: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "removeConnection";
        source: string;
        target: string;
        connectionType?: string | undefined;
        sourceIndex?: number | undefined;
        targetIndex?: number | undefined;
    }, {
        type: "removeConnection";
        source: string;
        target: string;
        connectionType?: string | undefined;
        sourceIndex?: number | undefined;
        targetIndex?: number | undefined;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"setNodeCredential">;
        nodeName: z.ZodString;
        credentialKey: z.ZodString;
        credentialId: z.ZodString;
        credentialName: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        type: "setNodeCredential";
        credentialName: string;
        credentialId: string;
        nodeName: string;
        credentialKey: string;
    }, {
        type: "setNodeCredential";
        credentialName: string;
        credentialId: string;
        nodeName: string;
        credentialKey: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"setNodePosition">;
        nodeName: z.ZodString;
        position: z.ZodEffects<z.ZodArray<z.ZodNumber, "many">, [number, number], number[]>;
    }, "strip", z.ZodTypeAny, {
        type: "setNodePosition";
        position: [number, number];
        nodeName: string;
    }, {
        type: "setNodePosition";
        position: number[];
        nodeName: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"setNodeDisabled">;
        nodeName: z.ZodString;
        disabled: z.ZodBoolean;
    }, "strip", z.ZodTypeAny, {
        type: "setNodeDisabled";
        disabled: boolean;
        nodeName: string;
    }, {
        type: "setNodeDisabled";
        disabled: boolean;
        nodeName: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"setNodeSettings">;
        nodeName: z.ZodString;
        settings: z.ZodEffects<z.ZodObject<{
            onError: z.ZodOptional<z.ZodEnum<["stopWorkflow", "continueRegularOutput", "continueErrorOutput"]>>;
            retryOnFail: z.ZodOptional<z.ZodBoolean>;
            maxTries: z.ZodOptional<z.ZodNumber>;
            waitBetweenTries: z.ZodOptional<z.ZodNumber>;
            alwaysOutputData: z.ZodOptional<z.ZodBoolean>;
            executeOnce: z.ZodOptional<z.ZodBoolean>;
        }, "strip", z.ZodTypeAny, {
            retryOnFail?: boolean | undefined;
            maxTries?: number | undefined;
            waitBetweenTries?: number | undefined;
            alwaysOutputData?: boolean | undefined;
            executeOnce?: boolean | undefined;
            onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow" | undefined;
        }, {
            retryOnFail?: boolean | undefined;
            maxTries?: number | undefined;
            waitBetweenTries?: number | undefined;
            alwaysOutputData?: boolean | undefined;
            executeOnce?: boolean | undefined;
            onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow" | undefined;
        }>, {
            retryOnFail?: boolean | undefined;
            maxTries?: number | undefined;
            waitBetweenTries?: number | undefined;
            alwaysOutputData?: boolean | undefined;
            executeOnce?: boolean | undefined;
            onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow" | undefined;
        }, {
            retryOnFail?: boolean | undefined;
            maxTries?: number | undefined;
            waitBetweenTries?: number | undefined;
            alwaysOutputData?: boolean | undefined;
            executeOnce?: boolean | undefined;
            onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow" | undefined;
        }>;
    }, "strip", z.ZodTypeAny, {
        settings: {
            retryOnFail?: boolean | undefined;
            maxTries?: number | undefined;
            waitBetweenTries?: number | undefined;
            alwaysOutputData?: boolean | undefined;
            executeOnce?: boolean | undefined;
            onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow" | undefined;
        };
        type: "setNodeSettings";
        nodeName: string;
    }, {
        settings: {
            retryOnFail?: boolean | undefined;
            maxTries?: number | undefined;
            waitBetweenTries?: number | undefined;
            alwaysOutputData?: boolean | undefined;
            executeOnce?: boolean | undefined;
            onError?: "continueErrorOutput" | "continueRegularOutput" | "stopWorkflow" | undefined;
        };
        type: "setNodeSettings";
        nodeName: string;
    }>, z.ZodObject<{
        type: z.ZodLiteral<"setWorkflowMetadata">;
        name: z.ZodOptional<z.ZodString>;
        description: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        type: "setWorkflowMetadata";
        description?: string | undefined;
        name?: string | undefined;
    }, {
        type: "setWorkflowMetadata";
        description?: string | undefined;
        name?: string | undefined;
    }>]>, "many">;
};
export declare const createUpdateWorkflowTool: (user: User, workflowFinderService: WorkflowFinderService, workflowService: WorkflowService, urlService: UrlService, telemetry: Telemetry, nodeTypes: NodeTypes, credentialsService: CredentialsService, sharedWorkflowRepository: SharedWorkflowRepository, collaborationService: CollaborationService, dataTableOps: DataTableUserOperations) => ToolDefinition<typeof inputSchema>;
export {};
