import React from 'react';
import type { Tab } from '@kui-shell/core';
import { Choices, CodeBlock, Graph, Wizard as Wiz } from 'madwizard';
import { Status } from '../../../ProgressStepper';
import '../../../../../../web/scss/components/Wizard/Guide.scss';
export type Props = Choices.Choices & Partial<CodeBlock.Title> & Partial<CodeBlock.Description> & {
    /** Enclosing Kui Tab */
    tab: Tab;
    /** markdown document id */
    uuid: string;
    /** Raw list of code blocks */
    blocks: CodeBlock.CodeBlockProps[];
};
type State = Choices.Choices & {
    /** Internal error in rendering? */
    error?: Error;
    /** Graph of code blocks to be executed */
    graph: Graph.OrderedGraph;
    /** Choice Frontier */
    frontier: ReturnType<typeof Graph.findChoiceFrontier>;
    /** Instance of Wizard model */
    wizard: Wiz.Wizard;
    /** validation status of each wizard step */
    wizardStepStatus: Status[];
    /** Which of `wizardStepStatus` to display (indexed from 1) */
    startAtStep: number;
    /** are we in the middle of a `this.startRun` automated execution? */
    isRunning: boolean;
};
export default class Guide extends React.PureComponent<Props, State> {
    private readonly choiceIcon1;
    private readonly choiceIcon2;
    constructor(props: Props);
    componentDidMount(): void;
    /**
     * TODO move to a more common location?
     */
    private static isValidFrontier;
    private readonly memos;
    private init;
    componentWillUnmount(): void;
    /** @return a wrapper UI for the content of a wizard step */
    private stepContent;
    static getDerivedStateFromError(error: Error): {
        error: Error;
    };
    /** @return a UI component to visualize the given markdown source */
    private renderContent;
    /** @return text to place below the wizard step title */
    private wizardStepDescription;
    /** A choice was made somewhere in the UI */
    private readonly onChoiceFromAbove;
    /**
     * A choice was made in *this* UI. The `this.props.choices.set()`
     * will eventually find its way back to a call to
     * `this.onChoiceFromAbove()`
     */
    private readonly onChoice;
    /** @return UI that offers the user a choice */
    private tilesForChoice;
    private withStatus;
    /**
     * Modifiy the given `step` to include any UI bits that all wizard
     * steps should have.
     */
    private readonly addCommonWizardStepProperties;
    /** Add React `component` to the given choice step */
    private choiceUI;
    /** Add React `component` to the given task execution step */
    private taskUI;
    /** @return the `WizardStep` models for this Guide */
    private wizardSteps;
    private validateStepsIfNeeded;
    /** User clicked to remove a chip */
    private readonly removeChip;
    /** UI to indicate what choices the user has already made */
    private chips;
    /**
     * @return a progress bar UI that indicates how far along we are
     * towards completion of the given `steps`
     */
    private progress;
    private wizardDescription;
    private wizardDescriptionFooter;
    private wizardTitle;
    private hasRemainingChoices;
    /** Commence automated execution of code blocks */
    private readonly startRun;
    /** Terminate automated execution of code blocks */
    private readonly stopRun;
    private runAction;
    private actions;
    private presentChoices;
    private allDoneWithChoices;
    render(): string | JSX.Element;
}
export {};
