import { CheckoutStep } from '../types'; import type { CheckoutFormData, CheckoutState, ElasticPathOrder, AddressData, ShippingRate } from '../types'; /** * Configuration options for the checkout hook */ interface UseCheckoutOptions { /** Initial cart ID to checkout */ cartId?: string; /** Base URL for API endpoints */ apiBaseUrl?: string; /** Enable automatic step progression */ autoAdvanceSteps?: boolean; /** Callback when checkout is completed */ onComplete?: (order: ElasticPathOrder) => void; /** Callback when checkout fails */ onError?: (error: Error) => void; } /** * Return type for the checkout hook */ interface UseCheckoutReturn { state: CheckoutState; submitCustomerInfo: (data: CheckoutFormData) => Promise; calculateShipping: (address: AddressData) => Promise; selectShippingRate: (rate: ShippingRate) => void; createOrder: () => Promise; setupPayment: (orderId: string, amount: number, currency: string) => Promise<{ clientSecret: string; transactionId: string; }>; confirmPayment: (orderId: string, transactionId: string, paymentIntentId: string) => Promise; goToStep: (step: CheckoutStep) => void; nextStep: () => void; previousStep: () => void; reset: () => void; canProceedToNext: boolean; totalAmount: number; } /** * Custom hook for managing checkout flow */ export declare function useCheckout(options?: UseCheckoutOptions): UseCheckoutReturn; export default useCheckout;