import * as React from "react";
import * as PropTypes from "prop-types";
import "./Wizard.less";
export interface Props {
    className?: string;
    style?: React.CSSProperties;
    title: string;
    description: React.ReactNode;
    help?: React.ReactNode;
    wizardButtons?: {
        handler: Function;
        buttonValue: React.ReactNode;
        buttonClassName?: string;
    }[];
    initialWizardData?: any;
    onComplete: Function;
    steps: {
        title: string;
        description?: React.ReactNode;
        component: React.ComponentType<any>;
        nextButtonValue?: React.ReactNode;
        prevButtonValue?: React.ReactNode;
        validate: (state: any) => boolean;
        canContinue?: (state: any) => boolean;
        help?: React.ReactNode;
        props?: any;
        onStepComplete?: Function;
        shouldSkipStep?: (data: any) => boolean;
    }[];
    initialStep?: number;
    nextButtonValue?: React.ReactNode;
    prevButtonValue?: React.ReactNode;
    seekable?: boolean;
    hideProgressBar?: boolean;
    stickySidebar?: boolean;
    stepNumberInTitle?: boolean;
}
interface State {
    currentStep: number;
    data: any;
    percentComplete: number;
    stepsVisited: number[];
}
export declare class Wizard extends React.Component<Props, State> {
    static propTypes: {
        className: PropTypes.Requireable<string>;
        style: PropTypes.Requireable<object>;
        title: PropTypes.Validator<string>;
        description: PropTypes.Validator<PropTypes.ReactNodeLike>;
        help: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        wizardButtons: PropTypes.Requireable<PropTypes.InferProps<{
            handler: PropTypes.Validator<(...args: any[]) => any>;
            buttonValue: PropTypes.Validator<PropTypes.ReactNodeLike>;
            buttonClassName: PropTypes.Requireable<string>;
        }>[]>;
        initialWizardData: PropTypes.Requireable<object>;
        onComplete: PropTypes.Validator<(...args: any[]) => any>;
        steps: PropTypes.Validator<PropTypes.InferProps<{
            title: PropTypes.Validator<string>;
            description: PropTypes.Requireable<PropTypes.ReactNodeLike>;
            component: PropTypes.Validator<((...args: any[]) => any) | React.Component<unknown, unknown, unknown>>;
            nextButtonValue: PropTypes.Requireable<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray | ((...args: any[]) => any)>;
            validate: PropTypes.Validator<(...args: any[]) => any>;
            canContinue: PropTypes.Requireable<(...args: any[]) => any>;
            help: PropTypes.Requireable<PropTypes.ReactNodeLike>;
            props: PropTypes.Requireable<object>;
            onStepComplete: PropTypes.Requireable<(...args: any[]) => any>;
        }>[]>;
        initialStep: PropTypes.Requireable<number>;
        nextButtonValue: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        prevButtonValue: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        seekable: PropTypes.Requireable<boolean>;
        hideProgressBar: PropTypes.Requireable<boolean>;
        stickySidebar: PropTypes.Requireable<boolean>;
        stepNumberInTitle: PropTypes.Requireable<boolean>;
    };
    static defaultProps: {
        stepNumberInTitle: boolean;
    };
    constructor(props: Props);
    reset(): void;
    jumpToStep(idx: any): void;
    prevStepHandler(): void;
    nextStepHandler(): void;
    goToNextStep(): void;
    calculatePercentComplete(data?: any): number;
    _renderSidebar(style?: React.CSSProperties): JSX.Element;
    render(): JSX.Element;
}
export {};
