UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

42 lines • 4.57 kB
import type { AuthQueryKeys } from "../auth/types"; import { type CacheConfig } from "../shared/cache-config"; import type { ReadQueryOptions, SuspenseQueryOptions } from "../shared/hook-types"; import { type QueryNamespace } from "../shared/query-keys"; import type { CustomerAddressAdapter, CustomerAddressCreateInputBase, CustomerAddressListInputBase, CustomerAddressListResponse, CustomerAddressUpdateInputBase, CustomerMutationOptions, CustomerProfileUpdateInputBase, CustomerQueryKeys, CustomerService, UseCustomerAddressesResult, UseSuspenseCustomerAddressesResult } from "./types"; export type CreateCustomerHooksConfig<TCustomer, TAddress, TListInput extends CustomerAddressListInputBase, TListParams, TCreateInput extends CustomerAddressCreateInputBase, TCreateParams, TUpdateInput extends CustomerAddressUpdateInputBase, TUpdateParams, TUpdateCustomerInput extends CustomerProfileUpdateInputBase, TUpdateCustomerParams> = { service: CustomerService<TCustomer, TAddress, TListParams, TCreateParams, TUpdateParams, TUpdateCustomerParams>; buildListParams?: (input: TListInput) => TListParams; addressAdapter?: CustomerAddressAdapter<TCreateInput, TCreateParams, TUpdateInput, TUpdateParams>; buildUpdateCustomerParams?: (input: TUpdateCustomerInput) => TUpdateCustomerParams; queryKeys?: CustomerQueryKeys<TListParams>; authQueryKeys?: Pick<AuthQueryKeys, "customer">; queryKeyNamespace?: QueryNamespace; cacheConfig?: CacheConfig; }; /** * Create customer hooks with strongly-typed address/profile mappers. * * @example * const { useCustomerAddresses, useUpdateCustomer } = createCustomerHooks({ * service, * buildListParams: (input) => ({ ...input }), * }) */ export declare function createCustomerHooks<TCustomer, TAddress, TListInput extends CustomerAddressListInputBase, TListParams = TListInput, TCreateInput extends CustomerAddressCreateInputBase = CustomerAddressCreateInputBase, TCreateParams = TCreateInput, TUpdateInput extends CustomerAddressUpdateInputBase = CustomerAddressUpdateInputBase, TUpdateParams = TUpdateInput, TUpdateCustomerInput extends CustomerProfileUpdateInputBase = CustomerProfileUpdateInputBase, TUpdateCustomerParams = TUpdateCustomerInput>({ service, buildListParams, addressAdapter, buildUpdateCustomerParams, queryKeys, authQueryKeys, queryKeyNamespace, cacheConfig, }: CreateCustomerHooksConfig<TCustomer, TAddress, TListInput, TListParams, TCreateInput, TCreateParams, TUpdateInput, TUpdateParams, TUpdateCustomerInput, TUpdateCustomerParams>): { useCustomerAddresses: (input: TListInput, options?: { queryOptions?: ReadQueryOptions<CustomerAddressListResponse<TAddress>>; }) => UseCustomerAddressesResult<TAddress>; useSuspenseCustomerAddresses: (input: TListInput, options?: { queryOptions?: SuspenseQueryOptions<CustomerAddressListResponse<TAddress>>; }) => UseSuspenseCustomerAddressesResult<TAddress>; useCreateCustomerAddress: <TContext = unknown>(options?: CustomerMutationOptions<TAddress, TCreateInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TAddress, unknown, TCreateInput, TContext>; useUpdateCustomerAddress: <TContext = unknown>(options?: CustomerMutationOptions<TAddress, TUpdateInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TAddress, unknown, TUpdateInput, TContext>; useDeleteCustomerAddress: <TContext = unknown>(options?: CustomerMutationOptions<void, { addressId: string; }, TContext>) => import("@tanstack/react-query").UseMutationResult<void, unknown, { addressId: string; }, TContext>; useUpdateCustomer: <TContext = unknown>(options?: CustomerMutationOptions<TCustomer, TUpdateCustomerInput, TContext>) => import("@tanstack/react-query").UseMutationResult<TCustomer, unknown, TUpdateCustomerInput, TContext>; }; export type CustomerHooks<TCustomer, TAddress, TListInput extends CustomerAddressListInputBase, TListParams = TListInput, TCreateInput extends CustomerAddressCreateInputBase = CustomerAddressCreateInputBase, TCreateParams = TCreateInput, TUpdateInput extends CustomerAddressUpdateInputBase = CustomerAddressUpdateInputBase, TUpdateParams = TUpdateInput, TUpdateCustomerInput extends CustomerProfileUpdateInputBase = CustomerProfileUpdateInputBase, TUpdateCustomerParams = TUpdateCustomerInput> = ReturnType<typeof createCustomerHooks<TCustomer, TAddress, TListInput, TListParams, TCreateInput, TCreateParams, TUpdateInput, TUpdateParams, TUpdateCustomerInput, TUpdateCustomerParams>>; //# sourceMappingURL=hooks.d.ts.map