Files
xo-cli/src/tui/screens/action-wizard/flows/WizardFlow.ts

23 lines
862 B
TypeScript

import type { FlowContext, StepType } from "../types.js";
/**
* Abstract strategy that defines the shape of a wizard flow.
*
* Subclasses declare which steps are needed, whether the action can be
* finalized, and what the final button should say. They hold no React
* state — the orchestrator hook wires domain hooks to the step configs
* produced from these methods.
*/
export abstract class WizardFlow {
abstract readonly type: "transaction" | "data";
/** Determine which step types this flow needs given the current context. */
abstract getStepTypes(context: FlowContext): StepType[];
/** Whether the action can be finalized (e.g. signed & broadcast). */
abstract canFinalize(context: FlowContext): boolean;
/** Label for the primary action button on the final step. */
abstract getFinalActionLabel(context: FlowContext): string;
}