UNPKG

use-shopify

Version:

React hooks to work with Shopify's Storefront API

50 lines (49 loc) 1.99 kB
import { DocumentNode } from 'graphql'; import { UserError, QueryFunction, Checkout, CheckoutLineItemInput, CheckoutLineItemUpdateInput } from '../types'; import { CheckoutCreateInput, CheckoutAttributesUpdateV2Input } from './queries'; /** * API */ export interface UseCheckoutConfig { foo?: string; } interface UseCheckoutArguments { query: QueryFunction; queries?: Partial<UseCheckoutQueries>; config?: Partial<UseCheckoutConfig>; } export interface UseCheckoutQueries { CHECKOUT_CREATE: string | DocumentNode; CHECKOUT_FETCH: string | DocumentNode; CHECKOUT_DISCOUNT_CODE_APPLY: string | DocumentNode; CHECKOUT_DISCOUNT_CODE_REMOVE: string | DocumentNode; CHECKOUT_LINE_ITEMS_ADD: string | DocumentNode; CHECKOUT_LINE_ITEMS_UPDATE: string | DocumentNode; } export interface UseCheckoutValues extends CheckoutState { checkoutCreate: (args: CheckoutCreateInput) => Promise<CheckoutAndErrors>; checkoutLineItemsAdd: (lineItems: CheckoutLineItemInput[]) => Promise<void>; checkoutLineItemsUpdate: (lineItems: CheckoutLineItemUpdateInput[]) => Promise<void>; checkoutDiscountCodeApply: (discountCode: string) => Promise<void>; checkoutDiscountCodeRemove: () => Promise<void>; checkoutAttributesUpdate: (args: CheckoutAttributesUpdateV2Input) => Promise<void>; addLineItem: (lineItem: CheckoutLineItemInput) => Promise<void>; updateLineItem: (lineItem: CheckoutLineItemUpdateInput) => Promise<void>; clearCheckout: () => Promise<void>; addNote: (note: string) => Promise<void>; } /** * State */ export interface CheckoutState { loading: boolean; ready: boolean; checkoutUserErrors: UserError[]; checkout: Checkout | void; } interface CheckoutAndErrors { checkout?: Checkout; checkoutUserErrors?: UserError[]; } export declare const useCheckout: ({ queries: userQueries, query, }: UseCheckoutArguments) => UseCheckoutValues; export {};