import * as React from 'react';
import { CSSProperties } from 'react';
import { BoxProps } from '../../components/Flex';
export type OnePageWizardContextType<T> = {
    data: T;
    sections: (OnePageWizardSection<T> | '-')[];
    setCurrentSection: (index: number) => void;
};
type CmpProps = BoxProps & {
    className?: string;
    style?: React.CSSProperties;
};
export declare const SummaryTag: React.FunctionComponent<React.PropsWithChildren<CmpProps>>;
export declare const SummaryText: React.FunctionComponent<React.PropsWithChildren<CmpProps>>;
export declare const FormDescriptionText: React.FunctionComponent<React.PropsWithChildren<CmpProps>>;
export declare const OnePageWizardContext: React.Context<OnePageWizardContextType<any>>;
export declare function useOnePageWizardContext<ENTITY>(): OnePageWizardContextType<ENTITY>;
export type OnePageWizardSection<ENTITY> = {
    title: string;
    details?: React.ReactNode;
    isValid?: (data: ENTITY, context: OnePageWizardContextType<ENTITY>) => true | string;
    isVisible?: (data: ENTITY, context: OnePageWizardContextType<ENTITY>) => boolean;
    render: (data: ENTITY, index: number) => React.ReactNode;
    renderSummary?: (data: ENTITY) => React.ReactNode;
};
export interface OnePageWizardProps<ENTITY> {
    data: ENTITY;
    modal?: boolean;
    name: string;
    sections: (OnePageWizardSection<ENTITY> | '-')[];
    currentIndex?: number;
    defaultCurrentIndex?: number;
    defaultCurrentSectionName?: string;
    onSectionChange?: (index: number) => void;
    onHide?: VoidFunction;
    onFinish?: (data: ENTITY) => any;
    children?: React.ReactNode;
    style?: CSSProperties;
    titleContainerStyle?: CSSProperties;
    closeText?: React.ReactNode;
    closeTooltip?: string;
    finishText?: React.ReactNode;
    moduleName?: string;
    /**
     * Optional persistent preview rendered as a full-width band beneath the
     * header. Used by wizards (e.g. Styled Column) that want users to see a
     * live preview of the object they're building on every step — the same
     * card the existing Style / Summary steps render, hoisted so it is
     * always visible.
     */
    headerPreview?: React.ReactNode;
}
export declare const OnePageWizard: <ENTITY extends unknown>(props: OnePageWizardProps<ENTITY>) => React.JSX.Element;
export {};
