@daimo/pay 0.3.17 → 0.3.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/README.md +1 -1
  2. package/build/index.d.ts +419 -0
  3. package/build/index.es.js +159 -117
  4. package/build/index.es.js.map +1 -1
  5. package/package.json +6 -5
  6. package/build/packages/paykit/packages/connectkit/src/assets/ScanIconWithLogos.d.ts +0 -5
  7. package/build/packages/paykit/packages/connectkit/src/assets/browsers.d.ts +0 -10
  8. package/build/packages/paykit/packages/connectkit/src/assets/chains.d.ts +0 -79
  9. package/build/packages/paykit/packages/connectkit/src/assets/coins.d.ts +0 -2
  10. package/build/packages/paykit/packages/connectkit/src/assets/crepe.d.ts +0 -4
  11. package/build/packages/paykit/packages/connectkit/src/assets/icons.d.ts +0 -33
  12. package/build/packages/paykit/packages/connectkit/src/assets/logos.d.ts +0 -182
  13. package/build/packages/paykit/packages/connectkit/src/assets/wallet.d.ts +0 -4
  14. package/build/packages/paykit/packages/connectkit/src/assets/wave.d.ts +0 -2
  15. package/build/packages/paykit/packages/connectkit/src/components/Common/Alert/index.d.ts +0 -6
  16. package/build/packages/paykit/packages/connectkit/src/components/Common/Alert/styles.d.ts +0 -2
  17. package/build/packages/paykit/packages/connectkit/src/components/Common/Alert/types.d.ts +0 -5
  18. package/build/packages/paykit/packages/connectkit/src/components/Common/Avatar/index.d.ts +0 -16
  19. package/build/packages/paykit/packages/connectkit/src/components/Common/Avatar/styles.d.ts +0 -2
  20. package/build/packages/paykit/packages/connectkit/src/components/Common/BrowserIcon/index.d.ts +0 -4
  21. package/build/packages/paykit/packages/connectkit/src/components/Common/BrowserIcon/styles.d.ts +0 -1
  22. package/build/packages/paykit/packages/connectkit/src/components/Common/BrowserIcon/types.d.ts +0 -3
  23. package/build/packages/paykit/packages/connectkit/src/components/Common/Button/index.d.ts +0 -4
  24. package/build/packages/paykit/packages/connectkit/src/components/Common/Button/styles.d.ts +0 -10
  25. package/build/packages/paykit/packages/connectkit/src/components/Common/Button/types.d.ts +0 -15
  26. package/build/packages/paykit/packages/connectkit/src/components/Common/Chain/index.d.ts +0 -8
  27. package/build/packages/paykit/packages/connectkit/src/components/Common/Chain/styles.d.ts +0 -4
  28. package/build/packages/paykit/packages/connectkit/src/components/Common/ChainSelect/index.d.ts +0 -3
  29. package/build/packages/paykit/packages/connectkit/src/components/Common/ChainSelectDropdown/index.d.ts +0 -9
  30. package/build/packages/paykit/packages/connectkit/src/components/Common/ChainSelectDropdown/styles.d.ts +0 -4
  31. package/build/packages/paykit/packages/connectkit/src/components/Common/ChainSelectList/index.d.ts +0 -4
  32. package/build/packages/paykit/packages/connectkit/src/components/Common/ChainSelectList/styles.d.ts +0 -9
  33. package/build/packages/paykit/packages/connectkit/src/components/Common/ConnectorList/index.d.ts +0 -2
  34. package/build/packages/paykit/packages/connectkit/src/components/Common/ConnectorList/styles.d.ts +0 -5
  35. package/build/packages/paykit/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.d.ts +0 -6
  36. package/build/packages/paykit/packages/connectkit/src/components/Common/CopyToClipboard/index.d.ts +0 -7
  37. package/build/packages/paykit/packages/connectkit/src/components/Common/CustomQRCode/QRCode.d.ts +0 -12
  38. package/build/packages/paykit/packages/connectkit/src/components/Common/CustomQRCode/index.d.ts +0 -6
  39. package/build/packages/paykit/packages/connectkit/src/components/Common/CustomQRCode/styles.d.ts +0 -6
  40. package/build/packages/paykit/packages/connectkit/src/components/Common/CustomQRCode/types.d.ts +0 -8
  41. package/build/packages/paykit/packages/connectkit/src/components/Common/DynamicContainer/index.d.ts +0 -7
  42. package/build/packages/paykit/packages/connectkit/src/components/Common/FitText/index.d.ts +0 -8
  43. package/build/packages/paykit/packages/connectkit/src/components/Common/LazyImage/index.d.ts +0 -8
  44. package/build/packages/paykit/packages/connectkit/src/components/Common/Logo/index.d.ts +0 -8
  45. package/build/packages/paykit/packages/connectkit/src/components/Common/Logo/styles.d.ts +0 -3
  46. package/build/packages/paykit/packages/connectkit/src/components/Common/Modal/index.d.ts +0 -25
  47. package/build/packages/paykit/packages/connectkit/src/components/Common/Modal/styles.d.ts +0 -24
  48. package/build/packages/paykit/packages/connectkit/src/components/Common/OptionsList/index.d.ts +0 -13
  49. package/build/packages/paykit/packages/connectkit/src/components/Common/OptionsList/styles.d.ts +0 -6
  50. package/build/packages/paykit/packages/connectkit/src/components/Common/OrderHeader/index.d.ts +0 -3
  51. package/build/packages/paykit/packages/connectkit/src/components/Common/Portal/index.d.ts +0 -2
  52. package/build/packages/paykit/packages/connectkit/src/components/Common/PoweredByFooter/index.d.ts +0 -2
  53. package/build/packages/paykit/packages/connectkit/src/components/Common/ScrollArea/index.d.ts +0 -7
  54. package/build/packages/paykit/packages/connectkit/src/components/Common/ScrollArea/styles.d.ts +0 -3
  55. package/build/packages/paykit/packages/connectkit/src/components/Common/Spinner/index.d.ts +0 -1
  56. package/build/packages/paykit/packages/connectkit/src/components/Common/Spinner/styles.d.ts +0 -1
  57. package/build/packages/paykit/packages/connectkit/src/components/Common/ThemedButton/index.d.ts +0 -15
  58. package/build/packages/paykit/packages/connectkit/src/components/Common/ThemedButton/styles.d.ts +0 -2
  59. package/build/packages/paykit/packages/connectkit/src/components/Common/Tooltip/index.d.ts +0 -4
  60. package/build/packages/paykit/packages/connectkit/src/components/Common/Tooltip/styles.d.ts +0 -3
  61. package/build/packages/paykit/packages/connectkit/src/components/Common/Tooltip/types.d.ts +0 -9
  62. package/build/packages/paykit/packages/connectkit/src/components/DaimoPay.d.ts +0 -77
  63. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayButton/index.d.ts +0 -44
  64. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayButton/styles.d.ts +0 -4
  65. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.d.ts +0 -2
  66. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.d.ts +0 -15
  67. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.d.ts +0 -6
  68. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.d.ts +0 -5
  69. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayModal/index.d.ts +0 -7
  70. package/build/packages/paykit/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.d.ts +0 -16
  71. package/build/packages/paykit/packages/connectkit/src/components/NetworkButton/index.d.ts +0 -8
  72. package/build/packages/paykit/packages/connectkit/src/components/Pages/About/graphics.d.ts +0 -11
  73. package/build/packages/paykit/packages/connectkit/src/components/Pages/About/index.d.ts +0 -3
  74. package/build/packages/paykit/packages/connectkit/src/components/Pages/About/styles.d.ts +0 -8
  75. package/build/packages/paykit/packages/connectkit/src/components/Pages/Confirmation/index.d.ts +0 -3
  76. package/build/packages/paykit/packages/connectkit/src/components/Pages/Connectors/index.d.ts +0 -3
  77. package/build/packages/paykit/packages/connectkit/src/components/Pages/Connectors/styles.d.ts +0 -9
  78. package/build/packages/paykit/packages/connectkit/src/components/Pages/DownloadApp/index.d.ts +0 -2
  79. package/build/packages/paykit/packages/connectkit/src/components/Pages/MobileConnectors/index.d.ts +0 -3
  80. package/build/packages/paykit/packages/connectkit/src/components/Pages/MobileConnectors/styles.d.ts +0 -5
  81. package/build/packages/paykit/packages/connectkit/src/components/Pages/Onboarding/index.d.ts +0 -3
  82. package/build/packages/paykit/packages/connectkit/src/components/Pages/Onboarding/styles.d.ts +0 -9
  83. package/build/packages/paykit/packages/connectkit/src/components/Pages/PayWithToken/index.d.ts +0 -3
  84. package/build/packages/paykit/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.d.ts +0 -3
  85. package/build/packages/paykit/packages/connectkit/src/components/Pages/SelectMethod/index.d.ts +0 -3
  86. package/build/packages/paykit/packages/connectkit/src/components/Pages/SelectMethod/styles.d.ts +0 -9
  87. package/build/packages/paykit/packages/connectkit/src/components/Pages/SelectToken/index.d.ts +0 -3
  88. package/build/packages/paykit/packages/connectkit/src/components/Pages/Solana/ConnectSolana/index.d.ts +0 -3
  89. package/build/packages/paykit/packages/connectkit/src/components/Pages/Solana/ConnectorSolana/index.d.ts +0 -3
  90. package/build/packages/paykit/packages/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.d.ts +0 -3
  91. package/build/packages/paykit/packages/connectkit/src/components/Pages/Solana/SelectSolanaToken/index.d.ts +0 -3
  92. package/build/packages/paykit/packages/connectkit/src/components/Pages/SwitchNetworks/index.d.ts +0 -3
  93. package/build/packages/paykit/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.d.ts +0 -3
  94. package/build/packages/paykit/packages/connectkit/src/components/Pages/WaitingOther/index.d.ts +0 -4
  95. package/build/packages/paykit/packages/connectkit/src/components/Spinners/CircleSpinner/index.d.ts +0 -9
  96. package/build/packages/paykit/packages/connectkit/src/components/Spinners/CircleSpinner/styles.d.ts +0 -5
  97. package/build/packages/paykit/packages/connectkit/src/components/Spinners/SquircleSpinner/index.d.ts +0 -5
  98. package/build/packages/paykit/packages/connectkit/src/components/Spinners/SquircleSpinner/styles.d.ts +0 -4
  99. package/build/packages/paykit/packages/connectkit/src/components/contexts/solana/index.d.ts +0 -6
  100. package/build/packages/paykit/packages/connectkit/src/components/contexts/web3/index.d.ts +0 -25
  101. package/build/packages/paykit/packages/connectkit/src/constants/chainConfigs.d.ts +0 -18
  102. package/build/packages/paykit/packages/connectkit/src/constants/defaultTheme.d.ts +0 -4
  103. package/build/packages/paykit/packages/connectkit/src/defaultConfig.d.ts +0 -19
  104. package/build/packages/paykit/packages/connectkit/src/defaultConnectors.d.ts +0 -14
  105. package/build/packages/paykit/packages/connectkit/src/defaultTransports.d.ts +0 -15
  106. package/build/packages/paykit/packages/connectkit/src/hooks/connectors/useCoinbaseWalletUri.d.ts +0 -0
  107. package/build/packages/paykit/packages/connectkit/src/hooks/connectors/useWalletConnectUri.d.ts +0 -7
  108. package/build/packages/paykit/packages/connectkit/src/hooks/useChainIsSupported.d.ts +0 -1
  109. package/build/packages/paykit/packages/connectkit/src/hooks/useChains.d.ts +0 -2
  110. package/build/packages/paykit/packages/connectkit/src/hooks/useConnect.d.ts +0 -119
  111. package/build/packages/paykit/packages/connectkit/src/hooks/useConnectCallback.d.ts +0 -8
  112. package/build/packages/paykit/packages/connectkit/src/hooks/useConnectors.d.ts +0 -7
  113. package/build/packages/paykit/packages/connectkit/src/hooks/useDaimoPayStatus.d.ts +0 -4
  114. package/build/packages/paykit/packages/connectkit/src/hooks/useDepositAddressOptions.d.ts +0 -7
  115. package/build/packages/paykit/packages/connectkit/src/hooks/useEnsFallbackConfig.d.ts +0 -2
  116. package/build/packages/paykit/packages/connectkit/src/hooks/useExternalPaymentOptions.d.ts +0 -9
  117. package/build/packages/paykit/packages/connectkit/src/hooks/useFitText.d.ts +0 -14
  118. package/build/packages/paykit/packages/connectkit/src/hooks/useFocusTrap.d.ts +0 -1
  119. package/build/packages/paykit/packages/connectkit/src/hooks/useGoogleFont.d.ts +0 -3
  120. package/build/packages/paykit/packages/connectkit/src/hooks/useIsMobile.d.ts +0 -1
  121. package/build/packages/paykit/packages/connectkit/src/hooks/useIsMounted.d.ts +0 -1
  122. package/build/packages/paykit/packages/connectkit/src/hooks/useLastConnector.d.ts +0 -4
  123. package/build/packages/paykit/packages/connectkit/src/hooks/useLocalStorage.d.ts +0 -7
  124. package/build/packages/paykit/packages/connectkit/src/hooks/useLocales.d.ts +0 -1
  125. package/build/packages/paykit/packages/connectkit/src/hooks/useLockBodyScroll.d.ts +0 -1
  126. package/build/packages/paykit/packages/connectkit/src/hooks/useModal.d.ts +0 -10
  127. package/build/packages/paykit/packages/connectkit/src/hooks/usePayWithSolanaToken.d.ts +0 -4
  128. package/build/packages/paykit/packages/connectkit/src/hooks/usePaymentInfo.d.ts +0 -46
  129. package/build/packages/paykit/packages/connectkit/src/hooks/usePrevious.d.ts +0 -1
  130. package/build/packages/paykit/packages/connectkit/src/hooks/useSolanaPaymentOptions.d.ts +0 -9
  131. package/build/packages/paykit/packages/connectkit/src/hooks/useWalletConnectModal.d.ts +0 -4
  132. package/build/packages/paykit/packages/connectkit/src/hooks/useWalletPaymentOptions.d.ts +0 -11
  133. package/build/packages/paykit/packages/connectkit/src/hooks/useWindowSize.d.ts +0 -4
  134. package/build/packages/paykit/packages/connectkit/src/index.d.ts +0 -12
  135. package/build/packages/paykit/packages/connectkit/src/localizations/index.d.ts +0 -93
  136. package/build/packages/paykit/packages/connectkit/src/localizations/locales/ar-AE.d.ts +0 -3
  137. package/build/packages/paykit/packages/connectkit/src/localizations/locales/ca-AD.d.ts +0 -3
  138. package/build/packages/paykit/packages/connectkit/src/localizations/locales/ee-EE.d.ts +0 -3
  139. package/build/packages/paykit/packages/connectkit/src/localizations/locales/en-US.d.ts +0 -93
  140. package/build/packages/paykit/packages/connectkit/src/localizations/locales/es-ES.d.ts +0 -3
  141. package/build/packages/paykit/packages/connectkit/src/localizations/locales/fa-IR.d.ts +0 -3
  142. package/build/packages/paykit/packages/connectkit/src/localizations/locales/fr-FR.d.ts +0 -3
  143. package/build/packages/paykit/packages/connectkit/src/localizations/locales/index.d.ts +0 -2
  144. package/build/packages/paykit/packages/connectkit/src/localizations/locales/ja-JP.d.ts +0 -93
  145. package/build/packages/paykit/packages/connectkit/src/localizations/locales/pt-BR.d.ts +0 -3
  146. package/build/packages/paykit/packages/connectkit/src/localizations/locales/ru-RU.d.ts +0 -3
  147. package/build/packages/paykit/packages/connectkit/src/localizations/locales/tr-TR.d.ts +0 -3
  148. package/build/packages/paykit/packages/connectkit/src/localizations/locales/vi-VN.d.ts +0 -3
  149. package/build/packages/paykit/packages/connectkit/src/localizations/locales/zh-CN.d.ts +0 -3
  150. package/build/packages/paykit/packages/connectkit/src/styles/defaultTheme.d.ts +0 -3
  151. package/build/packages/paykit/packages/connectkit/src/styles/index.d.ts +0 -1
  152. package/build/packages/paykit/packages/connectkit/src/styles/styled/index.d.ts +0 -12
  153. package/build/packages/paykit/packages/connectkit/src/styles/themes/base.d.ts +0 -129
  154. package/build/packages/paykit/packages/connectkit/src/styles/themes/index.d.ts +0 -673
  155. package/build/packages/paykit/packages/connectkit/src/styles/themes/midnight.d.ts +0 -74
  156. package/build/packages/paykit/packages/connectkit/src/styles/themes/minimal.d.ts +0 -94
  157. package/build/packages/paykit/packages/connectkit/src/styles/themes/nouns.d.ts +0 -79
  158. package/build/packages/paykit/packages/connectkit/src/styles/themes/retro.d.ts +0 -89
  159. package/build/packages/paykit/packages/connectkit/src/styles/themes/rounded.d.ts +0 -86
  160. package/build/packages/paykit/packages/connectkit/src/styles/themes/soft.d.ts +0 -69
  161. package/build/packages/paykit/packages/connectkit/src/styles/themes/web95.d.ts +0 -91
  162. package/build/packages/paykit/packages/connectkit/src/styles/types.d.ts +0 -80
  163. package/build/packages/paykit/packages/connectkit/src/types.d.ts +0 -44
  164. package/build/packages/paykit/packages/connectkit/src/utils/index.d.ts +0 -17
  165. package/build/packages/paykit/packages/connectkit/src/utils/localstorage.d.ts +0 -9
  166. package/build/packages/paykit/packages/connectkit/src/utils/p3.d.ts +0 -2
  167. package/build/packages/paykit/packages/connectkit/src/utils/platform.d.ts +0 -2
  168. package/build/packages/paykit/packages/connectkit/src/utils/trpc.d.ts +0 -2
  169. package/build/packages/paykit/packages/connectkit/src/utils/wallets.d.ts +0 -24
  170. package/build/packages/paykit/packages/connectkit/src/wallets/index.d.ts +0 -7
  171. package/build/packages/paykit/packages/connectkit/src/wallets/useWallets.d.ts +0 -9
  172. package/build/packages/paykit/packages/connectkit/src/wallets/walletConfigs.d.ts +0 -30
