/** * Lifecycle Rules — Shared Spec Behaviour Rules * * Pure functions for lifecycle state machine logic: * - Building transition maps from lifecycle definitions * - Validating transitions * - Resolving initial states * * Single source of truth used by: * - generators (at build time to emit static transition maps) * - @specverse/runtime (for lifecycle UI controls) * - app-demo (at runtime for transition validation) */ /** * Lifecycle definition — accepts all formats from spec */ export interface LifecycleDefinition { name?: string; states?: Array; transitions?: Array<{ from: string | string[]; to: string; }> | Record; flow?: string; initialState?: string; } /** * Map of valid transitions: fromState → [toState1, toState2, ...] */ export interface TransitionMap { [fromState: string]: string[]; } /** * Build a transition map from a lifecycle definition. * * Handles all input formats: * - flow string: "draft -> open -> closed" * - states array with default linear transitions * - explicit transitions array: [{from, to}] * - mixed: states + explicit transitions (explicit override linear defaults) */ export declare function buildTransitionMap(lifecycle: LifecycleDefinition): TransitionMap; /** * Check if a specific transition is valid. */ export declare function isValidTransition(map: TransitionMap, from: string, to: string): boolean; /** * Get all valid next states from current state. */ export declare function getAvailableTransitions(map: TransitionMap, currentState: string): string[]; /** * Resolve the initial state from a lifecycle definition. */ export declare function resolveInitialState(lifecycle: LifecycleDefinition): string; //# sourceMappingURL=lifecycle-rules.d.ts.map