import { StepBody, InlineStepBody } from "../abstractions"; import { WorkflowDefinition, WorkflowStepBase, WorkflowStep, StepOutcome, StepExecutionContext, ExecutionResult } from "../models"; import { SubscriptionStepBody, Foreach, While, If, Delay, Schedule } from "../primitives"; export declare class WorkflowBuilder { private steps; errorBehavior: number; retryInterval: number; build(id: string, version: number): WorkflowDefinition; addStep(step: WorkflowStepBase): void; startWith(body: { new (): TNewStepBody; }, setup?: (step: StepBuilder) => void): StepBuilder; getUpstreamSteps(id: number): Array; } export declare class StepBuilder { private workflowBuilder; step: WorkflowStep; constructor(workflowBuilder: WorkflowBuilder, step: WorkflowStep); name(name: string): StepBuilder; then(body: { new (): TNewStepBody; }, setup?: (step: StepBuilder) => void): StepBuilder; thenStep(newStep: StepBuilder): StepBuilder; thenRun(step: (context: StepExecutionContext) => Promise): StepBuilder; when(outcomeValue: (data: TData) => any): OutcomeBuilder; input(expression: (step: TStepBody, data: TData) => void): StepBuilder; output(expression: (step: TStepBody, data: TData) => void): StepBuilder; waitFor(eventName: string, eventKey: (data: TData) => any, effectiveDate?: (data: TData) => Date): StepBuilder; end(stepName: string): StepBuilder; onError(behavior: number, retryInterval?: number): StepBuilder; private iterateParents(id, name); foreach(expression: (data: TData) => any[]): StepBuilder; while(expression: (data: TData) => boolean): StepBuilder; if(expression: (data: TData) => boolean): StepBuilder; schedule(interval: (data: TData) => number): StepBuilder; delay(milliseconds: (data: TData) => number): StepBuilder; do(builder: (then: WorkflowBuilder) => void): StepBuilder; } export declare class OutcomeBuilder { private workflowBuilder; private outcome; constructor(workflowBuilder: WorkflowBuilder, outcome: StepOutcome); then(body: { new (): TNewStepBody; }, setup?: (step: StepBuilder) => void): StepBuilder; thenStep(newStep: StepBuilder): StepBuilder; thenRun(step: (context: StepExecutionContext) => Promise): StepBuilder; }