@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
42 lines • 4.57 kB
TypeScript
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