export interface WizardSteps {
    /** An alternate way to define the steps of a wizard layout */
    wizard: {
        /** Optional subtitle in the wizard header */
        description?: string;
        /** Show progress UI that tracks execution of code blocks [default: 'bar'] */
        progress?: 'bar' | 'none';
        /**
         * Specification of the steps, each of which is the name of a
         * heading in the markdown source. Optionally, a step description
         * may be overlaid
         */
        steps: (string | {
            match?: string;
            name: string;
            description: string;
        })[];
    };
}
interface Language {
    /** Override any `language` property of the matched code block */
    language?: string;
}
export type CodeBlock = Partial<Language> & {
    /**
     * A string that will be interpreted as regular expression. Any
     * markdown code blocks whose body matches this pattern will be seen
     * as instances of the rules below (e.g. `language`, `validate`, etc.)
     */
    match: string;
    /**
     * If given, this command line will be executed. If it exits with
     * exit code 0, then the code block will be seen as "already
     * executed", and thus represent a valid state. Non-zero exit
     * codes will not be seen as errors, but rather as representative
     * of a default state.
     */
    validate?: string;
    /**
     * If given, this command line will undo the effects of the code
     * block body.
     */
    cleanup?: string;
    /**
     * Is successful execution of this code block seen as necessary
     * for overall successful completion of the enclosing
     * guidebook? */
    optional?: boolean;
};
interface CodeBlocks {
    codeblocks: CodeBlock[];
}
interface Imports {
    imports: string[];
}
export declare function hasImports(attributes: any): attributes is Imports;
type KuiFrontmatter = Partial<WizardSteps> & Partial<Imports> & Partial<CodeBlocks> & {
    /** Title of the Notebook */
    title?: string;
    /** CSS class to add to the containing tab */
    className?: string | string[];
    /**
     * A mapping that indicates which section (the `number` values) should be rendered in a given split position.
     */
    layout?: 'wizard' | Record<number | 'default', SplitPositionSpec>;
    /** Internal */
    layoutCount?: Record<string, number>;
};
export declare function hasWizardSteps(frontmatter: KuiFrontmatter): frontmatter is KuiFrontmatter & Required<WizardSteps>;
export declare function hasCodeBlocks(frontmatter: KuiFrontmatter): frontmatter is KuiFrontmatter & Required<CodeBlocks>;
type SplitPosition = 'left' | 'right' | 'default' | 'wizard' | 'terminal';
type SplitPositionObj = {
    position: SplitPosition;
    placeholder?: string;
    maximized?: boolean;
    inverseColors?: boolean;
};
type SplitPositionSpec = SplitPosition | SplitPositionObj;
export type PositionProps = {
    'data-kui-split': SplitPosition;
};
export declare function isValidPosition(position: SplitPositionSpec): position is SplitPosition;
export declare function isNormalSplit(position: SplitPosition): boolean;
export declare function isValidPositionObj(position: SplitPositionSpec): position is SplitPositionObj;
export default KuiFrontmatter;
