import { ArchbaseDataSource } from '@archbase/data';
export interface FormWizardStep<T = any> {
    /** Identificador único do step */
    id: string;
    /** Título do step */
    title: string;
    /** Descrição do step */
    description?: string;
    /** Ícone do step */
    icon?: React.ReactNode;
    /** Função de validação do step - retorna true se válido, string com erro se inválido */
    validate?: (data: T) => boolean | string | Promise<boolean | string>;
    /** Se o step é opcional */
    optional?: boolean;
    /** Campos do DataSource que pertencem a este step (para validação parcial) */
    fields?: string[];
}
export interface UseArchbaseFormWizardOptions<T extends object, ID> {
    /** Lista de steps do wizard */
    steps: FormWizardStep<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 pular steps opcionais */
    allowSkipOptional?: boolean;
}
export interface UseArchbaseFormWizardReturn<T> {
    /** Step atual (0-indexed) */
    currentStep: number;
    /** Total de steps */
    totalSteps: number;
    /** Se está no primeiro step */
    isFirstStep: boolean;
    /** Se está no último step */
    isLastStep: boolean;
    /** Se o wizard foi completado */
    isCompleted: boolean;
    /** Se está validando */
    isValidating: boolean;
    /** Erro de validação do step atual */
    validationError: string | null;
    /** Dados do step atual */
    currentStepData: FormWizardStep<T>;
    /** Steps completados */
    completedSteps: Set<number>;
    /** Avançar para o próximo step */
    nextStep: () => Promise<boolean>;
    /** Voltar para o step anterior */
    prevStep: () => void;
    /** Ir para um step específico */
    goToStep: (step: number) => Promise<boolean>;
    /** Resetar o wizard */
    reset: () => void;
    /** Completar o wizard */
    complete: () => Promise<boolean>;
    /** Marcar step como completado */
    markStepCompleted: (step: number) => void;
    /** Verificar se um step está completado */
    isStepCompleted: (step: number) => boolean;
    /** Verificar se pode avançar */
    canGoNext: boolean;
    /** Verificar se pode voltar */
    canGoBack: boolean;
}
export declare function useArchbaseFormWizard<T extends object, ID = string>(options: UseArchbaseFormWizardOptions<T, ID>): UseArchbaseFormWizardReturn<T>;
