/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
/// <reference types="lodash" />
import "./wizard.scss";
import React from "react";
import type { StrictReactNode } from "@openlens/utilities";
export interface WizardCommonProps<D> {
    data?: Partial<D>;
    save?: (data: Partial<D>, callback?: () => void) => void;
    reset?: () => void;
    done?: () => void;
    hideSteps?: boolean;
}
export interface WizardProps<D> extends WizardCommonProps<D> {
    className?: string;
    step?: number;
    title?: string;
    header?: StrictReactNode;
    onChange?: (step: number) => void;
    children?: React.ReactElement<WizardStepProps<D>>[] | React.ReactElement<WizardStepProps<D>>;
}
interface State {
    step: number;
}
export declare class Wizard<D> extends React.Component<WizardProps<D>, State> {
    state: State;
    get steps(): React.ReactElement<WizardStepProps<D>>[];
    get step(): number;
    set step(step: number);
    protected getValidStep(step: number): number;
    isFirstStep: () => boolean;
    isLastStep: () => boolean;
    firstStep: () => any;
    nextStep: () => any;
    prevStep: () => any;
    lastStep: () => any;
    render(): React.JSX.Element;
}
export interface WizardStepProps<D> extends WizardCommonProps<D> {
    wizard?: Wizard<D>;
    title?: string;
    className?: string | object;
    contentClass?: string | object;
    customButtons?: StrictReactNode;
    moreButtons?: StrictReactNode;
    loading?: boolean;
    waiting?: boolean;
    disabledNext?: boolean;
    hideNextBtn?: boolean;
    hideBackBtn?: boolean;
    step?: number;
    prevLabel?: StrictReactNode;
    nextLabel?: StrictReactNode;
    next?: () => void | boolean | Promise<any>;
    prev?: () => void;
    first?: () => void;
    last?: () => void;
    isFirst?: () => boolean;
    isLast?: () => boolean;
    beforeContent?: StrictReactNode;
    afterContent?: StrictReactNode;
    noValidate?: boolean;
    skip?: boolean;
    scrollable?: boolean;
    children?: StrictReactNode | StrictReactNode[];
    testIdForNext?: string;
    testIdForPrev?: string;
}
interface WizardStepState {
    waiting?: boolean;
}
export declare class WizardStep<D> extends React.Component<WizardStepProps<D>, WizardStepState> {
    private form;
    state: WizardStepState;
    private unmounting;
    static defaultProps: WizardStepProps<any>;
    componentWillUnmount(): void;
    prev: () => void;
    next: () => void;
    submit: import("lodash").DebouncedFunc<() => void>;
    renderLoading(): React.JSX.Element;
    keyDown(evt: React.KeyboardEvent<HTMLElement>): void;
    render(): React.JSX.Element | null;
}
export {};
