/**
 * Generated by orval v8.19.0 🍺
 * Do not edit manually.
 * TouchDesigner API
 * OpenAPI schema for generating TouchDesigner API client code
 * OpenAPI spec version: 1.5.0
 */
import { customInstance } from '../../api/customInstance.js';
import type { BodyType } from '../../api/customInstance.js';
export type TdNodeProperties = {
    [key: string]: unknown;
};
/**
 * Information about a TouchDesigner node
 */
export interface TdNode {
    id: number;
    opType: string;
    name: string;
    path: string;
    properties: TdNodeProperties;
}
export type TdNodeFamilyType = typeof TdNodeFamilyType[keyof typeof TdNodeFamilyType];
export declare const TdNodeFamilyType: {
    readonly COMP: "COMP";
    readonly CHOP: "CHOP";
    readonly TOP: "TOP";
    readonly SOP: "SOP";
    readonly DAT: "DAT";
    readonly MAT: "MAT";
    readonly CUSTOM: "CUSTOM";
};
/**
 * Single node error entry
 */
export interface TdNodeError {
    /** Absolute operator path that reported the error */
    nodePath: string;
    /** Name of the operator */
    nodeName: string;
    /** TouchDesigner operator type */
    opType: string;
    /** Error message reported by TouchDesigner */
    message: string;
}
/**
 * Aggregated node error report
 */
export interface TdNodeErrorReport {
    /** Path that was inspected for errors */
    nodePath: string;
    /** Name of the inspected node */
    nodeName: string;
    /** Operator type of the inspected node */
    opType: string;
    /** Number of errors that were discovered */
    errorCount: number;
    /** Convenience flag indicating if any errors were found */
    hasErrors: boolean;
    /** Collection of raw node errors */
    errors: TdNodeError[];
}
/**
 * Type of the Python entity
 */
export type TdPythonClassDetailsType = typeof TdPythonClassDetailsType[keyof typeof TdPythonClassDetailsType];
export declare const TdPythonClassDetailsType: {
    readonly class: "class";
    readonly module: "module";
    readonly function: "function";
    readonly object: "object";
};
/**
 * Information about a Python method
 */
export interface TdPythonMethodInfo {
    /** Method name */
    name: string;
    /** Method signature including parameters */
    signature?: string;
    /** Description of the method */
    description?: string;
}
/**
 * Current value of the property (if serializable)
 * @nullable
 */
export type TdPythonPropertyInfoValue = {
    [key: string]: unknown;
} | null;
/**
 * Information about a Python property
 */
export interface TdPythonPropertyInfo {
    /** Property name */
    name: string;
    /** Type of the property */
    type: string;
    /**
       * Current value of the property (if serializable)
       * @nullable
       */
    value?: TdPythonPropertyInfoValue;
}
/**
 * Detailed information about a Python class or module
 */
export interface TdPythonClassDetails {
    /** Name of the class or module */
    name: string;
    /** Type of the Python entity */
    type: TdPythonClassDetailsType;
    /** Description of the class or module */
    description?: string;
    /** List of methods available in the class or module */
    methods: TdPythonMethodInfo[];
    /** List of properties available in the class or module */
    properties: TdPythonPropertyInfo[];
}
/**
 * Type of the Python entity
 */
export type TdPythonClassInfoType = typeof TdPythonClassInfoType[keyof typeof TdPythonClassInfoType];
export declare const TdPythonClassInfoType: {
    readonly class: "class";
    readonly module: "module";
    readonly function: "function";
    readonly object: "object";
};
/**
 * Information about a Python class or module available in TouchDesigner
 */
export interface TdPythonClassInfo {
    /** Name of the class or module */
    name: string;
    /** Type of the Python entity */
    type: TdPythonClassInfoType;
    /** Description of the class or module */
    description?: string;
}
/**
 * Raw Python help() output for a TouchDesigner module or class
 */
export interface ModuleHelp {
    /** Normalized module/class name the help text was generated for */
    moduleName: string;
    /** Captured output from Python's help() function */
    helpText: string;
}
export type GetNodesParams = {
    /**
     * e.g., "/project1"
     */
    parentPath: string;
    /**
     * e.g., "null*"
     */
    pattern?: string;
    /**
     * Include node properties in response
     */
    includeProperties?: boolean;
};
/**
 * @nullable
 */
export type GetNodes200Data = {
    /** Result of the execution */
    nodes?: TdNode[];
} | null;
export type GetNodes200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: GetNodes200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type CreateNodeBody = {
    /** Path to the parent node (e.g., /project1) */
    parentPath: string;
    /** Type of the node to create (e.g., textTop) */
    nodeType: string;
    /** Name of the new node (optional) */
    nodeName?: string;
};
/**
 * @nullable
 */
