23 lines
862 B
TypeScript
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;
|
|
}
|