import type { APIPromise } from "../core/api-promise.js"; import type { RequestOptions } from "../internal/request-options.js"; import { Workflows, WorkflowUserApprovalResponse, type WorkflowApproveUserParams, type WorkflowRetrieveParams, type WorkflowRetrieveResponse, type WorkflowRunParams, type WorkflowRunResponse } from "../resources/workflows.js"; import { type WithJob } from "./job.js"; import { type Scope } from "./scope.js"; import type { Scenario } from "./scenario.js"; type DefinitionFlow = WorkflowRetrieveResponse.Workflow.Flow; type NodeType = DefinitionFlow['type']; /** * Enhanced workflow object with helper methods. * Has all original workflow fields plus `findNode()`, `getNodesByType()`, * `validate()`, and `run()`. * * @example * ```ts * const response = await client.workflows.retrieve(workflowId); * response.workflow.findNode('final_image'); * response.workflow.getNodesByType('custom-model'); * const gen = await response.workflow.run({ body: { prompt: '...' } }); * response.workflow.name; // original fields still work * ``` */ export declare class WorkflowEntity { /** @internal */ readonly _client: Scenario; /** @internal scope captured from the retrieve call — replayed when `.run()` is invoked without an explicit query override. */ readonly _scope?: Scope; /** Find a node in the workflow definition by ID. */ findNode(this: WorkflowEntity & WorkflowRetrieveResponse.Workflow, nodeId: string): DefinitionFlow | undefined; /** Get all nodes of a specific type from the workflow definition. */ getNodesByType(this: WorkflowEntity & WorkflowRetrieveResponse.Workflow, type: NodeType): DefinitionFlow[]; /** * Validate the structural integrity of a workflow flow. * Throws an `Error` with a human-readable message on the first violation found. */ validate(this: WorkflowEntity & WorkflowRetrieveResponse.Workflow): void; /** * Run this workflow. Shortcut for * `client.workflows.run(this.id, params)`. * * Returns an enhanced response where `response.job` has `.wait()`. * If the workflow was fetched with a `projectId` scope (per-call override * or client default), that scope is reused unless overridden by * `options.query`. */ run(this: WorkflowEntity & WorkflowRetrieveResponse.Workflow, params: WorkflowRunParams, options?: RequestOptions): APIPromise>; /** @internal Create a WorkflowEntity from raw workflow data, optionally remembering the originating scope. */ static from(client: Scenario, data: WorkflowRetrieveResponse.Workflow, scope?: Scope): WorkflowRetrieveResponse.Workflow & WorkflowEntity; } /** Enhanced retrieve response with workflow entity methods. */ export type EnhancedWorkflowRetrieveResponse = Omit & { workflow: WorkflowRetrieveResponse.Workflow & WorkflowEntity; }; /** * Enhanced Workflows resource. * Extends the generated {@link Workflows} — all original methods are inherited. * Overrides `retrieve()`, `run()`, and `approveUser()` to return enriched response objects. */ export declare class EnhancedWorkflows extends Workflows { /** * Get workflow by ID. Returns an enhanced response where `workflow` has * `findNode()`, `getNodesByType()`, and `validate()`. */ retrieve(workflowID: string, query?: WorkflowRetrieveParams | null | undefined, options?: RequestOptions): APIPromise; /** Run a workflow. Returns an enhanced response where `job` has `.wait()`. */ run(workflowID: string, params: WorkflowRunParams, options?: RequestOptions): APIPromise>; /** Approve a user approval node. Returns an enhanced response where `job` has `.wait()`. */ userApproval(workflowID: string, body: WorkflowApproveUserParams, options?: RequestOptions): APIPromise>; } export {}; //# sourceMappingURL=workflow.d.ts.map