import { CreateOrderResult } from '@evershop/evershop/checkout/services'; import { CheckoutData } from '@evershop/evershop/types/checkoutData'; import React, { ReactNode } from 'react'; import { UseFormReturn, FieldValues } from 'react-hook-form'; interface PaymentMethod { code: string; name: string; [key: string]: unknown; } interface PaymentMethodRendererProps { isSelected: boolean; } interface PaymentMethodComponent { nameRenderer: React.ComponentType; formRenderer: React.ComponentType; checkoutButtonRenderer: React.ComponentType; } interface ShippingMethod { code: string; name: string; cost?: { value: number; text: string; }; [key: string]: unknown; } interface ShippingAddressParams { country: string; province?: string; postcode?: string; } interface CheckoutState { orderPlaced: boolean; orderId?: string; loadingStates: { placingOrder: boolean; }; allowGuestCheckout: boolean; checkoutData: CheckoutData; registeredPaymentComponents: Record; } interface CheckoutContextValue extends CheckoutState { cartId: string | undefined; checkoutSuccessUrl: string; loading: boolean; requiresShipment: boolean; form: UseFormReturn; } interface CheckoutDispatchContextValue { placeOrder: () => Promise; checkout: () => Promise; getPaymentMethods: () => PaymentMethod[]; getShippingMethods: (params?: ShippingAddressParams) => Promise; setCheckoutData: (data: CheckoutData) => void; updateCheckoutData: (data: Partial) => void; clearCheckoutData: () => void; registerPaymentComponent: (code: string, component: PaymentMethodComponent) => void; enableForm: () => void; disableForm: () => void; } interface CheckoutProviderProps { children: ReactNode; placeOrderApi: string; checkoutSuccessUrl: string; allowGuestCheckout?: boolean; form: UseFormReturn; enableForm: () => void; disableForm: () => void; } export declare function CheckoutProvider({ children, placeOrderApi, checkoutSuccessUrl, allowGuestCheckout, form, enableForm, disableForm }: CheckoutProviderProps): React.JSX.Element; export declare const useCheckout: () => CheckoutContextValue; export declare const useCheckoutDispatch: () => CheckoutDispatchContextValue; export type { PaymentMethod, ShippingMethod, ShippingAddressParams, CheckoutState };