package/build/index.es.js CHANGED
@@ -10,8 +10,8 @@ import styled$1, { css, keyframes, ThemeProvider } from 'styled-components';
10
10
  import { ethereum, erc20Abi, getChainName, arbitrum as arbitrum$1, base as base$2, optimism as optimism$1, polygon as polygon$1, ethereumSepolia, baseSepolia as baseSepolia$1, linea as linea$1, bsc as bsc$1, getChainExplorerTxUrl } from '@daimo/contract';
11
11
  import { hexToBytes, zeroAddress, getAddress, parseUnits } from 'viem';
12
12
  import { useConnection, useWallet as useWallet$1, ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react';
13
- import { createTRPCClient, httpBatchLink } from '@trpc/client';
14
13
  import { VersionedTransaction } from '@solana/web3.js';
14
+ import { createTRPCClient, httpBatchLink } from '@trpc/client';
15
15
  import { motion, AnimatePresence, MotionConfig } from 'framer-motion';
16
16
  import { createPortal } from 'react-dom';
17
17
  import { useTransition } from 'react-transition-state';
@@ -75,6 +75,7 @@ const REQUIRED_CHAINS = [
75
75
  sepolia,
76
76
  baseSepolia,
77
77
  ];
78
+ /** A utility for use with wagmi's createConfig(). */
78
79
  const defaultConfig = ({ appName = "Daimo Pay", appIcon, appDescription, appUrl, walletConnectProjectId, coinbaseWalletPreference, chains = REQUIRED_CHAINS, client, ...props }) => {
79
80
  globalAppName = appName;
80
81
  const paddedChains = [...chains];
@@ -654,6 +655,7 @@ const walletConfigs = {
654
655
  },
655
656
  };
656
657
 
658
+ // export type WalletIds = Extract<keyof typeof walletConfigs, string>;
657
659
  const wallets = Object.keys(walletConfigs).reduce((acc, key) => {
658
660
  const config = walletConfigs[key];
659
661
  if (!config?.getWalletConnectDeeplink)
@@ -767,6 +769,7 @@ const defaultTheme$1 = {
767
769
  },
768
770
  };
769
771
 
772
+ /** Determines whether the current wagmi configuration supports a given chain. */
770
773
  function useChainIsSupported(chainId) {
771
774
  const { chains } = useConfig();
772
775
  if (!chainId)
@@ -774,6 +777,7 @@ function useChainIsSupported(chainId) {
774
777
  return chains.some((x) => x.id === chainId);
775
778
  }
776
779
 
780
+ /** Returns currently configured wagmi chains. */
777
781
  function useChains() {
778
782
  const wagmi = useConfig();
779
783
  const chains = wagmi?.chains ?? [];
@@ -813,9 +817,12 @@ function useGoogleFont(font) {
813
817
  document.head.appendChild(gstatic);
814
818
  document.head.appendChild(link);
815
819
  return () => {
816
- document.head.removeChild(googleapis);
817
- document.head.removeChild(gstatic);
818
- document.head.removeChild(link);
820
+ try {
821
+ document.head.removeChild(googleapis);
822
+ document.head.removeChild(gstatic);
823
+ document.head.removeChild(link);
824
+ }
825
+ catch { }
819
826
  };
820
827
  }, [font]);
821
828
  }
@@ -843,18 +850,7 @@ function detectPlatform(ua) {
843
850
  return "other";
844
851
  }
845
852
 
846
- // TODO: re-enable for dev only in rollup.
847
- // TODO: env var in build
848
- const apiUrl = "https://pay-api.daimo.xyz";
849
- const trpc = createTRPCClient({
850
- links: [
851
- httpBatchLink({
852
- url: apiUrl,
853
- }),
854
- ],
855
- });
856
-
857
- function useDepositAddressOptions({ usdRequired, }) {
853
+ function useDepositAddressOptions({ trpc, usdRequired, }) {
858
854
  const [options, setOptions] = useState([]);
859
855
  const [loading, setLoading] = useState(false);
860
856
  useEffect(() => {
@@ -884,7 +880,7 @@ const DEFAULT_EXTERNAL_PAYMENT_OPTIONS = [
884
880
  ExternalPaymentOptions.Daimo,
885
881
  ExternalPaymentOptions.RampNetwork,
886
882
  ];
887
- function useExternalPaymentOptions({ filterIds, usdRequired, platform, }) {
883
+ function useExternalPaymentOptions({ trpc, filterIds, usdRequired, platform, }) {
888
884
  const [options, setOptions] = useState([]);
889
885
  const [loading, setLoading] = useState(false);
890
886
  useEffect(() => {
@@ -919,7 +915,7 @@ function useExternalPaymentOptions({ filterIds, usdRequired, platform, }) {
919
915
  };
920
916
  }
921
917
 
922
- function usePayWithSolanaToken(orderId, setDaimoPayOrder, chosenFinalTokenAmount, platform) {
918
+ function usePayWithSolanaToken({ trpc, orderId, setDaimoPayOrder, chosenFinalTokenAmount, platform, }) {
923
919
  const { connection } = useConnection();
924
920
  const wallet = useWallet$1();
925
921
  const payWithSolanaToken = async (inputToken) => {
@@ -962,7 +958,7 @@ function usePayWithSolanaToken(orderId, setDaimoPayOrder, chosenFinalTokenAmount
962
958
  return { payWithSolanaToken };
963
959
  }
964
960
 
965
- function useSolanaPaymentOptions({ address, usdRequired, }) {
961
+ function useSolanaPaymentOptions({ trpc, address, usdRequired, }) {
966
962
  const [options, setOptions] = useState(null);
967
963
  const [isLoading, setIsLoading] = useState(false);
968
964
  useEffect(() => {
@@ -995,7 +991,7 @@ function useSolanaPaymentOptions({ address, usdRequired, }) {
995
991
  };
996
992
  }
997
993
 
998
- function useWalletPaymentOptions({ address, usdRequired, destChainId, }) {
994
+ function useWalletPaymentOptions({ trpc, address, usdRequired, destChainId, }) {
999
995
  const [options, setOptions] = useState(null);
1000
996
  const [isLoading, setIsLoading] = useState(false);
1001
997
  useEffect(() => {
@@ -1029,7 +1025,7 @@ function useWalletPaymentOptions({ address, usdRequired, destChainId, }) {
1029
1025
  };
1030
1026
  }
1031
1027
 
1032
- function usePaymentInfo({ daimoPayOrder, setDaimoPayOrder, setOpen, log, }) {
1028
+ function usePaymentInfo({ trpc, daimoPayOrder, setDaimoPayOrder, setOpen, log, }) {
1033
1029
  // Browser state.
1034
1030
  const [platform, setPlatform] = useState();
1035
1031
  useEffect(() => {
@@ -1052,23 +1048,33 @@ function usePaymentInfo({ daimoPayOrder, setDaimoPayOrder, setOpen, log, }) {
1052
1048
  const [modalOptions, setModalOptions] = useState({});
1053
1049
  // UI state. Selection for external payment (Binance, etc) vs wallet payment.
1054
1050
  const externalPaymentOptions = useExternalPaymentOptions({
1051
+ trpc,
1055
1052
  filterIds: daimoPayOrder?.metadata.payer?.paymentOptions,
1056
1053
  usdRequired: daimoPayOrder?.destFinalCallTokenAmount.usd,
1057
1054
  platform,
1058
1055
  });
1059
1056
  const walletPaymentOptions = useWalletPaymentOptions({
1057
+ trpc,
1060
1058
  address: senderAddr,
1061
1059
  usdRequired: daimoPayOrder?.destFinalCallTokenAmount.usd,
1062
1060
  destChainId: daimoPayOrder?.destFinalCallTokenAmount.token.chainId,
1063
1061
  });
1064
1062
  const solanaPaymentOptions = useSolanaPaymentOptions({
1063
+ trpc,
1065
1064
  address: solanaPubKey,
1066
1065
  usdRequired: daimoPayOrder?.destFinalCallTokenAmount.usd,
1067
1066
  });
1068
1067
  const depositAddressOptions = useDepositAddressOptions({
1068
+ trpc,
1069
1069
  usdRequired: daimoPayOrder?.destFinalCallTokenAmount.usd ?? 0,
1070
1070
  });
1071
- const { payWithSolanaToken } = usePayWithSolanaToken(daimoPayOrder?.id ?? undefined, setDaimoPayOrder, daimoPayOrder?.destFinalCallTokenAmount.amount ?? undefined, platform);
1071
+ const { payWithSolanaToken } = usePayWithSolanaToken({
1072
+ trpc,
1073
+ orderId: daimoPayOrder?.id ?? undefined,
1074
+ setDaimoPayOrder,
1075
+ chosenFinalTokenAmount: daimoPayOrder?.destFinalCallTokenAmount.amount ?? undefined,
1076
+ platform,
1077
+ });
1072
1078
  const [selectedExternalOption, setSelectedExternalOption] = useState();
1073
1079
  const [selectedTokenOption, setSelectedTokenOption] = useState();
1074
1080
  const [selectedSolanaTokenOption, setSelectedSolanaTokenOption] = useState();
@@ -1222,6 +1228,16 @@ function usePaymentInfo({ daimoPayOrder, setDaimoPayOrder, setOpen, log, }) {
1222
1228
  };
1223
1229
  }
1224
1230
 
1231
+ function createTrpcClient(apiUrl) {
1232
+ return createTRPCClient({
1233
+ links: [
1234
+ httpBatchLink({
1235
+ url: apiUrl,
1236
+ }),
1237
+ ],
1238
+ });
1239
+ }
1240
+
1225
1241
  const hexToP3 = (hex) => {
1226
1242
  const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
1227
1243
  if (result == null)
@@ -2363,7 +2379,7 @@ const ResetContainer = styled(motion.div) `
2363
2379
  `;
2364
2380
 
2365
2381
  var name = "@daimo/pay";
2366
- var version = "0.3.17";
2382
+ var version = "0.3.19";
2367
2383
  var author = "Daimo";
2368
2384
  var homepage = "https://pay.daimo.com";
2369
2385
  var license = "BSD-2-Clause license";
@@ -2372,9 +2388,9 @@ var main = "./src/index.ts";
2372
2388
  var type = "module";
2373
2389
  var exports = {
2374
2390
  "import": "./build/index.es.js",
2375
- types: "./build/packages/paykit/packages/connectkit/src/index.d.ts"
2391
+ types: "./build/index.d.ts"
2376
2392
  };
2377
- var types = "./build/packages/paykit/packages/connectkit/src/index.d.ts";
2393
+ var types = "./build/index.d.ts";
2378
2394
  var engines = {
2379
2395
  node: ">=12.4"
2380
2396
  };
@@ -2385,7 +2401,7 @@ var files = [
2385
2401
  var scripts = {
2386
2402
  start: "rollup --config rollup.config.dev.js -w",
2387
2403
  dev: "rollup --config rollup.config.dev.js -w",
2388
- build: "rollup --config rollup.config.prod.js",
2404
+ build: "rollup --config rollup.config.prod.js && rm -rf build/packages",
2389
2405
  lint: "eslint --max-warnings=0"
2390
2406
  };
2391
2407
  var keywords = [
@@ -2435,7 +2451,8 @@ var devDependencies = {
2435
2451
  "@types/react": "^18.2.47",
2436
2452
  "@types/react-dom": "^18.2.18",
2437
2453
  "@types/styled-components": "^5.1.25",
2438
- rollup: "^2.67.1",
2454
+ rollup: "^3.29.5",
2455
+ "rollup-plugin-dts": "^6.1.1",
2439
2456
  "rollup-plugin-peer-deps-external": "^2.2.4",
2440
2457
  "rollup-plugin-typescript2": "^0.34.0",
2441
2458
  "rollup-plugin-visualizer": "^5.5.4",
@@ -3147,7 +3164,7 @@ styled(motion.div) `
3147
3164
  const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect;
3148
3165
  function useLockBodyScroll(initialLocked) {
3149
3166
  const [locked, setLocked] = useState(initialLocked);
3150
- const context = useContext();
3167
+ const context = usePayContext();
3151
3168
  useIsomorphicLayoutEffect(() => {
3152
3169
  if (!locked)
3153
3170
  return;
@@ -4524,7 +4541,7 @@ export const keys = {
4524
4541
  */
4525
4542
 
4526
4543
  function useLocales(replacements) {
4527
- const context = useContext();
4544
+ const context = usePayContext();
4528
4545
  const language = context.options?.language ?? "en-US";
4529
4546
  const translations = useMemo(() => {
4530
4547
  return getLocale(language);
@@ -4626,7 +4643,7 @@ const useWallet = (id) => {
4626
4643
  };
4627
4644
  const useWallets = () => {
4628
4645
  const connectors = useConnectors();
4629
- const context = useContext();
4646
+ const context = usePayContext();
4630
4647
  const wallets = connectors.map((connector) => {
4631
4648
  // use overrides
4632
4649
  const walletId = Object.keys(walletConfigs).find(
@@ -4908,7 +4925,7 @@ const contentVariants$2 = {
4908
4925
  },
4909
4926
  };
4910
4927
  const Modal = ({ open, pages, pageId, positionInside, inline, demo, onClose, onBack, onInfo, }) => {
4911
- const context = useContext();
4928
+ const context = usePayContext();
4912
4929
  const themeContext = useThemeContext();
4913
4930
  const mobile = isMobile();
4914
4931
  const { daimoPayOrder, selectedExternalOption, selectedTokenOption, selectedSolanaTokenOption, selectedDepositAddressOption, } = context.paymentInfo;
@@ -5826,7 +5843,7 @@ const About = () => {
5826
5843
  const locales = useLocales({
5827
5844
  //CONNECTORNAME: connector.name,
5828
5845
  });
5829
- const context = useContext();
5846
+ const context = usePayContext();
5830
5847
  const ctaUrl = context.options?.ethereumOnboardingUrl ?? locales.aboutScreen_ctaUrl;
5831
5848
  const [ready, setReady] = useState(true);
5832
5849
  const [slider, setSlider] = useState(0);
@@ -6528,7 +6545,7 @@ const ConnectorsContainer = styled.div `
6528
6545
  * additional functionality.
6529
6546
  */
6530
6547
  function useConnect({ ...props } = {}) {
6531
- const context = useContext();
6548
+ const context = usePayContext();
6532
6549
  const { connect, connectAsync, connectors, ...rest } = useConnect$1({
6533
6550
  ...props,
6534
6551
  mutation: {
@@ -6566,7 +6583,7 @@ function useConnect({ ...props } = {}) {
6566
6583
  function useWalletConnectUri({ enabled } = {
6567
6584
  enabled: true,
6568
6585
  }) {
6569
- const { log } = useContext();
6586
+ const { log } = usePayContext();
6570
6587
  const [uri, setUri] = useState(undefined);
6571
6588
  const connector = useWalletConnectConnector();
6572
6589
  const { isConnected } = useAccount();
@@ -6850,7 +6867,7 @@ const ScrollAreaContainer = styled.div `
6850
6867
 
6851
6868
  const ArrowDown = () => (jsx("svg", { width: "11", height: "12", viewBox: "0 0 11 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M5.49438 1L5.49438 11M5.49438 11L9.5 7M5.49438 11L1.5 7", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round" }) }));
6852
6869
  const ScrollArea = ({ children, height, backgroundColor, mobileDirection, }) => {
6853
- const { log } = useContext();
6870
+ const { log } = usePayContext();
6854
6871
  const ref = useRef(null);
6855
6872
  const moreRef = useRef(null);
6856
6873
  const isMobile = useIsMobile();
@@ -6975,7 +6992,7 @@ const useLastConnector = () => {
6975
6992
  };
6976
6993
 
6977
6994
  const ConnectorList = () => {
6978
- const context = useContext();
6995
+ const context = usePayContext();
6979
6996
  const isMobile = useIsMobile();
6980
6997
  const wallets = useWallets();
6981
6998
  const { lastConnectorId } = useLastConnector();
@@ -6993,7 +7010,7 @@ const ConnectorItem = ({ wallet, isRecent, }) => {
6993
7010
  const { connect: { getUri }, } = useWeb3();
6994
7011
  const uri = getUri();
6995
7012
  const isMobile = useIsMobile();
6996
- const context = useContext();
7013
+ const context = usePayContext();
6997
7014
  const { connect } = useConnect();
6998
7015
  /*
6999
7016
  const [ready, setReady] = useState(false);
@@ -7227,7 +7244,7 @@ const Underline = styled(motion.div) `
7227
7244
  background-color: var(--ck-body-color-muted);
7228
7245
  `;
7229
7246
  const OrderHeader = ({ minified = false }) => {
7230
- const { paymentInfo } = useContext();
7247
+ const { paymentInfo } = usePayContext();
7231
7248
  const amount = paymentInfo.daimoPayOrder?.destFinalCallTokenAmount.usd.toFixed(2);
7232
7249
  const isEditable = paymentInfo.daimoPayOrder?.mode === DaimoPayOrderMode.CHOOSE_AMOUNT;
7233
7250
  const [editableAmount, setEditableAmount] = useState(amount ?? "");
@@ -7381,7 +7398,7 @@ const Logos = styled(motion.div) `
7381
7398
  `;
7382
7399
 
7383
7400
  const Wallets = () => {
7384
- const context = useContext();
7401
+ const context = usePayContext();
7385
7402
  const locales = useLocales({});
7386
7403
  const isMobile = useIsMobile();
7387
7404
  return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true }), jsx(ConnectorList, {}), isMobile ? (jsx(Fragment, { children: jsxs(InfoBox, { children: [jsxs(ModalContent, { style: { padding: 0, textAlign: "left" }, children: [jsx(ModalH1, { "$small": true, children: locales.connectorsScreen_h1 }), jsx(ModalBody, { children: locales.connectorsScreen_p })] }), jsxs(InfoBoxButtons, { children: [!context.options?.hideQuestionMarkCTA && (jsx(Button, { variant: "tertiary", onClick: () => context.setRoute(ROUTES.ABOUT), children: locales.learnMore })), !context.options?.hideNoWalletCTA && (jsx(Button, { variant: "tertiary", onClick: () => context.setRoute(ROUTES.ONBOARDING), children: locales.getWallet }))] })] }) })) : (jsx(Fragment, { children: !context.options?.hideNoWalletCTA && (jsx(LearnMoreContainer, { children: jsxs(LearnMoreButton, { onClick: () => context.setRoute(ROUTES.ONBOARDING), children: [jsx(WalletIcon$1, {}), " ", locales.connectorsScreen_newcomer] }) })) })), context.options?.disclaimer && (jsx(Disclaimer, { style: { visibility: "hidden", pointerEvents: "none" }, children: jsx("div", { children: context.options?.disclaimer }) }))] }));
@@ -7613,7 +7630,7 @@ const TooltipTail = styled(motion.div) `
7613
7630
  `;
7614
7631
 
7615
7632
  const Tooltip = ({ children, message, open, xOffset = 0, yOffset = 0, delay, }) => {
7616
- const context = useContext();
7633
+ const context = usePayContext();
7617
7634
  const themeContext = useThemeContext();
7618
7635
  if (context.options?.hideTooltips)
7619
7636
  return jsx(Fragment, { children: children });
@@ -7793,7 +7810,7 @@ function CustomQRCode({ value, image, imageBackground, imagePosition = "center",
7793
7810
  CustomQRCode.displayName = "CustomQRCode";
7794
7811
 
7795
7812
  const DownloadApp = () => {
7796
- const context = useContext();
7813
+ const context = usePayContext();
7797
7814
  const wallet = useWallet(context.connector.id);
7798
7815
  const locales = useLocales({
7799
7816
  CONNECTORNAME: wallet?.name,
@@ -7874,7 +7891,7 @@ const WalletList = styled.div `
7874
7891
  const Container$4 = styled.div ``;
7875
7892
 
7876
7893
  function useWalletConnectModal() {
7877
- const { log } = useContext();
7894
+ const { log } = usePayContext();
7878
7895
  const { connectAsync, connectors } = useConnect();
7879
7896
  const [isOpen, setIsOpen] = useState(false);
7880
7897
  return {
@@ -7885,31 +7902,33 @@ function useWalletConnectModal() {
7885
7902
  w3mcss.innerHTML = `w3m-modal, wcm-modal{ --wcm-z-index: 2147483647; --w3m-z-index:2147483647; }`;
7886
7903
  document.head.appendChild(w3mcss);
7887
7904
  const clientConnector = connectors.find((c) => isWalletConnectConnector(c.id));
7888
- if (clientConnector) {
7905
+ if (clientConnector == null) {
7906
+ log("No WalletConnect connector available");
7907
+ return;
7908
+ }
7909
+ try {
7910
+ const provider = await clientConnector.getProvider();
7911
+ const projectId = provider.rpc.projectId;
7912
+ const connector = walletConnect$1({
7913
+ projectId,
7914
+ showQrModal: true,
7915
+ });
7916
+ setIsOpen(true);
7889
7917
  try {
7890
- const provider = await clientConnector.getProvider();
7891
- const projectId = provider.rpc.projectId;
7892
- const connector = walletConnect$1({
7893
- projectId,
7894
- showQrModal: true,
7895
- });
7896
- setIsOpen(true);
7897
- try {
7898
- await connectAsync({ connector: connector });
7899
- }
7900
- catch (err) {
7901
- log("WalletConnect", err);
7902
- }
7903
- setIsOpen(false);
7904
- // remove modal styling
7905
- document.head.removeChild(w3mcss);
7918
+ await connectAsync({ connector: connector });
7906
7919
  }
7907
7920
  catch (err) {
7908
- log("Could not get WalletConnect provider", err);
7921
+ log("WalletConnect", err);
7922
+ }
7923
+ setIsOpen(false);
7924
+ // remove modal styling
7925
+ try {
7926
+ document.head.removeChild(w3mcss);
7909
7927
  }
7928
+ catch { }
7910
7929
  }
7911
- else {
7912
- log("No WalletConnect connector available");
7930
+ catch (err) {
7931
+ log("Could not get WalletConnect provider", err);
7913
7932
  }
7914
7933
  },
7915
7934
  };
@@ -8022,7 +8041,7 @@ const CopyToClipboard = ({ string, children, variant }) => {
8022
8041
 
8023
8042
  const MoreIcon = (jsx("svg", { width: "60", height: "60", viewBox: "0 0 60 60", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: jsx("path", { d: "M30 42V19M19 30.5H42", stroke: "var(--ck-body-color-muted)", strokeWidth: "3", strokeLinecap: "round" }) }));
8024
8043
  const MobileConnectors = () => {
8025
- const context = useContext();
8044
+ const context = usePayContext();
8026
8045
  const locales = useLocales();
8027
8046
  const { connect: { getUri }, } = useWeb3();
8028
8047
  const wcUri = getUri();
@@ -8303,7 +8322,7 @@ const Logo$2 = styled(motion.div) `
8303
8322
  var wave = (jsxs("svg", { "aria-hidden": "true", width: "298", height: "188", viewBox: "0 0 298 188", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { d: "M1 55.2757L21.6438 46.0285C55.5896 30.8228 94.4104 30.8228 128.356 46.0286L169.644 64.5229C203.59 79.7287 242.41 79.7286 276.356 64.5229L297 55.2757M1 44.2118L21.6438 34.9646C55.5896 19.7589 94.4104 19.7589 128.356 34.9646L169.644 53.459C203.59 68.6647 242.41 68.6647 276.356 53.459L297 44.2118M1 33.1477L21.6438 23.9005C55.5896 8.69479 94.4104 8.69479 128.356 23.9005L169.644 42.3949C203.59 57.6006 242.41 57.6006 276.356 42.3949L297 33.1477M1 22.1477L21.6438 12.9005C55.5896 -2.30521 94.4104 -2.30521 128.356 12.9005L169.644 31.3949C203.59 46.6006 242.41 46.6006 276.356 31.3949L297 22.1477M1 66.3398L21.6438 57.0926C55.5896 41.8869 94.4104 41.8869 128.356 57.0926L169.644 75.587C203.59 90.7927 242.41 90.7927 276.356 75.587L297 66.3398M1 77.404L21.6438 68.1568C55.5896 52.9511 94.4104 52.9511 128.356 68.1569L169.644 86.6512C203.59 101.857 242.41 101.857 276.356 86.6512L297 77.404M1 88.4681L21.6438 79.2209C55.5896 64.0152 94.4104 64.0152 128.356 79.2209L169.644 97.7153C203.59 112.921 242.41 112.921 276.356 97.7153L297 88.4681M1 121.66L21.6438 112.413C55.5896 97.2075 94.4104 97.2075 128.356 112.413L169.644 130.908C203.59 146.113 242.41 146.113 276.356 130.908L297 121.66M1 110.596L21.6438 101.349C55.5896 86.1433 94.4104 86.1433 128.356 101.349L169.644 119.843C203.59 135.049 242.41 135.049 276.356 119.843L297 110.596M1 99.5321L21.6438 90.2849C55.5896 75.0792 94.4104 75.0792 128.356 90.2849L169.644 108.779C203.59 123.985 242.41 123.985 276.356 108.779L297 99.5321M1 132.724L21.6438 123.477C55.5896 108.271 94.4104 108.271 128.356 123.477L169.644 141.971C203.59 157.177 242.41 157.177 276.356 141.971L297 132.724M1 143.788L21.6438 134.541C55.5896 119.336 94.4104 119.336 128.356 134.541L169.644 153.036C203.59 168.241 242.41 168.241 276.356 153.036L297 143.788M1 154.853L21.6438 145.605C55.5896 130.4 94.4104 130.4 128.356 145.605L169.644 164.1C203.59 179.305 242.41 179.305 276.356 164.1L297 154.853M1 165.853L21.6438 156.605C55.5896 141.4 94.4104 141.4 128.356 156.605L169.644 175.1C203.59 190.305 242.41 190.305 276.356 175.1L297 165.853", stroke: "url(#paint0_linear_1094_2077)", strokeOpacity: "0.9", strokeLinecap: "round", strokeLinejoin: "round" }), jsx("defs", { children: jsxs("linearGradient", { id: "paint0_linear_1094_2077", x1: "1", y1: "112.587", x2: "297.034", y2: "79.6111", gradientUnits: "userSpaceOnUse", children: [jsx("stop", { stopColor: "var(--ck-graphic-wave-stop-01)" }), jsx("stop", { stopColor: "var(--ck-graphic-wave-stop-02)", offset: "0.239583" }), jsx("stop", { stopColor: "var(--ck-graphic-wave-stop-03)", offset: "0.515625" }), jsx("stop", { stopColor: "var(--ck-graphic-wave-stop-04)", offset: "0.739583" }), jsx("stop", { stopColor: "var(--ck-graphic-wave-stop-05)", offset: "1" })] }) })] }));
8304
8323
 
8305
8324
  const Introduction = () => {
8306
- const context = useContext();
8325
+ const context = usePayContext();
8307
8326
  const locales = useLocales({});
8308
8327
  const ctaUrl = context.options?.walletOnboardingUrl ?? locales.onboardingScreen_ctaUrl;
8309
8328
  return (jsxs(PageContent, { children: [jsxs(Graphic, { children: [jsxs(LogoGroup, { children: [jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Coinbase, { background: true }) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.MetaMask, { background: true }) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Trust, {}) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.Argent, {}) }) }) }) }) }) }), jsx(Logo$2, { children: jsx(LogoPosition, { children: jsx(LogoInner, { children: jsx(FloatWrapper, { children: jsx(RotateWrapper, { children: jsx(LogoGraphic, { children: jsx(Logos$1.ImToken, {}) }) }) }) }) }) })] }), jsx(GraphicBackground, { children: wave })] }), jsxs(ModalContent, { style: { paddingBottom: 18 }, children: [jsx(ModalH1, { "$small": true, children: locales.onboardingScreen_h1 }), jsx(ModalBody, { children: locales.onboardingScreen_p })] }), jsx(Button, { href: ctaUrl, arrow: true, children: locales.onboardingScreen_ctaText })] }));
@@ -8846,7 +8865,7 @@ const ChainSelectList = ({ variant, }) => {
8846
8865
  switchChain({ chainId });
8847
8866
  }
8848
8867
  };
8849
- const { triggerResize } = useContext();
8868
+ const { triggerResize } = usePayContext();
8850
8869
  return (jsxs(SwitchNetworksContainer, { style: { marginBottom: switchChain !== undefined ? -8 : 0 }, children: [jsx(ChainButtonContainer, { children: jsx(ChainButtons, { children: chains.map((x) => {
8851
8870
  const c = chainConfigs.find((ch) => ch.id === x.id);
8852
8871
  const ch = { ...c, ...x };
@@ -9385,7 +9404,7 @@ const ConnectWithInjector = ({ switchConnectMethod, forceState }) => {
9385
9404
  },
9386
9405
  },
9387
9406
  });
9388
- const { triggerResize, connector: c } = useContext();
9407
+ const { triggerResize, connector: c } = usePayContext();
9389
9408
  const id = c.id;
9390
9409
  const wallet = useWallet(id);
9391
9410
  const walletInfo = {
@@ -9508,7 +9527,7 @@ const ScanIconWithLogos = ({ logo }) => {
9508
9527
  };
9509
9528
 
9510
9529
  const ConnectWithQRCode = ({ switchConnectMethod }) => {
9511
- const context = useContext();
9530
+ const context = usePayContext();
9512
9531
  const id = context.connector.id;
9513
9532
  const wallet = useWallet(context.connector.id);
9514
9533
  const { open: openW3M, isOpen: isOpenW3M } = useWalletConnectModal();
@@ -9570,7 +9589,7 @@ const states = {
9570
9589
  INJECTOR: "injector",
9571
9590
  };
9572
9591
  const ConnectUsing = () => {
9573
- const context = useContext();
9592
+ const context = usePayContext();
9574
9593
  const wallet = useWallet(context.connector.id);
9575
9594
  // If cannot be scanned, display injector flow, which if extension is not installed will show CTA to install it
9576
9595
  const isQrCode = !wallet?.isInstalled && wallet?.getWalletConnectDeeplink;
@@ -9640,7 +9659,7 @@ const TextButton = styled(motion.button) `
9640
9659
  `;
9641
9660
 
9642
9661
  const Confirmation = () => {
9643
- const { paymentInfo } = useContext();
9662
+ const { paymentInfo } = usePayContext();
9644
9663
  const { daimoPayOrder } = paymentInfo;
9645
9664
  const { done, txURL } = (() => {
9646
9665
  if (daimoPayOrder && daimoPayOrder.mode === DaimoPayOrderMode.HYDRATED) {
@@ -9740,7 +9759,7 @@ var PayState$1;
9740
9759
  PayState["RequestSuccessful"] = "Payment Successful";
9741
9760
  })(PayState$1 || (PayState$1 = {}));
9742
9761
  const PayWithToken = () => {
9743
- const { triggerResize, paymentInfo, setRoute, log } = useContext();
9762
+ const { triggerResize, paymentInfo, setRoute, log } = usePayContext();
9744
9763
  const { selectedTokenOption, payWithToken } = paymentInfo;
9745
9764
  const [payState, setPayState] = useState(PayState$1.RequestingPayment);
9746
9765
  const walletChainId = useChainId();
@@ -10041,7 +10060,7 @@ const OptionsContainer = styled.div `
10041
10060
  `;
10042
10061
 
10043
10062
  const OptionsList = ({ options, isLoading, requiredSkeletons, }) => {
10044
- const { triggerResize, log } = useContext();
10063
+ const { triggerResize, log } = usePayContext();
10045
10064
  const optionsLength = options.length;
10046
10065
  useEffect(() => {
10047
10066
  log(`[OPTIONS RESIZE]: ${optionsLength}, triggering resize`);
@@ -10136,7 +10155,7 @@ const IconStackItem = styled(motion.div) `
10136
10155
  `;
10137
10156
 
10138
10157
  const SelectDepositAddressChain = () => {
10139
- const { setRoute, paymentInfo } = useContext();
10158
+ const { setRoute, paymentInfo } = usePayContext();
10140
10159
  const { setSelectedDepositAddressOption, depositAddressOptions } = paymentInfo;
10141
10160
  return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true }), !depositAddressOptions.loading &&
10142
10161
  depositAddressOptions.options?.length === 0 && (jsxs(ModalContent, { style: {
@@ -10179,7 +10198,7 @@ function getBestUnconnectedWalletIcons(connector) {
10179
10198
  }
10180
10199
  function getSolanaOption() {
10181
10200
  const { wallets } = useWallet$1();
10182
- const { setRoute } = useContext();
10201
+ const { setRoute } = usePayContext();
10183
10202
  if (wallets.length === 0)
10184
10203
  return null;
10185
10204
  return {
@@ -10192,7 +10211,7 @@ function getSolanaOption() {
10192
10211
  };
10193
10212
  }
10194
10213
  function getDepositAddressOption(depositAddressOptions) {
10195
- const { setRoute } = useContext();
10214
+ const { setRoute } = usePayContext();
10196
10215
  console.log(`[SELECT_METHOD] depositAddressOptions: ${JSON.stringify(depositAddressOptions)}`);
10197
10216
  if (!depositAddressOptions.loading &&
10198
10217
  depositAddressOptions.options.length === 0)
@@ -10211,7 +10230,7 @@ const SelectMethod = () => {
10211
10230
  const isMobile = useIsMobile();
10212
10231
  const { address, isConnected, connector } = useAccount();
10213
10232
  const { disconnectAsync } = useDisconnect();
10214
- const { setRoute, paymentInfo, log } = useContext();
10233
+ const { setRoute, paymentInfo, log } = usePayContext();
10215
10234
  const { setSelectedExternalOption, externalPaymentOptions, depositAddressOptions, senderEnsName, } = paymentInfo;
10216
10235
  const displayName = senderEnsName ?? (address ? getAddressContraction(address) : "wallet");
10217
10236
  const connectedWalletOption = isConnected
@@ -10276,7 +10295,7 @@ const ChainContainer$1 = styled(motion.div) `
10276
10295
  right: 0px;
10277
10296
  `;
10278
10297
  const SelectToken = () => {
10279
- const { setRoute, paymentInfo } = useContext();
10298
+ const { setRoute, paymentInfo } = usePayContext();
10280
10299
  const { setSelectedTokenOption, walletPaymentOptions } = paymentInfo;
10281
10300
  return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true }), !walletPaymentOptions.isLoading &&
10282
10301
  walletPaymentOptions.options?.length === 0 && (jsxs(ModalContent, { style: {
@@ -10305,7 +10324,9 @@ const SelectToken = () => {
10305
10324
  };
10306
10325
 
10307
10326
  const WaitingOther = () => {
10308
- const { triggerResize, paymentInfo, setRoute } = useContext();
10327
+ const context = usePayContext();
10328
+ const { triggerResize, paymentInfo, setRoute } = context;
10329
+ const trpc = context.trpc;
10309
10330
  const { selectedExternalOption, payWithExternal, paymentWaitingMessage, daimoPayOrder, } = paymentInfo;
10310
10331
  const [externalURL, setExternalURL] = useState(null);
10311
10332
  useEffect(() => {
@@ -10382,7 +10403,7 @@ const AnimationContainer$2 = styled(motion.div) `
10382
10403
  const ConnectSolana$1 = () => {
10383
10404
  const solanaWallets = useWallet$1();
10384
10405
  const isConnected = solanaWallets.connected;
10385
- const { solanaConnector, setRoute } = useContext();
10406
+ const { solanaConnector, setRoute } = usePayContext();
10386
10407
  const selectedWallet = solanaWallets.wallets.find((wallet) => wallet.adapter.name === solanaConnector);
10387
10408
  useEffect(() => {
10388
10409
  if (!solanaConnector)
@@ -10413,7 +10434,7 @@ const AnimationContainer$1 = styled(motion.div) `
10413
10434
  `;
10414
10435
 
10415
10436
  const ConnectSolana = () => {
10416
- const { setSolanaConnector, setRoute } = useContext();
10437
+ const { setSolanaConnector, setRoute } = usePayContext();
10417
10438
  const solanaWallets = useWallet$1();
10418
10439
  const options = solanaWallets.wallets.map((wallet) => ({
10419
10440
  id: wallet.adapter.name,
@@ -10447,7 +10468,7 @@ var PayState;
10447
10468
  PayState["RequestSuccessful"] = "Payment Successful";
10448
10469
  })(PayState || (PayState = {}));
10449
10470
  const PayWithSolanaToken = () => {
10450
- const { triggerResize, paymentInfo, setRoute } = useContext();
10471
+ const { triggerResize, paymentInfo, setRoute } = usePayContext();
10451
10472
  const { selectedSolanaTokenOption, payWithSolanaToken } = paymentInfo;
10452
10473
  const [payState, setPayState] = useState(PayState.RequestingPayment);
10453
10474
  const handleTransfer = async () => {
@@ -10511,7 +10532,7 @@ const AnimationContainer = styled(motion.div) `
10511
10532
  `;
10512
10533
 
10513
10534
  const SelectSolanaToken = () => {
10514
- const { paymentInfo, setRoute } = useContext();
10535
+ const { paymentInfo, setRoute } = usePayContext();
10515
10536
  const { solanaPaymentOptions, setSelectedSolanaTokenOption } = paymentInfo;
10516
10537
  return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true }), !solanaPaymentOptions.isLoading &&
10517
10538
  solanaPaymentOptions.options?.length === 0 && (jsxs(ModalContent, { style: {
@@ -10539,7 +10560,9 @@ const SelectSolanaToken = () => {
10539
10560
  };
10540
10561
 
10541
10562
  const WaitingDepositAddress = () => {
10542
- const { triggerResize, paymentInfo, setRoute } = useContext();
10563
+ const context = usePayContext();
10564
+ const { triggerResize, paymentInfo, setRoute } = context;
10565
+ const trpc = context.trpc;
10543
10566
  const { daimoPayOrder, payWithDepositAddress, selectedDepositAddressOption } = paymentInfo;
10544
10567
  useEffect(() => {
10545
10568
  const checkForSourcePayment = async () => {
@@ -10576,7 +10599,7 @@ const WaitingDepositAddress = () => {
10576
10599
 
10577
10600
  const customThemeDefault = {};
10578
10601
  const DaimoPayModal = ({ mode = "auto", theme = "auto", customTheme = customThemeDefault, lang = "en-US", }) => {
10579
- const context = useContext();
10602
+ const context = usePayContext();
10580
10603
  const { setSelectedExternalOption, setSelectedTokenOption, setSelectedDepositAddressOption, setSelectedSolanaTokenOption, } = context.paymentInfo;
10581
10604
  const { isConnected, chain } = useAccount();
10582
10605
  const chainIsSupported = useChainIsSupported(chain?.id);
@@ -10675,7 +10698,10 @@ const DaimoPayModal = ({ mode = "auto", theme = "auto", customTheme = customThem
10675
10698
  document.head.prepend(icon);
10676
10699
  }*/
10677
10700
  return () => {
10678
- document.head.removeChild(title);
10701
+ try {
10702
+ document.head.removeChild(title);
10703
+ }
10704
+ catch { }
10679
10705
  //if (appIcon) document.head.removeChild(icon);
10680
10706
  };
10681
10707
  }, [context.open]);
@@ -10709,8 +10735,9 @@ var ROUTES;
10709
10735
  ROUTES["DOWNLOAD"] = "download";
10710
10736
  ROUTES["SWITCHNETWORKS"] = "switchNetworks";
10711
10737
  })(ROUTES || (ROUTES = {}));
10738
+ /** Meant for internal use. This will be non-exported in a future SDK version. */
10712
10739
  const Context = createContext(null);
10713
- const DaimoPayProviderWithoutSolana = ({ children, theme = "auto", mode = "auto", customTheme, options, onConnect, onDisconnect, debugMode = false, }) => {
10740
+ const DaimoPayProviderWithoutSolana = ({ children, theme = "auto", mode = "auto", customTheme, options, onConnect, onDisconnect, debugMode = false, payApiUrl = "https://pay-api.daimo.xyz", }) => {
10714
10741
  // DaimoPayProvider must be within a WagmiProvider
10715
10742
  if (!React.useContext(WagmiContext)) {
10716
10743
  throw Error("DaimoPayProvider must be within a WagmiProvider");
@@ -10794,12 +10821,15 @@ const DaimoPayProviderWithoutSolana = ({ children, theme = "auto", mode = "auto"
10794
10821
  }
10795
10822
  }, [isConnected, isChainSupported, chain, route, open]);
10796
10823
  const log = debugMode ? console.log : () => { };
10824
+ // Connect to the Daimo Pay TRPC API
10825
+ const trpc = useMemo(() => createTrpcClient(payApiUrl), [payApiUrl]);
10797
10826
  // PaymentInfo is a second, inner context object containing a DaimoPayOrder
10798
10827
  // plus all associated status and callbacks. In order for useContext() and
10799
10828
  // downstream hooks like useDaimoPayStatus() to work correctly, we must set
10800
10829
  // set refresh context when payment status changes; done via setDaimoPayOrder.
10801
10830
  const [daimoPayOrder, setDaimoPayOrder] = useState();
10802
10831
  const paymentInfo = usePaymentInfo({
10832
+ trpc,
10803
10833
  daimoPayOrder,
10804
10834
  setDaimoPayOrder,
10805
10835
  setOpen,
@@ -10877,19 +10907,26 @@ const DaimoPayProviderWithoutSolana = ({ children, theme = "auto", mode = "auto"
10877
10907
  // Below: Daimo Pay context
10878
10908
  loadAndShowPayment,
10879
10909
  paymentInfo,
10910
+ trpc,
10880
10911
  };
10881
10912
  return createElement(Context.Provider, { value }, jsx(Web3ContextProvider, { enabled: open, children: jsxs(ThemeProvider, { theme: defaultTheme$1, children: [children, jsx(DaimoPayModal, { lang: ckLang, theme: ckTheme, mode: mode, customTheme: ckCustomTheme })] }) }));
10882
10913
  };
10914
+ /** Provides context for DaimoPayButton and hooks. Place in app root, layout, or
10915
+ * similar.
10916
+ */
10883
10917
  const DaimoPayProvider = (props) => {
10884
10918
  return (jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: jsx(DaimoPayProviderWithoutSolana, { ...props }) }));
10885
10919
  };
10886
- const useContext = () => {
10920
+ /** Meant for internal use. This will be non-exported in a future SDK version. */
10921
+ const usePayContext = () => {
10887
10922
  const context = React.useContext(Context);
10888
10923
  if (!context)
10889
10924
  throw Error("DaimoPay Hook must be inside a Provider.");
10890
10925
  return context;
10891
10926
  };
10892
10927
 
10928
+ /** Utility. Returns false on first render, true after.
10929
+ * Useful for apps with SSR, for example. */
10893
10930
  function useIsMounted() {
10894
10931
  const [mounted, setMounted] = useState(false);
10895
10932
  useEffect(() => setMounted(true), []);
@@ -11132,9 +11169,10 @@ const contentVariants = {
11132
11169
  },
11133
11170
  },
11134
11171
  };
11172
+ /** Like DaimoPayButton, but with custom styling. */
11135
11173
  const DaimoPayButtonRenderer = ({ payId, closeOnSuccess, children, }) => {
11136
11174
  const isMounted = useIsMounted();
11137
- const context = useContext();
11175
+ const context = usePayContext();
11138
11176
  const { address, chain } = useAccount();
11139
11177
  const isChainSupported = useChainIsSupported(chain?.id);
11140
11178
  const { data: ensName } = useEnsName({
@@ -11168,15 +11206,18 @@ const DaimoPayButtonRenderer = ({ payId, closeOnSuccess, children, }) => {
11168
11206
  };
11169
11207
  DaimoPayButtonRenderer.displayName = "DaimoPayButton.Custom";
11170
11208
  function DaimoPayButtonInner() {
11171
- const { paymentInfo } = useContext();
11209
+ const { paymentInfo } = usePayContext();
11172
11210
  const label = paymentInfo?.daimoPayOrder?.metadata?.intent ?? "Pay";
11173
11211
  return (jsx(AnimatePresence, { initial: false, children: jsx(TextContainer, { initial: "initial", animate: "animate", exit: "exit", variants: contentVariants, style: {
11174
11212
  height: 40,
11175
11213
  }, children: label }, "connectWalletText") }));
11176
11214
  }
11215
+ /** A button that shows the Daimo Pay checkout. Replaces the traditional
11216
+ * Connect Wallet » approve » execute sequence with a single action.
11217
+ */
11177
11218
  function DaimoPayButton({ payId, theme, mode, customTheme, closeOnSuccess, onClick, }) {
11178
11219
  const isMounted = useIsMounted();
11179
- const context = useContext();
11220
+ const context = usePayContext();
11180
11221
  // Pre-load payment info in background.
11181
11222
  const { setPayId } = context.paymentInfo;
11182
11223
  useEffect(() => {
@@ -11198,7 +11239,7 @@ function DaimoPayButton({ payId, theme, mode, customTheme, closeOnSuccess, onCli
11198
11239
  DaimoPayButton.Custom = DaimoPayButtonRenderer;
11199
11240
 
11200
11241
  const useModal = ({ onConnect, onDisconnect } = {}) => {
11201
- const context = useContext();
11242
+ const context = usePayContext();
11202
11243
  useConnectCallback({
11203
11244
  onConnect,
11204
11245
  onDisconnect,
@@ -11295,7 +11336,7 @@ function useEnsFallbackConfig() {
11295
11336
 
11296
11337
  const Avatar = ({ address, name, size = 96, radius = 96 }) => {
11297
11338
  const isMounted = useIsMounted();
11298
- const context = useContext();
11339
+ const context = usePayContext();
11299
11340
  const imageRef = useRef(null);
11300
11341
  const [loaded, setLoaded] = useState(true);
11301
11342
  const ensFallbackConfig = useEnsFallbackConfig();
@@ -11448,36 +11489,37 @@ const Chain = ({ id, unsupported: controlledUnsupported, radius = "50%", size =
11448
11489
  return (jsx(ChainContainer, { size: size, radius: radius, children: jsxs(AnimatePresence, { initial: false, children: [unsupported && (jsx(Unsupported, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, children: jsxs("svg", { width: "13", height: "12", viewBox: "0 0 13 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsx("path", { d: "M2.61317 11.2501H9.46246C10.6009 11.2501 11.3256 10.3506 11.3256 9.3549C11.3256 9.05145 11.255 8.73244 11.0881 8.43303L7.65903 2.14708C7.659 2.14702 7.65897 2.14696 7.65893 2.1469C7.65889 2.14682 7.65884 2.14673 7.65879 2.14664C7.31045 1.50746 6.6741 1.17871 6.04 1.17871C5.41478 1.17871 4.763 1.50043 4.41518 2.14968L0.993416 8.43476C0.828865 8.72426 0.75 9.04297 0.75 9.3549C0.75 10.3506 1.47471 11.2501 2.61317 11.2501Z", fill: "currentColor", stroke: "var(--ck-body-background, #fff)", strokeWidth: "1.5" }), jsx("path", { d: "M6.03258 7.43916C5.77502 7.43916 5.63096 7.29153 5.62223 7.02311L5.55675 4.96973C5.54802 4.69684 5.74446 4.5 6.02821 4.5C6.3076 4.5 6.51277 4.70131 6.50404 4.9742L6.43856 7.01864C6.42546 7.29153 6.2814 7.43916 6.03258 7.43916ZM6.03258 9.11676C5.7401 9.11676 5.5 8.9065 5.5 8.60677C5.5 8.30704 5.7401 8.09678 6.03258 8.09678C6.32506 8.09678 6.56515 8.30256 6.56515 8.60677C6.56515 8.91097 6.32069 9.11676 6.03258 9.11676Z", fill: "white" })] }) })), id ? (jsx(LogoContainer, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.3 }, children: chain?.logo ?? jsx(Chains.UnknownChain, {}) }, `${chain?.id}-${chain?.name}-${id}`)) : (jsx(LoadingContainer, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.3 }, children: Spinner }, "loading"))] }) }));
11449
11490
  };
11450
11491
 
11492
+ /** Returns the current payment, or undefined if there is none.
11493
+ *
11494
+ * Status values:
11495
+ * - `payment_pending` - the user has not paid yet
11496
+ * - `payment_started` - the user has paid & payment is in progress. This status
11497
+ * typically lasts a few seconds.
11498
+ * - `payment_completed` - the final call or transfer succeeded
11499
+ * - `payment_bounced` - the final call or transfer reverted. Funds were sent
11500
+ * to the payment's configured refund address on the destination chain.
11501
+ */
11451
11502
  function useDaimoPayStatus() {
11452
- const { paymentInfo } = useContext();
11453
- const status = (() => {
11454
- if (!paymentInfo || !paymentInfo.daimoPayOrder)
11455
- return undefined;
11456
- const order = paymentInfo.daimoPayOrder;
11457
- const paymentId = writeDaimoPayOrderID(order.id);
11458
- if (order.mode === DaimoPayOrderMode.HYDRATED) {
11459
- if (order.intentStatus != DaimoPayIntentStatus.PENDING) {
11460
- return {
11461
- status: order.intentStatus === DaimoPayIntentStatus.SUCCESSFUL
11462
- ? "payment_completed"
11463
- : "payment_bounced",
11464
- paymentId,
11465
- };
11503
+ const { paymentInfo } = usePayContext();
11504
+ if (!paymentInfo || !paymentInfo.daimoPayOrder)
11505
+ return undefined;
11506
+ const order = paymentInfo.daimoPayOrder;
11507
+ const paymentId = writeDaimoPayOrderID(order.id);
11508
+ if (order.mode === DaimoPayOrderMode.HYDRATED) {
11509
+ if (order.intentStatus !== DaimoPayIntentStatus.PENDING) {
11510
+ if (order.intentStatus === DaimoPayIntentStatus.SUCCESSFUL) {
11511
+ return { paymentId, status: "payment_completed" };
11466
11512
  }
11467
- else if (order.sourceStatus != DaimoPayOrderStatusSource.WAITING_PAYMENT) {
11468
- return {
11469
- status: "payment_started",
11470
- paymentId,
11471
- };
11513
+ else {
11514
+ return { paymentId, status: "payment_bounced" };
11472
11515
  }
11473
11516
  }
11474
- return {
11475
- status: "payment_pending",
11476
- paymentId,
11477
- };
11478
- })();
11479
- return status;
11517
+ else if (order.sourceStatus !== DaimoPayOrderStatusSource.WAITING_PAYMENT) {
11518
+ return { paymentId, status: "payment_started" };
11519
+ }
11520
+ }
11521
+ return { paymentId, status: "payment_pending" };
11480
11522
  }
11481
11523
 
11482
- export { Avatar, Chain as ChainIcon, Context, DaimoPayButton, DaimoPayProvider, types$1 as Types, defaultConfig as getDefaultConfig, useChainIsSupported, useChains, useDaimoPayStatus, useIsMounted, useModal, wallets };
11524
+ export { Avatar, Chain as ChainIcon, Context, DaimoPayButton, DaimoPayProvider, types$1 as Types, defaultConfig as getDefaultConfig, useChainIsSupported, useChains, useDaimoPayStatus, useIsMounted, useModal, usePayContext, wallets };
11483
11525
  //# sourceMappingURL=index.es.js.map