/**
 * Compiles a declarative workflow step-graph into the BPMN XML the server's
 * workflow engine accepts. A workflow's *elements* (steps) live entirely in
 * this BPMN artifact — there is no per-element patch path; the file is uploaded
 * whole (presigned S3) and linked via `bpmnAwsS3Identifier`. This is exactly
 * what the Forest UI does (verified against a captured request trace).
 *
 * The parser reads structure + prompt + execution flags; per-field args and
 * action/MCP wiring are resolved at runtime. The spec sets the shape.
 */
/** Error in a workflow `steps` spec (authoring-time, before anything is sent). */
export declare class WorkflowSpecError extends Error {
    constructor(message: string);
}
/** Step types → BPMN element + `forest:alternative` (task subtype). */
declare const STEP_TYPES: {
    readonly action: {
        readonly alternative: "trigger-action";
        readonly element: "serviceTask";
    };
    readonly condition: {
        readonly element: "exclusiveGateway";
    };
    readonly end: {
        readonly element: "endEvent";
    };
    readonly escalation: {
        readonly element: "intermediateThrowEvent";
    };
    readonly guidance: {
        readonly alternative: "guideline";
        readonly element: "userTask";
    };
    readonly 'load-related': {
        readonly alternative: "load-related-record";
        readonly element: "serviceTask";
    };
    readonly mcp: {
        readonly alternative: "mcp-server";
        readonly element: "serviceTask";
    };
    readonly read: {
        readonly alternative: "get-data";
        readonly element: "serviceTask";
    };
    readonly update: {
        readonly alternative: "update-data";
        readonly element: "serviceTask";
    };
};
export type StepType = keyof typeof STEP_TYPES;
export type BranchSpec = {
    answer: string;
    color?: string;
    next: string;
};
export type StepSpec = {
    auto?: boolean;
    autoComplete?: boolean;
    branches?: BranchSpec[];
    id: string;
    inboxId?: string;
    mcpServerId?: string;
    next?: string;
    prompt?: string;
    title?: string;
    type: StepType;
};
export type WorkflowSpec = {
    collection: string;
    name: string;
    segments?: string[];
    start?: string;
    steps: StepSpec[];
};
/** Validate a (possibly partial) spec object and normalize it (entry step, segments). */
export declare function validateWorkflowSpec(spec: Partial<WorkflowSpec>): WorkflowSpec;
/** Compile a workflow `steps` spec into BPMN XML (validates first). */
export declare function compileWorkflowToBpmn(input: Partial<WorkflowSpec>): string;
export {};
//# sourceMappingURL=workflow-bpmn.d.ts.map