@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
53 lines • 4.24 kB
TypeScript
import { type QueryClient } from "@tanstack/react-query";
import type { CartQueryKeys } from "../cart/types";
import { type CacheConfig } from "../shared/cache-config";
import { type ActiveCartQueryKeyMatcher } from "../shared/cart-cache-sync";
import type { QueryNamespace } from "../shared/query-keys";
import type { CheckoutCartLike, CheckoutMutationOptions, CheckoutPaymentInputBase, CheckoutQueryKeys, CheckoutService, CheckoutShippingInputBase, ShippingOptionLike, UseCheckoutPaymentResult, UseCheckoutShippingResult } from "./types";
export type { CheckoutMutationOptions } from "./types";
export type CheckoutShippingHookInput<TCart extends CheckoutCartLike, TShippingOption extends ShippingOptionLike> = CheckoutShippingInputBase & {
cart?: TCart | null;
calculatePrices?: boolean;
buildShippingData?: (option: TShippingOption) => Record<string, unknown>;
};
export type CheckoutPaymentHookInput<TCart extends CheckoutCartLike> = CheckoutPaymentInputBase & {
cart?: TCart | null;
};
type CheckoutShippingSuspenseHookInput<TCart extends CheckoutCartLike, TShippingOption extends ShippingOptionLike> = Omit<CheckoutShippingHookInput<TCart, TShippingOption>, "enabled" | "cartId"> & {
cartId: string;
};
type CheckoutPaymentSuspenseHookInput<TCart extends CheckoutCartLike> = Omit<CheckoutPaymentHookInput<TCart>, "enabled">;
export type CreateCheckoutHooksConfig<TCart extends CheckoutCartLike, TShippingOption extends ShippingOptionLike, TPaymentProvider, TPaymentCollection extends TCart["payment_collection"], TCompleteResult> = {
service: CheckoutService<TCart, TShippingOption, TPaymentProvider, TPaymentCollection, TCompleteResult>;
queryKeys?: CheckoutQueryKeys;
queryKeyNamespace?: QueryNamespace;
cacheConfig?: CacheConfig;
cartQueryKeys?: CartQueryKeys;
isActiveCartQueryKey?: ActiveCartQueryKeyMatcher;
};
export declare function createCheckoutHooks<TCart extends CheckoutCartLike, TShippingOption extends ShippingOptionLike, TPaymentProvider, TPaymentCollection extends TCart["payment_collection"], TCompleteResult>({ service, queryKeys, queryKeyNamespace, cacheConfig, cartQueryKeys, isActiveCartQueryKey, }: CreateCheckoutHooksConfig<TCart, TShippingOption, TPaymentProvider, TPaymentCollection, TCompleteResult>): {
useCheckoutShipping: <TContext = unknown>(input: CheckoutShippingHookInput<TCart, TShippingOption>, options?: CheckoutMutationOptions<TCart, {
optionId: string;
data?: Record<string, unknown>;
}, TContext>) => UseCheckoutShippingResult<TShippingOption, TCart>;
useSuspenseCheckoutShipping: <TContext = unknown>(input: CheckoutShippingSuspenseHookInput<TCart, TShippingOption>, options?: CheckoutMutationOptions<TCart, {
optionId: string;
data?: Record<string, unknown>;
}, TContext>) => UseCheckoutShippingResult<TShippingOption, TCart>;
useCheckoutPayment: <TPaymentContext = unknown>(input: CheckoutPaymentHookInput<TCart>, options?: CheckoutMutationOptions<TPaymentCollection, string, TPaymentContext>) => UseCheckoutPaymentResult<TPaymentProvider, TPaymentCollection>;
useSuspenseCheckoutPayment: <TSuspensePaymentContext = unknown>(input: CheckoutPaymentSuspenseHookInput<TCart>, options?: CheckoutMutationOptions<TPaymentCollection, string, TSuspensePaymentContext>) => UseCheckoutPaymentResult<TPaymentProvider, TPaymentCollection>;
getPaymentProvidersQueryOptions: (regionId: string) => {
staleTime: number;
gcTime: number;
refetchOnWindowFocus?: boolean;
refetchOnMount?: boolean | "always";
refetchOnReconnect?: boolean;
queryKey: import("../shared/query-keys").QueryKey;
queryFn: ({ signal }: {
signal?: AbortSignal;
}) => Promise<TPaymentProvider[]>;
};
fetchPaymentProviders: (queryClient: QueryClient, regionId: string) => Promise<TPaymentProvider[]>;
};
export type CheckoutHooks<TCart extends CheckoutCartLike, TShippingOption extends ShippingOptionLike, TPaymentProvider, TPaymentCollection extends TCart["payment_collection"], TCompleteResult> = ReturnType<typeof createCheckoutHooks<TCart, TShippingOption, TPaymentProvider, TPaymentCollection, TCompleteResult>>;
//# sourceMappingURL=hooks.d.ts.map