export interface RawChainIR { readonly document: Record; } export interface ChainContextEdge { readonly input: string; readonly fromStep: string; readonly output: string; } export interface ChainRetryPolicy { readonly maxAttempts: number; readonly backoffMs?: number; } export type FanoutSyncStrategy = "all" | "any" | "quorum"; export type FanoutBranchFailurePolicy = "halt" | "continue"; export type FanoutThresholdAction = "pause" | "escalate"; export interface FanoutThresholdGate { readonly step: string; readonly field: string; readonly above: number; readonly action: FanoutThresholdAction; } export type FanoutConflictAction = "pause" | "escalate"; export interface FanoutConflictGate { readonly field: string; readonly steps: readonly string[]; readonly action: FanoutConflictAction; } export interface FanoutGroupPolicy { readonly groupId: string; readonly strategy: FanoutSyncStrategy; readonly minSuccess?: number; readonly onBranchFailure: FanoutBranchFailurePolicy; readonly thresholdGates: readonly FanoutThresholdGate[]; readonly conflictGates: readonly FanoutConflictGate[]; } export interface ChainTransitionGate { readonly to: string; readonly field: string; readonly equals?: unknown; readonly notEquals?: unknown; } export interface ChainPolicy { readonly transitions: readonly ChainTransitionGate[]; } export interface ChainStep { readonly id: string; readonly label?: string; readonly skill?: string; readonly tool?: string; readonly run?: Readonly>; readonly instructions?: string; readonly artifacts?: Readonly>; readonly runner?: string; readonly inputs: Readonly>; readonly context: Readonly>; readonly contextEdges: readonly ChainContextEdge[]; readonly scopes: readonly string[]; readonly allowedTools?: readonly string[]; readonly retry?: ChainRetryPolicy; readonly policy?: Readonly>; readonly fanoutGroup?: string; readonly mutating: boolean; readonly idempotencyKey?: string; } export interface ChainDefinition { readonly name: string; readonly owner?: string; readonly steps: readonly ChainStep[]; readonly fanoutGroups: Readonly>; readonly policy?: ChainPolicy; readonly raw: RawChainIR; } export declare class ChainParseError extends Error { constructor(message: string); } export declare class ChainValidationError extends Error { constructor(message: string); } export declare function parseChainYaml(source: string): RawChainIR; export declare function validateChain(raw: RawChainIR): ChainDefinition; export declare function validateChainDocument(document: Record, raw?: RawChainIR): ChainDefinition;