/** * WorkflowBuilder - Fluent API for building workflow schemas * * Provides a chainable interface for constructing workflow definitions * that compile to IProductWorkflow JSON schema. * * @example * ```ts * import { WorkflowBuilder } from '@ductape/sdk'; * * const workflow = new WorkflowBuilder('order-fulfillment') * .name('Order Fulfillment') * .description('Process orders end-to-end') * .input({ order_id: { type: 'string', required: true } }) * .options({ timeout: 86400000, rollback_strategy: 'reverse_all' }) * .step('validate-order') * .action('inventory-service', 'validate-order') * .input({ body: { order_id: '$Input{order_id}' } }) * .done() * .step('reserve-inventory') * .database('inventory-db', 'reserve-items') * .dependsOn(['validate-order']) * .critical() * .rollback() * .database('inventory-db', 'release-items') * .input({ data: { id: '$Step{reserve-inventory}{id}' } }) * .done() * .done() * .build(); * ``` */ import { IProductWorkflow, IProductWorkflowStep, IWorkflowOptions } from '../types'; import { IWorkflowBuilder, IStepBuilder } from './types'; /** * Main workflow builder class */ export declare class WorkflowBuilder implements IWorkflowBuilder { private workflowConfig; private stepsArray; private signalsMap; private queriesMap; private envsArray; /** * Create a new WorkflowBuilder * @param tag - Unique workflow tag */ constructor(tag: string); name(name: string): IWorkflowBuilder; description(description: string): IWorkflowBuilder; input(input: Record): IWorkflowBuilder; output(output: Record): IWorkflowBuilder; options(options: IWorkflowOptions): IWorkflowBuilder; env(slug: string, active?: boolean): IWorkflowBuilder; signal(name: string, input?: Record): IWorkflowBuilder; query(name: string, handler?: string): IWorkflowBuilder; step(tag: string): IStepBuilder; /** * Add a step to the workflow (called by StepBuilder.done()) * @internal */ addStep(step: IProductWorkflowStep): void; build(): IProductWorkflow; toSchema(): IProductWorkflow; } /** * Factory function to create a new WorkflowBuilder * @param tag - Unique workflow tag */ export declare function createWorkflow(tag: string): WorkflowBuilder; export default WorkflowBuilder;