import { default as React, ReactNode } from 'react';
import { MantineColor, MantineSize } from '@mantine/core';
import { ArchbaseDataSource } from '@archbase/data';
import { FormWizardStep } from './useArchbaseFormWizard';
export interface ArchbaseFormWizardStep<T = any> extends FormWizardStep<T> {
    /** Componente React a ser renderizado no step */
    component: ReactNode | ((props: {
        data: T;
        stepIndex: number;
    }) => ReactNode);
}
export interface ArchbaseFormWizardProps<T extends object, ID = string> {
    /** Lista de steps do wizard */
    steps: ArchbaseFormWizardStep<T>[];
    /** DataSource vinculado ao formulário */
    dataSource?: ArchbaseDataSource<T, ID>;
    /** Step inicial */
    initialStep?: number;
    /** Callback ao completar todos os steps */
    onComplete?: (data: T) => void | Promise<void>;
    /** Callback ao mudar de step */
    onStepChange?: (fromStep: number, toStep: number, data: T) => void;
    /** Se deve validar ao avançar */
    validateOnNext?: boolean;
    /** Se permite voltar para steps anteriores */
    allowBack?: boolean;
    /** Se permite clicar nos steps para navegar */
    allowStepClick?: boolean;
    /** Orientação do stepper */
    orientation?: 'horizontal' | 'vertical';
    /** Tamanho do stepper */
    size?: MantineSize;
    /** Cor do stepper */
    color?: MantineColor;
    /** Label do botão anterior */
    backLabel?: string;
    /** Label do botão próximo */
    nextLabel?: string;
    /** Label do botão finalizar */
    completeLabel?: string;
    /** Ícone do botão anterior */
    backIcon?: ReactNode;
    /** Ícone do botão próximo */
    nextIcon?: ReactNode;
    /** Ícone do botão finalizar */
    completeIcon?: ReactNode;
    /** Se deve mostrar os botões de navegação */
    showNavigation?: boolean;
    /** Posição dos botões de navegação */
    navigationPosition?: 'top' | 'bottom' | 'both';
    /** Componente de revisão final (opcional) */
    reviewComponent?: ReactNode | ((props: {
        data: T;
    }) => ReactNode);
    /** Componente de conclusão */
    completedComponent?: ReactNode | ((props: {
        data: T;
        onReset: () => void;
    }) => ReactNode);
    /** Se deve mostrar o step de revisão */
    showReviewStep?: boolean;
    /** Padding do conteúdo */
    contentPadding?: number | string;
    /** Altura mínima do conteúdo */
    contentMinHeight?: number | string;
    /** Classe CSS adicional */
    className?: string;
    /** Estilos adicionais */
    style?: React.CSSProperties;
}
export declare const ArchbaseFormWizard: <T extends object, ID = string>(props: ArchbaseFormWizardProps<T, ID> & {
    ref?: React.Ref<HTMLDivElement>;
}) => React.ReactElement;
