UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

133 lines • 5.74 kB
import type { HttpTypes } from "@medusajs/types"; import type { QueryClient } from "@tanstack/react-query"; import { type ActiveCartQueryKeyMatcher } from "../shared/cart-cache-sync"; import type { StorageValueStore } from "../shared/storage-value-store"; import { type MedusaCartFlowStorefront } from "./cart-flow"; type MedusaCheckoutShippingHook = (input: { cartId?: string; cart?: HttpTypes.StoreCart | null; enabled?: boolean; calculatePrices?: boolean; }, options?: { onSuccess?: (cart: HttpTypes.StoreCart) => void; onError?: (error: unknown) => void; }) => { shippingOptions: HttpTypes.StoreCartShippingOption[]; shippingPrices: Record<string, number>; isLoading: boolean; isFetching: boolean; isCalculating: boolean; setShippingMethod: (optionId: string, data?: Record<string, unknown>) => void; isSettingShipping: boolean; selectedShippingMethodId?: string; selectedShippingMethodData?: Record<string, unknown>; selectedOption?: HttpTypes.StoreCartShippingOption; }; type MedusaCheckoutPaymentHook = (input: { cartId?: string; regionId?: string; cart?: HttpTypes.StoreCart | null; enabled?: boolean; }, options?: { onSuccess?: (paymentCollection: HttpTypes.StorePaymentCollection) => void; onError?: (error: unknown) => void; }) => { paymentProviders: HttpTypes.StorePaymentProvider[]; initiatePayment: (providerId: string) => void; initiatePaymentAsync: (providerId: string) => Promise<HttpTypes.StorePaymentCollection>; isInitiatingPayment: boolean; isLoading: boolean; isFetching: boolean; canInitiatePayment: boolean; hasPaymentCollection: boolean; hasPaymentSessions: boolean; }; export type MedusaCheckoutFlowStorefront = MedusaCartFlowStorefront & { hooks: MedusaCartFlowStorefront["hooks"] & { checkout: { useCheckoutShipping: MedusaCheckoutShippingHook; useCheckoutPayment: MedusaCheckoutPaymentHook; fetchPaymentProviders: (queryClient: QueryClient, regionId: string) => Promise<HttpTypes.StorePaymentProvider[]>; }; }; }; export type MedusaShippingMethodData = Record<string, unknown>; export type UseMedusaCheckoutShippingOptions = { enabled?: boolean; calculatePrices?: boolean; onSuccess?: (cart: HttpTypes.StoreCart) => void; onError?: (error: unknown) => void; normalizeShippingData?: (data?: MedusaShippingMethodData) => Record<string, unknown> | undefined; }; export type UseMedusaCheckoutShippingReturn = { shippingOptions: HttpTypes.StoreCartShippingOption[]; shippingPrices: Record<string, number>; isLoading: boolean; isFetching: boolean; isCalculating: boolean; setShipping: (optionId: string, data?: MedusaShippingMethodData) => void; isSettingShipping: boolean; canLoadShipping: boolean; canSetShipping: boolean; selectedShippingMethodId?: string; selectedOption?: HttpTypes.StoreCartShippingOption; }; export type UseMedusaCheckoutPaymentOptions = { enabled?: boolean; onSuccess?: (paymentCollection: HttpTypes.StorePaymentCollection) => void; onError?: (error: unknown) => void; }; export type UseMedusaCheckoutPaymentReturn = { paymentProviders: HttpTypes.StorePaymentProvider[]; initiatePayment: (providerId: string) => void; initiatePaymentAsync: (providerId: string) => Promise<HttpTypes.StorePaymentCollection>; isInitiatingPayment: boolean; isLoading: boolean; isFetching: boolean; canInitiatePayment: boolean; hasPaymentCollection: boolean; hasPaymentSessions: boolean; }; export type CreateMedusaCheckoutFlowConfig = { storefront: MedusaCheckoutFlowStorefront; cartStorage?: StorageValueStore; isActiveCartQueryKey?: ActiveCartQueryKeyMatcher; }; export type UseMedusaCompleteCheckoutInput = { cartId?: string; cart?: HttpTypes.StoreCart | null; regionId?: string; enabled?: boolean; }; export type MedusaCompleteCheckoutRequest = { paymentProviderId?: string; }; export type MedusaCompleteCheckoutStage = "cart" | "payment_provider" | "payment" | "complete"; export type MedusaCompleteCheckoutError = { stage: MedusaCompleteCheckoutStage; message: string; cause?: unknown; }; export type MedusaCompleteCheckoutSuccess = { order: HttpTypes.StoreOrder; paymentCollection: HttpTypes.StorePaymentCollection; paymentProviderId: string; }; export type ResolvePaymentProviderContext = { cart?: HttpTypes.StoreCart | null; existingPaymentProviderId?: string; paymentProviders: HttpTypes.StorePaymentProvider[]; requestedPaymentProviderId?: string; }; export type UseMedusaCompleteCheckoutOptions = { resolvePaymentProviderId?: (context: ResolvePaymentProviderContext) => string | null | undefined; onSuccess?: (result: MedusaCompleteCheckoutSuccess) => void; onError?: (error: MedusaCompleteCheckoutError) => void; }; export declare function createMedusaCheckoutFlow({ storefront, cartStorage, isActiveCartQueryKey, }: CreateMedusaCheckoutFlowConfig): { useCheckoutShipping: (cartId?: string, cart?: HttpTypes.StoreCart | null, options?: UseMedusaCheckoutShippingOptions) => UseMedusaCheckoutShippingReturn; useCheckoutPayment: (cartId?: string, regionId?: string, cart?: HttpTypes.StoreCart | null, options?: UseMedusaCheckoutPaymentOptions) => UseMedusaCheckoutPaymentReturn; useCompleteCheckout: (input: UseMedusaCompleteCheckoutInput, options?: UseMedusaCompleteCheckoutOptions) => import("@tanstack/react-query").UseMutationResult<MedusaCompleteCheckoutSuccess, MedusaCompleteCheckoutError, MedusaCompleteCheckoutRequest | undefined, unknown>; }; export {}; //# sourceMappingURL=checkout-flow.d.ts.map