import { StateMachineConfig, StateIdentifier } from "../utils/stateMachine";
export interface UseFormStateMachineOptions<TData = any> {
    /** Initial form data */
    initialData?: TData;
    /** Callback when state changes */
    onTransition?: (state: StateIdentifier, data: TData) => void;
    /** Callback when form is completed */
    onComplete?: (data: TData) => void;
}
export interface FormStateMachineResult<TData> {
    /** Name of the current step/state */
    currentStep: StateIdentifier;
    /** Current form data */
    data: TData;
    /** Progress (0 to 1) */
    progress: number;
    /** Whether we can go back */
    canGoBack: boolean;
    /** Transition to the next valid state based on 'NEXT' event */
    next: () => void;
    /** Move to previous state (if history is managed) */
    previous: () => void;
    /** Update form data for the current step */
    updateData: (newData: Partial<TData>) => void;
    /** Jump to a specific state (if allowed) */
    goTo: (state: StateIdentifier) => void;
}
/**
 * Hook to manage multi-step form logic via a state machine
 */
export declare function useFormStateMachine<TData extends Record<string, any>>(config: StateMachineConfig<TData>, options?: UseFormStateMachineOptions<TData>): FormStateMachineResult<TData>;