export type CreateNode200Data = {
    /** Result of the execution */
    result?: TdNode;
} | null;
export type CreateNode200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: CreateNode200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type DeleteNodeParams = {
    /**
     * e.g., "/project1/geo1"
     */
    nodePath: string;
};
/**
 * @nullable
 */
export type DeleteNode200Data = {
    /** Whether the node was successfully deleted */
    deleted?: boolean;
    /** Information about the deleted node */
    node?: TdNode;
} | null;
export type DeleteNode200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: DeleteNode200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type GetNodeDetailParams = {
    /**
     * e.g., "/project1/textTOP"
     */
    nodePath: string;
};
export type GetNodeDetail200 = {
    /** Whether the operation was successful */
    success: boolean;
    data: TdNode | null;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type UpdateNodeBodyProperties = {
    [key: string]: unknown;
};
export type UpdateNodeBody = {
    /** Path to the node (e.g., /project1/null1) */
    nodePath: string;
    properties: UpdateNodeBodyProperties;
};
export type UpdateNode200DataFailedItem = {
    /** Name of the property that failed to update */
    name?: string;
    /** Reason for the failure */
    reason?: string;
};
/**
 * @nullable
 */
export type UpdateNode200Data = {
    /** Path of the node that was updated */
    path?: string;
    /** List of property names that were successfully updated */
    updated?: string[];
    /** List of properties that failed to update */
    failed?: UpdateNode200DataFailedItem[];
    /** Summary message about the update operation */
    message?: string;
} | null;
export type UpdateNode200 = {
    /** Whether the update operation was successful */
    success: boolean;
    /** @nullable */
    data: UpdateNode200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type GetNodeErrorsParams = {
    /**
     * Absolute path to the node to inspect. e.g., "/project1/text1"
     */
    nodePath: string;
};
export type GetNodeErrors200 = {
    /** Whether the operation was successful */
    success: boolean;
    data: TdNodeErrorReport;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
/**
 * @nullable
 */
export type GetTdPythonClasses200Data = {
    classes?: TdPythonClassInfo[];
} | null;
export type GetTdPythonClasses200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: GetTdPythonClasses200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type GetTdPythonClassDetails200 = {
    /** Whether the operation was successful */
    success: boolean;
    data: TdPythonClassDetails | null;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type GetModuleHelpParams = {
    /**
     * Module or class name (e.g., "noiseCHOP", "td.noiseCHOP", "tdu").
     */
    moduleName: string;
};
export type GetModuleHelp200 = {
    /** Whether the operation was successful */
    success: boolean;
    data: ModuleHelp | null;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
/**
 * Keyword arguments for the method call
 */
export type ExecNodeMethodBodyKwargs = {
    [key: string]: unknown;
};
export type ExecNodeMethodBody = {
    /** Path to the node (e.g., /project1/null1) */
    nodePath: string;
    /** Name of the method to call */
    method: string;
    /** List of arguments for the method call */
    args?: (string | number | boolean)[];
    /** Keyword arguments for the method call */
    kwargs?: ExecNodeMethodBodyKwargs;
};
/**
 * @nullable
 */
export type ExecNodeMethod200Data = {
    /** Result of the method call. Can be any type (equivalent to unknown in TypeScript). */
    result: unknown;
} | null;
export type ExecNodeMethod200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: ExecNodeMethod200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
export type ExecPythonScriptBody = {
    /** e.g., "op('/project1/text_over_image').outputConnectors[0].connect(op('/project1/out1'))" */
    script: string;
};
/**
 * Result of the executed script
 */
export type ExecPythonScript200DataResult = {
    /** Return value of the executed script, can be any serializable value */
    value?: unknown;
};
/**
 * @nullable
 */
export type ExecPythonScript200Data = {
    /** Result of the executed script */
    result: ExecPythonScript200DataResult;
    /** Captured standard output (e.g. print statements) emitted while the script ran */
    stdout?: string;
    /** Captured standard error output emitted while the script ran */
    stderr?: string;
} | null;
export type ExecPythonScript200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: ExecPythonScript200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
/**
 * @nullable
 */
export type GetTdInfo200Data = {
    /** Version of the TouchDesigner MCP API server */
    mcpApiVersion: string;
    /** Operating system name */
    osName: string;
    /** Operating system version */
    osVersion: string;
    /** Server name (typically "TouchDesigner") */
    server: string;
    /** TouchDesigner version number */
    version: string;
} | null;
export type GetTdInfo200 = {
    /** Whether the operation was successful */
    success: boolean;
    /** @nullable */
    data: GetTdInfo200Data;
    /**
       * Error message if the operation was not successful
       * @nullable
       */
    error: string | null;
};
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
/**
* @summary Get nodes in the path
*/
export declare const getNodes: (params: GetNodesParams, options?: SecondParameter<typeof customInstance<GetNodes200>>) => Promise<GetNodes200>;
/**
 * @summary Create a new node
 */
export declare const createNode: (createNodeBody: BodyType<CreateNodeBody>, options?: SecondParameter<typeof customInstance<CreateNode200>>) => Promise<CreateNode200>;
/**
 * @summary Delete an existing node
 */
export declare const deleteNode: (params: DeleteNodeParams, options?: SecondParameter<typeof customInstance<DeleteNode200>>) => Promise<DeleteNode200>;
/**
 * Retrieves detailed information about a specific node including its properties, parameters and connections
 * @summary Get node detail
 */
export declare const getNodeDetail: (params: GetNodeDetailParams, options?: SecondParameter<typeof customInstance<GetNodeDetail200>>) => Promise<GetNodeDetail200>;
/**
 * @summary Update node properties
 */
export declare const updateNode: (updateNodeBody?: BodyType<UpdateNodeBody>, options?: SecondParameter<typeof customInstance<UpdateNode200>>) => Promise<UpdateNode200>;
/**
 * Collects TouchDesigner error messages for a node and its children
 * @summary Get node errors
 */
export declare const getNodeErrors: (params: GetNodeErrorsParams, options?: SecondParameter<typeof customInstance<GetNodeErrors200>>) => Promise<GetNodeErrors200>;
/**
 * Returns a list of Python classes, modules, and functions available in TouchDesigner
 * @summary Get a list of Python classes and modules
 */
export declare const getTdPythonClasses: (options?: SecondParameter<typeof customInstance<GetTdPythonClasses200>>) => Promise<GetTdPythonClasses200>;
/**
 * Returns detailed information about a specific Python class, module, or function including methods, properties, and documentation
 * @summary Get details of a specific Python class or module
 */
export declare const getTdPythonClassDetails: (className: string, options?: SecondParameter<typeof customInstance<GetTdPythonClassDetails200>>) => Promise<GetTdPythonClassDetails200>;
/**
 * Retrieve Python help() documentation for TouchDesigner modules, classes, or utilities like tdu.
 * @summary Get module/class Python help documentation
 */
export declare const getModuleHelp: (params: GetModuleHelpParams, options?: SecondParameter<typeof customInstance<GetModuleHelp200>>) => Promise<GetModuleHelp200>;
/**
 * Call a method on the node at the specified path (e.g., /project1).
 * This allows operations equivalent to TouchDesigner's Python API such as
 * `parent_comp = op('/project1')` and `parent_comp.create('textTOP', 'myText')`.
 * @summary Call a method of the specified node
 */
export declare const execNodeMethod: (execNodeMethodBody: BodyType<ExecNodeMethodBody>, options?: SecondParameter<typeof customInstance<ExecNodeMethod200>>) => Promise<ExecNodeMethod200>;
/**
 * Execute a Python script directly in TouchDesigner.
 * Multiline scripts and scripts containing comments are supported.
 * The script can optionally set a `result` variable to explicitly return a value.
 * This endpoint allows you to interact with TouchDesigner nodes programmatically.
 * @summary Execute python code on the server
 */
export declare const execPythonScript: (execPythonScriptBody: BodyType<ExecPythonScriptBody>, options?: SecondParameter<typeof customInstance<ExecPythonScript200>>) => Promise<ExecPythonScript200>;
/**
 * Returns information about the TouchDesigner
 * @summary Get TouchDesigner information
 */
export declare const getTdInfo: (options?: SecondParameter<typeof customInstance<GetTdInfo200>>) => Promise<GetTdInfo200>;
export type GetNodesResult = NonNullable<Awaited<ReturnType<typeof getNodes>>>;
export type CreateNodeResult = NonNullable<Awaited<ReturnType<typeof createNode>>>;
export type DeleteNodeResult = NonNullable<Awaited<ReturnType<typeof deleteNode>>>;
export type GetNodeDetailResult = NonNullable<Awaited<ReturnType<typeof getNodeDetail>>>;
export type UpdateNodeResult = NonNullable<Awaited<ReturnType<typeof updateNode>>>;
export type GetNodeErrorsResult = NonNullable<Awaited<ReturnType<typeof getNodeErrors>>>;
export type GetTdPythonClassesResult = NonNullable<Awaited<ReturnType<typeof getTdPythonClasses>>>;
export type GetTdPythonClassDetailsResult = NonNullable<Awaited<ReturnType<typeof getTdPythonClassDetails>>>;
export type GetModuleHelpResult = NonNullable<Awaited<ReturnType<typeof getModuleHelp>>>;
export type ExecNodeMethodResult = NonNullable<Awaited<ReturnType<typeof execNodeMethod>>>;
export type ExecPythonScriptResult = NonNullable<Awaited<ReturnType<typeof execPythonScript>>>;
export type GetTdInfoResult = NonNullable<Awaited<ReturnType<typeof getTdInfo>>>;
export {};
