import { ReactNode } from 'react';
import { Step, StepperOwnerState, StepperProps } from '../types';
export interface StepperState extends Pick<StepperProps, 'storeId' | 'visibleTitle' | 'steps' | 'indicatorType' | 'orientation' | 'size' | 'visibilityData' | 'initialStepKey'> {
    /**
     *  "ownerState" estado a nivel de clases del componente
     */
    ownerState: StepperOwnerState;
    /**
     * "currentStep" step actual
     */
    currentStep: number;
    /**
     * "stepValidationStatus" estado de validación por cada step
     * - true: el paso es válido
     */
    stepValidationStatus: Record<number, boolean>;
    /**
     * "isValidating" indica si el stepper está en proceso de validación
     */
    isValidating: boolean;
    /**
     * Indica si initialStepKey ya fue aplicado. Previene re-aplicación después de navegación.
     */
    initialStepKeyApplied: boolean;
}
export interface StepperStateWithActions extends StepperState {
    actions: {
        /**
         * inicializa el estado del componente con los steps que provienen desde afuera,
         * @param steps - Array de steps
         * @param preserveStepValidationStatus - Indica si se debe preservar el estado de validación de los pasos, por defecto es false
         */
        init: (steps: Array<Step>, preserveStepValidationStatus?: boolean) => void;
        /**
         * Establece el paso actual
         * @param currentStep - Índice del paso actual
         */
        setCurrentStep: (currentStep: number) => void;
        /**
         * Establece el estado de validación de un paso
         * @param stepIndex - Índice del paso
         * @param isValid - Estado de validación del paso
         */
        setStepValidationStatus: (stepIndex: number, isValid: boolean) => void;
        /**
         * Retrocede al paso anterior válido
         * @param formData - Datos del formulario para evaluar conditions
         * @param visibilityData - Datos adicionales para evaluar conditions
         */
        prevStep: (formData?: Record<string, any>, visibilityData?: any) => void;
        /**
         * Valida el paso actual y avanza al siguiente si es válido
         * @param validateFn - Función de validación
         * @param formData - Datos del formulario para evaluar conditions
         * @param visibilityData - Datos adicionales para evaluar conditions
         */
        nextStep: (validateFn: () => Promise<boolean>, formData?: Record<string, any>, visibilityData?: any) => Promise<boolean>;
        /**
         * resetStepper - Resetea el Stepper a su estado inicial
         */
        resetStepper: () => void;
        /**
         * Aplica initialStepKey validando los steps anteriores.
         * @param validateFieldsFn - Función que valida campos específicos usando RHF trigger()
         * @param formData - Valores actuales del formulario
         */
        applyInitialStepKey: (validateFieldsFn: (fields: string[]) => Promise<boolean>, formData: Record<string, any>) => Promise<void>;
    };
}
export interface StepperContextProps extends StepperProps {
    children: ReactNode;
}
export type InitialStoreProps = Pick<StepperState, 'ownerState' | 'storeId' | 'steps' | 'visibleTitle' | 'indicatorType' | 'orientation' | 'visibilityData' | 'initialStepKey'>;
//# sourceMappingURL=types.d.ts.map