/**
 * Public data model for the Setup widget ("Focus Widget").
 *
 * The widget follows the "pluggable adapter" design (Option C): the consumer
 * supplies a promise-returning `fetchData`, and the widget owns loading / error
 * / refetch state itself. This keeps the data source swappable (Dealer-direct,
 * patterns-service, or a static fixture) behind a single component.
 */
/**
 * Server/data-derived step state only. Which step is focused/expanded is
 * presentation state the widget derives itself (first upcoming, else first
 * actionable step) — the data never pins it, matching dashboard-setup.
 */
export type SetupWidgetStepStatus = 'upcoming' | 'in-progress' | 'completed' | 'disabled';
export interface SetupWidgetStep {
    /** Stable identifier, used as the React key and for inline-expansion toggling. */
    id: string;
    title: string;
    description?: string;
    /** Label for the step's call-to-action while it's still actionable. */
    ctaLabel?: string;
    /**
     * Label for the action shown on a *completed* step (e.g. "View", "Manage").
     * When set, the completed row stays actionable and clicking it fires
     * `onStepClick`. Mirrors `completedCta` in dashboard-setup. Omit to render a
     * completed step with no action (the default).
     */
    completedCtaLabel?: string;
    /**
     * Tooltip shown on a `disabled` step's CTA, explaining why it can't be acted
     * on. The only production use is permission-denied (e.g. sub-accounts that
     * lack access) — mirrors the permission tooltip in dashboard-setup. Falls
     * back to a generic "you don't have access" message when omitted.
     */
    disabledTooltip?: string;
    status: SetupWidgetStepStatus;
    /**
     * What happens when the row is activated:
     * - `navigate` (default when omitted): fires the consumer's `onStepClick`
     *   (e.g. opens settings or the editor).
     * - `inline`: expands content in-card below the row (via the widget's
     *   `renderStepContent`).
     */
    expansionMode?: 'inline' | 'navigate';
    /**
     * Nested sub-steps for an *aggregated* group (e.g. "Stores", "Bookings").
     * When present, the step renders as a collapsible group row with an "x/y"
     * counter; expanding it reveals the sub-steps as sub-rows. Progress (the
     * header ratio / all-complete) counts the leaves, not the group row.
     * Sub-steps should be leaf steps (`navigate` / completed) — nested inline
     * expansion is not supported. Mirrors `aggregated.steps` in dashboard-setup.
     */
    steps?: SetupWidgetStep[];
}
/** Resolved by the consumer's `fetchData`. */
export interface SetupWidgetData {
    /** Overrides the default "Setup" widget title. */
    title?: string;
    /** Ordered list of steps. Each carries its own status. */
    steps: SetupWidgetStep[];
}
/** Config shape shared by the state class and the component props. */
export interface SetupWidgetConfig {
    /** Consumer resolves the data; the widget owns loading / error / refetch. */
    fetchData: () => Promise<SetupWidgetData>;
}
//# sourceMappingURL=setupWidget.d.ts.map