// Need to use the React-specific entry point to import createApi import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; import { ValidatedPaymentLink, IPropsSupportedCurrency, } from "../components/types"; // Define a service using a base URL and expected endpoints export const checkoutApi = createApi({ reducerPath: "checkoutApi", baseQuery: fetchBaseQuery({ baseUrl: `${process.env.REACT_APP_IVORY_API}/` }), tagTypes: ["IPropsSupportedCurrency"], endpoints: (builder) => ({ validatePaymentLink: builder.query({ query: (reference) => `payment-links/${reference}/pay`, }), makePayment: builder.mutation({ query({ data, id }) { return { url: `payment-links/${id}/transactions`, method: "POST", body: data, }; }, }), payWithWalletConnect: builder.mutation({ query({ data, ref }) { return { url: `transactions/${ref}/wallet-connect`, method: "POST", body: data, }; }, }), paymentListener: builder.query({ query: (reference) => `transactions/${reference}/verify`, }), walletListener: builder.mutation({ query: (reference) => `transactions/${reference}/verify`, transformResponse: (response: { data: any }, meta, arg) => response.data, }), requestRefund: builder.query({ query: (reference) => `refunds/${reference}`, }), refundWallet: builder.mutation({ query({ data, ref }) { return { url: `refunds/${ref}/transfer`, method: "POST", body: data, }; }, }), getCurrency: builder.query, string>({ query: (id) => `businesses/${id}/supported-cryptocurrencies`, transformResponse: ( response: { data: Array }, meta, arg ) => response.data, }), }), }); export const { useValidatePaymentLinkQuery, useMakePaymentMutation, usePayWithWalletConnectMutation, usePaymentListenerQuery, useRequestRefundQuery, useRefundWalletMutation, useWalletListenerMutation, useGetCurrencyQuery, } = checkoutApi;