import React from 'react'; /** * 单个步骤定义。 * * `run` 应当返回任意可被 `JSON.stringify` 序列化的结果(用作执行日志展示)。 * 抛错时步骤会被标记为 error,并阻断后续步骤的串行执行。 */ export interface DemoStep { id: string; label: string; description?: string; run: () => Promise; /** 标记为 true 时该步骤会被跳过(既不计入串行,也不在 UI 上禁用单步执行) */ skip?: boolean; } export declare type DemoStepStatus = 'idle' | 'running' | 'success' | 'error' | 'skipped'; export interface DemoStepState { status: DemoStepStatus; result?: unknown; error?: string; startedAt?: number; finishedAt?: number; } export interface DemoStepRunnerProps { title: string; steps: DemoStep[]; oneClickLabel?: string; /** 串行执行完毕(成功或被错误中断)后回调,参数为最终状态映射 */ onAllDone?: (states: Record) => void; /** * 点击 reset 时额外执行(如 sales.restore),用于清空 OS tempOrder / localStorage。 * 步骤 UI 状态会在该回调成功后再清空。 */ onReset?: () => Promise; className?: string; } /** * 步骤序列执行器: * - 顶部「一键执行」按钮:从第一步开始串行 `await`,中断条件 = 抛错。 * - 每一步右侧提供「单步执行」按钮,便于反复点击调试。 * - 状态、结果、错误信息聚合渲染在每一步下方;同时维护 `running` 互斥锁,避免并行写。 */ export declare const DemoStepRunner: React.FC;