@0xsquid/react-hooks 6.7.0-cosmos-rest-beta.0 → 6.7.0-rollup-beta.0

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 (256) hide show
  1. package/dist/core/constants.d.ts +9 -0
  2. package/dist/hooks/index.d.ts +5 -4
  3. package/dist/index.esm.js +16892 -0
  4. package/dist/index.esm.js.map +1 -0
  5. package/dist/index.js +17096 -6
  6. package/dist/index.js.map +1 -1
  7. package/dist/secretService-Cc7emxDy.js +162 -0
  8. package/dist/secretService-Cc7emxDy.js.map +1 -0
  9. package/dist/{services/external/secretService.js → secretService-SEqSyHG0.js} +37 -8
  10. package/dist/secretService-SEqSyHG0.js.map +1 -0
  11. package/dist/services/external/rpcService.d.ts +2 -2
  12. package/dist/services/internal/cosmosService.d.ts +1 -2
  13. package/package.json +18 -4
  14. package/dist/core/abis/ics20.json +0 -128
  15. package/dist/core/connectors/bitcoin/errors/index.js +0 -22
  16. package/dist/core/connectors/bitcoin/errors/index.js.map +0 -1
  17. package/dist/core/connectors/bitcoin/helpers.js +0 -86
  18. package/dist/core/connectors/bitcoin/helpers.js.map +0 -1
  19. package/dist/core/connectors/bitcoin/index.js +0 -2
  20. package/dist/core/connectors/bitcoin/index.js.map +0 -1
  21. package/dist/core/connectors/bitcoin/wallets/index.js +0 -4
  22. package/dist/core/connectors/bitcoin/wallets/index.js.map +0 -1
  23. package/dist/core/connectors/bitcoin/wallets/keplr.js +0 -28
  24. package/dist/core/connectors/bitcoin/wallets/keplr.js.map +0 -1
  25. package/dist/core/connectors/bitcoin/wallets/phantom.js +0 -56
  26. package/dist/core/connectors/bitcoin/wallets/phantom.js.map +0 -1
  27. package/dist/core/connectors/bitcoin/wallets/unisat.js +0 -28
  28. package/dist/core/connectors/bitcoin/wallets/unisat.js.map +0 -1
  29. package/dist/core/constants.js +0 -135
  30. package/dist/core/constants.js.map +0 -1
  31. package/dist/core/externalLinks.js +0 -21
  32. package/dist/core/externalLinks.js.map +0 -1
  33. package/dist/core/index.js +0 -4
  34. package/dist/core/index.js.map +0 -1
  35. package/dist/core/multicall3.js +0 -442
  36. package/dist/core/multicall3.js.map +0 -1
  37. package/dist/core/providers/CosmosProvider.js +0 -13
  38. package/dist/core/providers/CosmosProvider.js.map +0 -1
  39. package/dist/core/providers/SolanaProvider.js +0 -15
  40. package/dist/core/providers/SolanaProvider.js.map +0 -1
  41. package/dist/core/providers/SuiProvider.js +0 -15
  42. package/dist/core/providers/SuiProvider.js.map +0 -1
  43. package/dist/core/queries/queries-keys.js +0 -204
  44. package/dist/core/queries/queries-keys.js.map +0 -1
  45. package/dist/core/queries/react-query-config.js +0 -11
  46. package/dist/core/queries/react-query-config.js.map +0 -1
  47. package/dist/core/types/config.js +0 -2
  48. package/dist/core/types/config.js.map +0 -1
  49. package/dist/core/types/dex.js +0 -33
  50. package/dist/core/types/dex.js.map +0 -1
  51. package/dist/core/types/error.js +0 -12
  52. package/dist/core/types/error.js.map +0 -1
  53. package/dist/core/types/event.js +0 -2
  54. package/dist/core/types/event.js.map +0 -1
  55. package/dist/core/types/index.js +0 -2
  56. package/dist/core/types/index.js.map +0 -1
  57. package/dist/core/types/rpc.js +0 -2
  58. package/dist/core/types/rpc.js.map +0 -1
  59. package/dist/core/types/sui.js +0 -2
  60. package/dist/core/types/sui.js.map +0 -1
  61. package/dist/core/types/swap.js +0 -2
  62. package/dist/core/types/swap.js.map +0 -1
  63. package/dist/core/types/tokens.js +0 -2
  64. package/dist/core/types/tokens.js.map +0 -1
  65. package/dist/core/types/transaction.js +0 -41
  66. package/dist/core/types/transaction.js.map +0 -1
  67. package/dist/core/types/wallet.js +0 -26
  68. package/dist/core/types/wallet.js.map +0 -1
  69. package/dist/core/wagmiConfig.js +0 -60
  70. package/dist/core/wagmiConfig.js.map +0 -1
  71. package/dist/core/wallets.js +0 -549
  72. package/dist/core/wallets.js.map +0 -1
  73. package/dist/hooks/chains/useSquidChains.js +0 -107
  74. package/dist/hooks/chains/useSquidChains.js.map +0 -1
  75. package/dist/hooks/client/useClient.js +0 -6
  76. package/dist/hooks/client/useClient.js.map +0 -1
  77. package/dist/hooks/cosmos/useCosmos.js +0 -172
  78. package/dist/hooks/cosmos/useCosmos.js.map +0 -1
  79. package/dist/hooks/cosmos/useCosmosForChain.js +0 -33
  80. package/dist/hooks/cosmos/useCosmosForChain.js.map +0 -1
  81. package/dist/hooks/index.js +0 -44
  82. package/dist/hooks/index.js.map +0 -1
  83. package/dist/hooks/navigation/useKeyboardNavigation.js +0 -67
  84. package/dist/hooks/navigation/useKeyboardNavigation.js.map +0 -1
  85. package/dist/hooks/query/useSquidQueryClient.js +0 -23
  86. package/dist/hooks/query/useSquidQueryClient.js.map +0 -1
  87. package/dist/hooks/solana/useSolana.js +0 -104
  88. package/dist/hooks/solana/useSolana.js.map +0 -1
  89. package/dist/hooks/squid/useSquid.js +0 -55
  90. package/dist/hooks/squid/useSquid.js.map +0 -1
  91. package/dist/hooks/store/useAddressBookStore.js +0 -26
  92. package/dist/hooks/store/useAddressBookStore.js.map +0 -1
  93. package/dist/hooks/store/useAssetsColorsStore.js +0 -7
  94. package/dist/hooks/store/useAssetsColorsStore.js.map +0 -1
  95. package/dist/hooks/store/useDepositAddressStore.js +0 -12
  96. package/dist/hooks/store/useDepositAddressStore.js.map +0 -1
  97. package/dist/hooks/store/useFavoriteTokensStore.js +0 -28
  98. package/dist/hooks/store/useFavoriteTokensStore.js.map +0 -1
  99. package/dist/hooks/store/useHistoryStore.js +0 -41
  100. package/dist/hooks/store/useHistoryStore.js.map +0 -1
  101. package/dist/hooks/store/useSquidStore.js +0 -56
  102. package/dist/hooks/store/useSquidStore.js.map +0 -1
  103. package/dist/hooks/store/useWalletStore.js +0 -42
  104. package/dist/hooks/store/useWalletStore.js.map +0 -1
  105. package/dist/hooks/sui/useSui.js +0 -28
  106. package/dist/hooks/sui/useSui.js.map +0 -1
  107. package/dist/hooks/sui/useSuiClient.js +0 -16
  108. package/dist/hooks/sui/useSuiClient.js.map +0 -1
  109. package/dist/hooks/sui/useSuiWallets.js +0 -42
  110. package/dist/hooks/sui/useSuiWallets.js.map +0 -1
  111. package/dist/hooks/swap/useDepositAddress.js +0 -63
  112. package/dist/hooks/swap/useDepositAddress.js.map +0 -1
  113. package/dist/hooks/swap/useSwap.js +0 -209
  114. package/dist/hooks/swap/useSwap.js.map +0 -1
  115. package/dist/hooks/tokens/useAllConnectedWalletBalances.js +0 -103
  116. package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +0 -1
  117. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +0 -119
  118. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +0 -1
  119. package/dist/hooks/tokens/useBalance.js +0 -136
  120. package/dist/hooks/tokens/useBalance.js.map +0 -1
  121. package/dist/hooks/tokens/useMultiChainBalance.js +0 -68
  122. package/dist/hooks/tokens/useMultiChainBalance.js.map +0 -1
  123. package/dist/hooks/tokens/useMultipleTokenPrices.js +0 -46
  124. package/dist/hooks/tokens/useMultipleTokenPrices.js.map +0 -1
  125. package/dist/hooks/tokens/useNativeBalance.js +0 -217
  126. package/dist/hooks/tokens/useNativeBalance.js.map +0 -1
  127. package/dist/hooks/tokens/useNativeTokenForChain.js +0 -28
  128. package/dist/hooks/tokens/useNativeTokenForChain.js.map +0 -1
  129. package/dist/hooks/tokens/useSingleTokenPrice.js +0 -38
  130. package/dist/hooks/tokens/useSingleTokenPrice.js.map +0 -1
  131. package/dist/hooks/tokens/useSquidTokens.js +0 -80
  132. package/dist/hooks/tokens/useSquidTokens.js.map +0 -1
  133. package/dist/hooks/tokens/useTokenHistoricalData.js +0 -23
  134. package/dist/hooks/tokens/useTokenHistoricalData.js.map +0 -1
  135. package/dist/hooks/transaction/useAllTransactionsStatus.js +0 -68
  136. package/dist/hooks/transaction/useAllTransactionsStatus.js.map +0 -1
  137. package/dist/hooks/transaction/useApproval.js +0 -223
  138. package/dist/hooks/transaction/useApproval.js.map +0 -1
  139. package/dist/hooks/transaction/useErc20Allowance.js +0 -43
  140. package/dist/hooks/transaction/useErc20Allowance.js.map +0 -1
  141. package/dist/hooks/transaction/useEstimate.js +0 -118
  142. package/dist/hooks/transaction/useEstimate.js.map +0 -1
  143. package/dist/hooks/transaction/useEstimatePriceImpact.js +0 -31
  144. package/dist/hooks/transaction/useEstimatePriceImpact.js.map +0 -1
  145. package/dist/hooks/transaction/useExecuteTransaction.js +0 -605
  146. package/dist/hooks/transaction/useExecuteTransaction.js.map +0 -1
  147. package/dist/hooks/transaction/useGetRoute.js +0 -224
  148. package/dist/hooks/transaction/useGetRoute.js.map +0 -1
  149. package/dist/hooks/transaction/useIcs20Allowance.js +0 -40
  150. package/dist/hooks/transaction/useIcs20Allowance.js.map +0 -1
  151. package/dist/hooks/transaction/useRouteWarnings.js +0 -19
  152. package/dist/hooks/transaction/useRouteWarnings.js.map +0 -1
  153. package/dist/hooks/transaction/useSingleTransaction.js +0 -91
  154. package/dist/hooks/transaction/useSingleTransaction.js.map +0 -1
  155. package/dist/hooks/user/useAvatar.js +0 -34
  156. package/dist/hooks/user/useAvatar.js.map +0 -1
  157. package/dist/hooks/user/useHistory.js +0 -106
  158. package/dist/hooks/user/useHistory.js.map +0 -1
  159. package/dist/hooks/user/useUserParams.js +0 -33
  160. package/dist/hooks/user/useUserParams.js.map +0 -1
  161. package/dist/hooks/wallet/useAddToken.js +0 -49
  162. package/dist/hooks/wallet/useAddToken.js.map +0 -1
  163. package/dist/hooks/wallet/useAutoConnect.js +0 -74
  164. package/dist/hooks/wallet/useAutoConnect.js.map +0 -1
  165. package/dist/hooks/wallet/useEns.js +0 -69
  166. package/dist/hooks/wallet/useEns.js.map +0 -1
  167. package/dist/hooks/wallet/useGnosisContext.js +0 -78
  168. package/dist/hooks/wallet/useGnosisContext.js.map +0 -1
  169. package/dist/hooks/wallet/useIntegratorContext.js +0 -39
  170. package/dist/hooks/wallet/useIntegratorContext.js.map +0 -1
  171. package/dist/hooks/wallet/useMultiChainWallet.js +0 -175
  172. package/dist/hooks/wallet/useMultiChainWallet.js.map +0 -1
  173. package/dist/hooks/wallet/useSigner.js +0 -76
  174. package/dist/hooks/wallet/useSigner.js.map +0 -1
  175. package/dist/hooks/wallet/useWallet.js +0 -206
  176. package/dist/hooks/wallet/useWallet.js.map +0 -1
  177. package/dist/hooks/wallet/useWallets.js +0 -36
  178. package/dist/hooks/wallet/useWallets.js.map +0 -1
  179. package/dist/provider/index.js +0 -113
  180. package/dist/provider/index.js.map +0 -1
  181. package/dist/services/external/cosmosRestClient.d.ts +0 -18
  182. package/dist/services/external/cosmosRestClient.js +0 -41
  183. package/dist/services/external/cosmosRestClient.js.map +0 -1
  184. package/dist/services/external/ens.js +0 -66
  185. package/dist/services/external/ens.js.map +0 -1
  186. package/dist/services/external/rpcService.js +0 -390
  187. package/dist/services/external/rpcService.js.map +0 -1
  188. package/dist/services/external/secretService.js.map +0 -1
  189. package/dist/services/external/suiRpcClient.js +0 -80
  190. package/dist/services/external/suiRpcClient.js.map +0 -1
  191. package/dist/services/external/tokenDataService.js +0 -108
  192. package/dist/services/external/tokenDataService.js.map +0 -1
  193. package/dist/services/index.js +0 -16
  194. package/dist/services/index.js.map +0 -1
  195. package/dist/services/internal/apiService.js +0 -21
  196. package/dist/services/internal/apiService.js.map +0 -1
  197. package/dist/services/internal/assetsService.js +0 -586
  198. package/dist/services/internal/assetsService.js.map +0 -1
  199. package/dist/services/internal/bitcoinService.js +0 -51
  200. package/dist/services/internal/bitcoinService.js.map +0 -1
  201. package/dist/services/internal/configService.js +0 -215
  202. package/dist/services/internal/configService.js.map +0 -1
  203. package/dist/services/internal/cosmosService.js +0 -214
  204. package/dist/services/internal/cosmosService.js.map +0 -1
  205. package/dist/services/internal/errorService.js +0 -188
  206. package/dist/services/internal/errorService.js.map +0 -1
  207. package/dist/services/internal/estimateService.js +0 -221
  208. package/dist/services/internal/estimateService.js.map +0 -1
  209. package/dist/services/internal/eventService.js +0 -156
  210. package/dist/services/internal/eventService.js.map +0 -1
  211. package/dist/services/internal/evmService.js +0 -42
  212. package/dist/services/internal/evmService.js.map +0 -1
  213. package/dist/services/internal/numberService.js +0 -171
  214. package/dist/services/internal/numberService.js.map +0 -1
  215. package/dist/services/internal/priceService.js +0 -53
  216. package/dist/services/internal/priceService.js.map +0 -1
  217. package/dist/services/internal/searchService.js +0 -98
  218. package/dist/services/internal/searchService.js.map +0 -1
  219. package/dist/services/internal/solanaService.js +0 -109
  220. package/dist/services/internal/solanaService.js.map +0 -1
  221. package/dist/services/internal/suiService.js +0 -119
  222. package/dist/services/internal/suiService.js.map +0 -1
  223. package/dist/services/internal/transactionService.js +0 -207
  224. package/dist/services/internal/transactionService.js.map +0 -1
  225. package/dist/services/internal/transactionStatusService.js +0 -315
  226. package/dist/services/internal/transactionStatusService.js.map +0 -1
  227. package/dist/services/internal/walletService.js +0 -464
  228. package/dist/services/internal/walletService.js.map +0 -1
  229. package/dist/tests/apiService.test.js +0 -40
  230. package/dist/tests/apiService.test.js.map +0 -1
  231. package/dist/tests/assetsService.test.js +0 -500
  232. package/dist/tests/assetsService.test.js.map +0 -1
  233. package/dist/tests/configService.test.js +0 -673
  234. package/dist/tests/configService.test.js.map +0 -1
  235. package/dist/tests/estimateService.test.js +0 -355
  236. package/dist/tests/estimateService.test.js.map +0 -1
  237. package/dist/tests/fetchSquidData.js +0 -36
  238. package/dist/tests/fetchSquidData.js.map +0 -1
  239. package/dist/tests/jest-svg-transform.d.ts +0 -0
  240. package/dist/tests/jest-svg-transform.js +0 -21
  241. package/dist/tests/jest-svg-transform.js.map +0 -1
  242. package/dist/tests/numberService.test.js +0 -135
  243. package/dist/tests/numberService.test.js.map +0 -1
  244. package/dist/tests/priceService.test.js +0 -38
  245. package/dist/tests/priceService.test.js.map +0 -1
  246. package/dist/tests/sample.json +0 -0
  247. package/dist/tests/searchService.test.js +0 -92
  248. package/dist/tests/searchService.test.js.map +0 -1
  249. package/dist/tests/swapConfig.test.js +0 -332
  250. package/dist/tests/swapConfig.test.js.map +0 -1
  251. package/dist/tests/transactionService.test.js +0 -53
  252. package/dist/tests/transactionService.test.js.map +0 -1
  253. package/dist/tests/transactionStatusService.test.js +0 -165
  254. package/dist/tests/transactionStatusService.test.js.map +0 -1
  255. package/dist/tests/walletService.test.js +0 -264
  256. package/dist/tests/walletService.test.js.map +0 -1
@@ -0,0 +1,162 @@
1
+ 'use strict';
2
+
3
+ var stargate = require('@cosmjs/stargate');
4
+ var secretjs = require('secretjs');
5
+ var index = require('./index.js');
6
+ require('@0xsquid/squid-types');
7
+ require('react');
8
+ require('ethers');
9
+ require('viem');
10
+ require('axios');
11
+ require('bignumber.js');
12
+ require('wagmi/connectors');
13
+ require('@cosmjs/encoding');
14
+ require('fuse.js');
15
+ require('@solana/spl-token');
16
+ require('@solana/web3.js');
17
+ require('bitcoinjs-lib');
18
+ require('@bitcoinerlab/secp256k1');
19
+ require('@mysten/wallet-standard');
20
+ require('zustand');
21
+ require('zustand/middleware');
22
+ require('@tanstack/react-query');
23
+ require('wagmi');
24
+ require('@safe-global/safe-apps-sdk');
25
+ require('@solana/wallet-adapter-phantom');
26
+ require('@mysten/slush-wallet');
27
+ require('@cosmjs/cosmwasm-stargate');
28
+ require('@mysten/sui/transactions');
29
+ require('@injectivelabs/sdk-ts/dist/cjs/core/stargate');
30
+ require('@mysten/sui/client');
31
+ require('@0xsquid/sdk');
32
+ require('viem/chains');
33
+
34
+ /**
35
+ * Fetch secret network token balance
36
+ * Using the permit signature, see permit function for more details
37
+ * @param secretJS
38
+ * @param contract
39
+ * @param chainId
40
+ * @param walletAddress
41
+ * @param permit
42
+ * @returns
43
+ */
44
+ const getTokenBalance = async (secretJS, contract, permit) => {
45
+ if (permit) {
46
+ const msg = {
47
+ balance: {},
48
+ };
49
+ const result = await secretJS.query.compute.queryContract({
50
+ contract_address: contract.address,
51
+ code_hash: contract.codeHash,
52
+ query: {
53
+ with_permit: {
54
+ query: msg,
55
+ permit,
56
+ },
57
+ },
58
+ });
59
+ return result;
60
+ }
61
+ return -1;
62
+ };
63
+ const getPermit = async (chainId, contracts, address) => {
64
+ const contractsString = contracts.join("_");
65
+ const permKey = `perm_${chainId}_${contractsString}_${address}`;
66
+ let permit;
67
+ const permitStored = window.localStorage.getItem(permKey);
68
+ if (permitStored)
69
+ permit = JSON.parse(permitStored);
70
+ // Not able to fetch permit signature from local storage,
71
+ // Ask user to sign message
72
+ if (!permit) {
73
+ try {
74
+ const result = await window.keplr.signAmino(chainId, address, {
75
+ chain_id: chainId,
76
+ account_number: "0",
77
+ sequence: "0",
78
+ fee: {
79
+ amount: [{ denom: "uscrt", amount: "0" }],
80
+ gas: "1",
81
+ },
82
+ msgs: [
83
+ {
84
+ type: "query_permit",
85
+ value: {
86
+ permit_name: "secret-bridge-balance",
87
+ allowed_tokens: contracts,
88
+ permissions: ["balance"],
89
+ },
90
+ },
91
+ ],
92
+ memo: "",
93
+ }, {
94
+ preferNoSetFee: true,
95
+ preferNoSetMemo: true,
96
+ });
97
+ permit = {
98
+ params: {
99
+ permit_name: "secret-bridge-balance",
100
+ allowed_tokens: contracts,
101
+ chain_id: chainId,
102
+ permissions: ["balance"],
103
+ },
104
+ signature: result.signature,
105
+ };
106
+ window.localStorage.setItem(permKey, JSON.stringify(permit));
107
+ }
108
+ catch (err) {
109
+ console.error("--- PERMIT ERROR ---");
110
+ console.error(err);
111
+ }
112
+ }
113
+ return permit;
114
+ };
115
+ /**
116
+ * Fetches the secret balance of the user
117
+ * This has a different logic than the other balances because Secret network hides the balance of the user by design
118
+ * So we need to fetch the balance in a different way
119
+ */
120
+ const fetchAllSecretBalances = async (chainData, userAddress, secretTokens, keplr) => {
121
+ if (!keplr)
122
+ return [];
123
+ // Enables app to utilize keplr's secret utilities
124
+ await keplr.enable(index.CHAIN_IDS.SECRET);
125
+ // Create a client that handles the query encryption
126
+ const client = new secretjs.SecretNetworkClient({
127
+ url: chainData.rest,
128
+ chainId: index.CHAIN_IDS.SECRET,
129
+ wallet: keplr.getOfflineSignerOnlyAmino(index.CHAIN_IDS.SECRET),
130
+ encryptionUtils: keplr.getEnigmaUtils(index.CHAIN_IDS.SECRET),
131
+ walletAddress: userAddress,
132
+ });
133
+ // Get secret tokens
134
+ const permit = await getPermit(index.CHAIN_IDS.SECRET, secretTokens.map((st) => st.address), userAddress);
135
+ // Fetching all balances in parallel
136
+ const privateTokens = await Promise.all(secretTokens
137
+ .filter((t) => !!t.codeHash)
138
+ .map(async (token) => {
139
+ const result = (await getTokenBalance(client, {
140
+ address: token.address,
141
+ codeHash: token.codeHash ?? "",
142
+ }, permit));
143
+ return {
144
+ ...token,
145
+ balance: index.formatBNToReadable(BigInt(result.balance.amount), token?.decimals),
146
+ };
147
+ }));
148
+ // Use Stargate getBalance for SCRT
149
+ const stargateClient = await stargate.StargateClient.connect(chainData.rpc);
150
+ const nativeSecretToken = secretTokens.find((t) => t.address === "uscrt");
151
+ const publicTokenBalance = await stargateClient.getBalance(userAddress, "uscrt");
152
+ const publicTokenWithBalance = {
153
+ ...nativeSecretToken,
154
+ balance: index.formatBNToReadable(BigInt(publicTokenBalance.amount), nativeSecretToken?.decimals ?? 18),
155
+ };
156
+ return [...privateTokens, publicTokenWithBalance];
157
+ };
158
+
159
+ exports.fetchAllSecretBalances = fetchAllSecretBalances;
160
+ exports.getPermit = getPermit;
161
+ exports.getTokenBalance = getTokenBalance;
162
+ //# sourceMappingURL=secretService-Cc7emxDy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretService-Cc7emxDy.js","sources":["../src/services/external/secretService.ts"],"sourcesContent":["import type { ChainData, CosmosChain, Token } from \"@0xsquid/squid-types\";\nimport { StargateClient } from \"@cosmjs/stargate\";\nimport type { Keplr } from \"@keplr-wallet/types\";\nimport { SecretNetworkClient } from \"secretjs\";\nimport { CHAIN_IDS } from \"../../core/constants\";\nimport type { TokenWithBalance } from \"../../core/types/tokens\";\nimport type { TypedWindow } from \"../../core/types/wallet\";\nimport { formatBNToReadable } from \"../internal/numberService\";\n\n/**\n * Fetch secret network token balance\n * Using the permit signature, see permit function for more details\n * @param secretJS\n * @param contract\n * @param chainId\n * @param walletAddress\n * @param permit\n * @returns\n */\nexport const getTokenBalance = async (\n secretJS: SecretNetworkClient,\n contract: { address: string; codeHash: string },\n permit: any\n) => {\n if (permit) {\n const msg = {\n balance: {},\n };\n\n const result = await secretJS.query.compute.queryContract({\n contract_address: contract.address,\n code_hash: contract.codeHash,\n query: {\n with_permit: {\n query: msg,\n permit,\n },\n },\n });\n return result;\n }\n return -1;\n};\n\nexport const getPermit = async (\n chainId: string,\n contracts: any[],\n address: string\n) => {\n const contractsString = contracts.join(\"_\");\n const permKey = `perm_${chainId}_${contractsString}_${address}`;\n let permit: any;\n\n const permitStored = window.localStorage.getItem(permKey);\n if (permitStored) permit = JSON.parse(permitStored);\n\n // Not able to fetch permit signature from local storage,\n // Ask user to sign message\n if (!permit) {\n try {\n const result = await (window as TypedWindow).keplr.signAmino(\n chainId,\n address,\n {\n chain_id: chainId,\n account_number: \"0\",\n sequence: \"0\",\n fee: {\n amount: [{ denom: \"uscrt\", amount: \"0\" }],\n gas: \"1\",\n },\n msgs: [\n {\n type: \"query_permit\",\n value: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n permissions: [\"balance\"],\n },\n },\n ],\n memo: \"\",\n },\n {\n preferNoSetFee: true,\n preferNoSetMemo: true,\n }\n );\n permit = {\n params: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n chain_id: chainId,\n permissions: [\"balance\"],\n },\n signature: result.signature,\n };\n window.localStorage.setItem(permKey, JSON.stringify(permit));\n } catch (err) {\n console.error(\"--- PERMIT ERROR ---\");\n console.error(err);\n }\n }\n return permit;\n};\n\n/**\n * Fetches the secret balance of the user\n * This has a different logic than the other balances because Secret network hides the balance of the user by design\n * So we need to fetch the balance in a different way\n */\nexport const fetchAllSecretBalances = async (\n chainData: ChainData,\n userAddress: string,\n secretTokens: (Token & { codeHash?: string })[],\n keplr?: Keplr\n): Promise<TokenWithBalance[]> => {\n if (!keplr) return [];\n // Enables app to utilize keplr's secret utilities\n await keplr.enable(CHAIN_IDS.SECRET);\n // Create a client that handles the query encryption\n const client = new SecretNetworkClient({\n url: (chainData as CosmosChain).rest,\n chainId: CHAIN_IDS.SECRET,\n wallet: keplr.getOfflineSignerOnlyAmino(CHAIN_IDS.SECRET),\n encryptionUtils: keplr.getEnigmaUtils(CHAIN_IDS.SECRET),\n walletAddress: userAddress,\n });\n\n // Get secret tokens\n\n const permit = await getPermit(\n CHAIN_IDS.SECRET,\n secretTokens.map((st) => st.address),\n userAddress\n );\n\n // Fetching all balances in parallel\n const privateTokens = await Promise.all(\n secretTokens\n .filter((t) => !!t.codeHash)\n .map(async (token) => {\n const result = (await getTokenBalance(\n client,\n {\n address: token.address,\n codeHash: token.codeHash ?? \"\",\n },\n permit\n )) as { balance: { amount: string } };\n\n return {\n ...token,\n balance: formatBNToReadable(\n BigInt(result.balance.amount),\n token?.decimals\n ),\n } as TokenWithBalance;\n })\n );\n\n // Use Stargate getBalance for SCRT\n const stargateClient = await StargateClient.connect(chainData.rpc);\n const nativeSecretToken = secretTokens.find((t) => t.address === \"uscrt\");\n\n const publicTokenBalance = await stargateClient.getBalance(\n userAddress,\n \"uscrt\"\n );\n\n const publicTokenWithBalance = {\n ...nativeSecretToken,\n balance: formatBNToReadable(\n BigInt(publicTokenBalance.amount),\n nativeSecretToken?.decimals ?? 18\n ),\n } as TokenWithBalance;\n\n return [...privateTokens, publicTokenWithBalance];\n};\n"],"names":["CHAIN_IDS","SecretNetworkClient","formatBNToReadable","StargateClient"],"mappings":"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"}
@@ -1,7 +1,34 @@
1
- import { StargateClient } from "@cosmjs/stargate";
2
- import { SecretNetworkClient } from "secretjs";
3
- import { CHAIN_IDS } from "../../core/constants";
4
- import { formatBNToReadable } from "../internal/numberService";
1
+ import { StargateClient } from '@cosmjs/stargate';
2
+ import { SecretNetworkClient } from 'secretjs';
3
+ import { CHAIN_IDS, formatBNToReadable } from './index.esm.js';
4
+ import '@0xsquid/squid-types';
5
+ import 'react';
6
+ import 'ethers';
7
+ import 'viem';
8
+ import 'axios';
9
+ import 'bignumber.js';
10
+ import 'wagmi/connectors';
11
+ import '@cosmjs/encoding';
12
+ import 'fuse.js';
13
+ import '@solana/spl-token';
14
+ import '@solana/web3.js';
15
+ import 'bitcoinjs-lib';
16
+ import '@bitcoinerlab/secp256k1';
17
+ import '@mysten/wallet-standard';
18
+ import 'zustand';
19
+ import 'zustand/middleware';
20
+ import '@tanstack/react-query';
21
+ import 'wagmi';
22
+ import '@safe-global/safe-apps-sdk';
23
+ import '@solana/wallet-adapter-phantom';
24
+ import '@mysten/slush-wallet';
25
+ import '@cosmjs/cosmwasm-stargate';
26
+ import '@mysten/sui/transactions';
27
+ import '@injectivelabs/sdk-ts/dist/cjs/core/stargate';
28
+ import '@mysten/sui/client';
29
+ import '@0xsquid/sdk';
30
+ import 'viem/chains';
31
+
5
32
  /**
6
33
  * Fetch secret network token balance
7
34
  * Using the permit signature, see permit function for more details
@@ -12,7 +39,7 @@ import { formatBNToReadable } from "../internal/numberService";
12
39
  * @param permit
13
40
  * @returns
14
41
  */
15
- export const getTokenBalance = async (secretJS, contract, permit) => {
42
+ const getTokenBalance = async (secretJS, contract, permit) => {
16
43
  if (permit) {
17
44
  const msg = {
18
45
  balance: {},
@@ -31,7 +58,7 @@ export const getTokenBalance = async (secretJS, contract, permit) => {
31
58
  }
32
59
  return -1;
33
60
  };
34
- export const getPermit = async (chainId, contracts, address) => {
61
+ const getPermit = async (chainId, contracts, address) => {
35
62
  const contractsString = contracts.join("_");
36
63
  const permKey = `perm_${chainId}_${contractsString}_${address}`;
37
64
  let permit;
@@ -88,7 +115,7 @@ export const getPermit = async (chainId, contracts, address) => {
88
115
  * This has a different logic than the other balances because Secret network hides the balance of the user by design
89
116
  * So we need to fetch the balance in a different way
90
117
  */
91
- export const fetchAllSecretBalances = async (chainData, userAddress, secretTokens, keplr) => {
118
+ const fetchAllSecretBalances = async (chainData, userAddress, secretTokens, keplr) => {
92
119
  if (!keplr)
93
120
  return [];
94
121
  // Enables app to utilize keplr's secret utilities
@@ -126,4 +153,6 @@ export const fetchAllSecretBalances = async (chainData, userAddress, secretToken
126
153
  };
127
154
  return [...privateTokens, publicTokenWithBalance];
128
155
  };
129
- //# sourceMappingURL=secretService.js.map
156
+
157
+ export { fetchAllSecretBalances, getPermit, getTokenBalance };
158
+ //# sourceMappingURL=secretService-SEqSyHG0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretService-SEqSyHG0.js","sources":["../src/services/external/secretService.ts"],"sourcesContent":["import type { ChainData, CosmosChain, Token } from \"@0xsquid/squid-types\";\nimport { StargateClient } from \"@cosmjs/stargate\";\nimport type { Keplr } from \"@keplr-wallet/types\";\nimport { SecretNetworkClient } from \"secretjs\";\nimport { CHAIN_IDS } from \"../../core/constants\";\nimport type { TokenWithBalance } from \"../../core/types/tokens\";\nimport type { TypedWindow } from \"../../core/types/wallet\";\nimport { formatBNToReadable } from \"../internal/numberService\";\n\n/**\n * Fetch secret network token balance\n * Using the permit signature, see permit function for more details\n * @param secretJS\n * @param contract\n * @param chainId\n * @param walletAddress\n * @param permit\n * @returns\n */\nexport const getTokenBalance = async (\n secretJS: SecretNetworkClient,\n contract: { address: string; codeHash: string },\n permit: any\n) => {\n if (permit) {\n const msg = {\n balance: {},\n };\n\n const result = await secretJS.query.compute.queryContract({\n contract_address: contract.address,\n code_hash: contract.codeHash,\n query: {\n with_permit: {\n query: msg,\n permit,\n },\n },\n });\n return result;\n }\n return -1;\n};\n\nexport const getPermit = async (\n chainId: string,\n contracts: any[],\n address: string\n) => {\n const contractsString = contracts.join(\"_\");\n const permKey = `perm_${chainId}_${contractsString}_${address}`;\n let permit: any;\n\n const permitStored = window.localStorage.getItem(permKey);\n if (permitStored) permit = JSON.parse(permitStored);\n\n // Not able to fetch permit signature from local storage,\n // Ask user to sign message\n if (!permit) {\n try {\n const result = await (window as TypedWindow).keplr.signAmino(\n chainId,\n address,\n {\n chain_id: chainId,\n account_number: \"0\",\n sequence: \"0\",\n fee: {\n amount: [{ denom: \"uscrt\", amount: \"0\" }],\n gas: \"1\",\n },\n msgs: [\n {\n type: \"query_permit\",\n value: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n permissions: [\"balance\"],\n },\n },\n ],\n memo: \"\",\n },\n {\n preferNoSetFee: true,\n preferNoSetMemo: true,\n }\n );\n permit = {\n params: {\n permit_name: \"secret-bridge-balance\",\n allowed_tokens: contracts,\n chain_id: chainId,\n permissions: [\"balance\"],\n },\n signature: result.signature,\n };\n window.localStorage.setItem(permKey, JSON.stringify(permit));\n } catch (err) {\n console.error(\"--- PERMIT ERROR ---\");\n console.error(err);\n }\n }\n return permit;\n};\n\n/**\n * Fetches the secret balance of the user\n * This has a different logic than the other balances because Secret network hides the balance of the user by design\n * So we need to fetch the balance in a different way\n */\nexport const fetchAllSecretBalances = async (\n chainData: ChainData,\n userAddress: string,\n secretTokens: (Token & { codeHash?: string })[],\n keplr?: Keplr\n): Promise<TokenWithBalance[]> => {\n if (!keplr) return [];\n // Enables app to utilize keplr's secret utilities\n await keplr.enable(CHAIN_IDS.SECRET);\n // Create a client that handles the query encryption\n const client = new SecretNetworkClient({\n url: (chainData as CosmosChain).rest,\n chainId: CHAIN_IDS.SECRET,\n wallet: keplr.getOfflineSignerOnlyAmino(CHAIN_IDS.SECRET),\n encryptionUtils: keplr.getEnigmaUtils(CHAIN_IDS.SECRET),\n walletAddress: userAddress,\n });\n\n // Get secret tokens\n\n const permit = await getPermit(\n CHAIN_IDS.SECRET,\n secretTokens.map((st) => st.address),\n userAddress\n );\n\n // Fetching all balances in parallel\n const privateTokens = await Promise.all(\n secretTokens\n .filter((t) => !!t.codeHash)\n .map(async (token) => {\n const result = (await getTokenBalance(\n client,\n {\n address: token.address,\n codeHash: token.codeHash ?? \"\",\n },\n permit\n )) as { balance: { amount: string } };\n\n return {\n ...token,\n balance: formatBNToReadable(\n BigInt(result.balance.amount),\n token?.decimals\n ),\n } as TokenWithBalance;\n })\n );\n\n // Use Stargate getBalance for SCRT\n const stargateClient = await StargateClient.connect(chainData.rpc);\n const nativeSecretToken = secretTokens.find((t) => t.address === \"uscrt\");\n\n const publicTokenBalance = await stargateClient.getBalance(\n userAddress,\n \"uscrt\"\n );\n\n const publicTokenWithBalance = {\n ...nativeSecretToken,\n balance: formatBNToReadable(\n BigInt(publicTokenBalance.amount),\n nativeSecretToken?.decimals ?? 18\n ),\n } as TokenWithBalance;\n\n return [...privateTokens, publicTokenWithBalance];\n};\n"],"names":[],"mappings":"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"}
@@ -19,8 +19,8 @@ export declare const getCosmosTokenBalance: (chain: ChainData, address: string,
19
19
  * @param {Token[]} params.tokens - array of Cosmos tokens.
20
20
  * @returns {Promise<TokenWithBalance[]>} promise that resolves to an array of tokens with their balances.
21
21
  */
22
- export declare const getAllCosmosBalancesForChain: ({ rest, address, tokens, }: {
23
- rest: string;
22
+ export declare const getAllCosmosBalancesForChain: ({ rpc, address, tokens, }: {
23
+ rpc: string;
24
24
  tokens: Token[];
25
25
  address: string;
26
26
  }) => Promise<TokenWithBalance[]>;
@@ -1,4 +1,4 @@
1
- import { ChainData, ChainType, CosmosChain } from "@0xsquid/squid-types";
1
+ import { ChainData, ChainType } from "@0xsquid/squid-types";
2
2
  import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate";
3
3
  import { OfflineSigner } from "@cosmjs/proto-signing";
4
4
  import { SigningStargateClient } from "@cosmjs/stargate";
@@ -51,5 +51,4 @@ export declare function suggestChainOrThrow({ keplrTypeWallet, chain, error, }:
51
51
  chain: ChainData;
52
52
  error: unknown;
53
53
  }): Promise<void>;
54
- export declare function getCosmosRestEndpoint(chain: CosmosChain): string;
55
54
  export {};
package/package.json CHANGED
@@ -1,11 +1,18 @@
1
1
  {
2
2
  "name": "@0xsquid/react-hooks",
3
- "version": "6.7.0-cosmos-rest-beta.0",
3
+ "version": "6.7.0-rollup-beta.0",
4
4
  "description": "Squid hooks monorepo",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
- "module": "dist/index.js",
7
+ "module": "dist/index.esm.js",
8
8
  "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.esm.js",
12
+ "require": "./dist/index.js",
13
+ "types": "./dist/index.d.ts"
14
+ }
15
+ },
9
16
  "files": [
10
17
  "dist",
11
18
  "README.md"
@@ -16,12 +23,12 @@
16
23
  },
17
24
  "scripts": {
18
25
  "clean": "rimraf dist",
19
- "build": "yarn clean && tsc --noEmit false && node scripts/copyAssets.js",
26
+ "build": "yarn clean && rollup -c rollup.config.js && node scripts/copyAssets.js",
20
27
  "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
21
28
  "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix",
22
29
  "test": "node --experimental-vm-modules node_modules/.bin/jest",
23
30
  "release": "release-it",
24
- "release:pre": "release-it --preRelease=beta",
31
+ "release:pre": "release-it --preRelease=rollup-beta",
25
32
  "release:ci": "release-it --ci",
26
33
  "release:dry": "release-it --dry-run",
27
34
  "packlib": "rm -f squid-hooks-lib-*.tgz && yarn build && yarn pack --filename squid-hooks-lib-$(date +%s).tgz"
@@ -76,6 +83,12 @@
76
83
  "@types/node": "18.7.23",
77
84
  "@types/react": "^18.3.3",
78
85
  "@types/react-dom": "^18.3.0",
86
+ "@rollup/plugin-commonjs": "^25.0.7",
87
+ "@rollup/plugin-json": "^6.1.0",
88
+ "@rollup/plugin-node-resolve": "^15.2.3",
89
+ "@rollup/plugin-typescript": "^11.1.6",
90
+ "rollup": "^4.18.0",
91
+ "rollup-plugin-dts": "^6.1.1",
79
92
  "@typescript-eslint/eslint-plugin": "7.5.0",
80
93
  "@typescript-eslint/parser": "7.5.0",
81
94
  "autoprefixer": "9",
@@ -101,6 +114,7 @@
101
114
  "rimraf": "5.0.5",
102
115
  "ts-jest": "29.1.0",
103
116
  "ts-loader": "9.4.1",
117
+ "tslib": "^2.6.3",
104
118
  "ts-node": "10.9.2",
105
119
  "typescript": "5.1.3"
106
120
  },
@@ -1,128 +0,0 @@
1
- [
2
- {
3
- "inputs": [
4
- {
5
- "internalType": "address",
6
- "name": "grantee",
7
- "type": "address"
8
- },
9
- {
10
- "internalType": "address",
11
- "name": "granter",
12
- "type": "address"
13
- }
14
- ],
15
- "name": "allowance",
16
- "outputs": [
17
- {
18
- "components": [
19
- {
20
- "internalType": "string",
21
- "name": "sourcePort",
22
- "type": "string"
23
- },
24
- {
25
- "internalType": "string",
26
- "name": "sourceChannel",
27
- "type": "string"
28
- },
29
- {
30
- "components": [
31
- {
32
- "internalType": "string",
33
- "name": "denom",
34
- "type": "string"
35
- },
36
- {
37
- "internalType": "uint256",
38
- "name": "amount",
39
- "type": "uint256"
40
- }
41
- ],
42
- "internalType": "struct Coin[]",
43
- "name": "spendLimit",
44
- "type": "tuple[]"
45
- },
46
- {
47
- "internalType": "string[]",
48
- "name": "allowList",
49
- "type": "string[]"
50
- },
51
- {
52
- "internalType": "string[]",
53
- "name": "allowedPacketData",
54
- "type": "string[]"
55
- }
56
- ],
57
- "internalType": "struct ICS20Allocation[]",
58
- "name": "allocations",
59
- "type": "tuple[]"
60
- }
61
- ],
62
- "stateMutability": "view",
63
- "type": "function"
64
- },
65
- {
66
- "inputs": [
67
- {
68
- "internalType": "address",
69
- "name": "grantee",
70
- "type": "address"
71
- },
72
- {
73
- "components": [
74
- {
75
- "internalType": "string",
76
- "name": "sourcePort",
77
- "type": "string"
78
- },
79
- {
80
- "internalType": "string",
81
- "name": "sourceChannel",
82
- "type": "string"
83
- },
84
- {
85
- "components": [
86
- {
87
- "internalType": "string",
88
- "name": "denom",
89
- "type": "string"
90
- },
91
- {
92
- "internalType": "uint256",
93
- "name": "amount",
94
- "type": "uint256"
95
- }
96
- ],
97
- "internalType": "struct Coin[]",
98
- "name": "spendLimit",
99
- "type": "tuple[]"
100
- },
101
- {
102
- "internalType": "string[]",
103
- "name": "allowList",
104
- "type": "string[]"
105
- },
106
- {
107
- "internalType": "string[]",
108
- "name": "allowedPacketData",
109
- "type": "string[]"
110
- }
111
- ],
112
- "internalType": "struct ICS20Allocation[]",
113
- "name": "allocations",
114
- "type": "tuple[]"
115
- }
116
- ],
117
- "name": "approve",
118
- "outputs": [
119
- {
120
- "internalType": "bool",
121
- "name": "approved",
122
- "type": "bool"
123
- }
124
- ],
125
- "stateMutability": "nonpayable",
126
- "type": "function"
127
- }
128
- ]
@@ -1,22 +0,0 @@
1
- class BitcoinConnectorError extends Error {
2
- constructor(message) {
3
- super(message);
4
- this.name = "BitcoinConnectorError";
5
- }
6
- }
7
- export class BitcoinConnectorProviderNotFoundError extends BitcoinConnectorError {
8
- constructor(providerName) {
9
- super(`Bitcoin provider ${providerName} not found`);
10
- }
11
- }
12
- export class BitcoinConnectorTransactionFailedError extends BitcoinConnectorError {
13
- constructor() {
14
- super("Bitcoin transaction failed");
15
- }
16
- }
17
- export class BitcoinConnectorInvalidAccountError extends BitcoinConnectorError {
18
- constructor() {
19
- super("Bitcoin account is invalid");
20
- }
21
- }
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/connectors/bitcoin/errors/index.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAsB,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,qCAAsC,SAAQ,qBAAqB;IAC9E,YAAY,YAAoB;QAC9B,KAAK,CAAC,oBAAoB,YAAY,YAAY,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,OAAO,sCAAuC,SAAQ,qBAAqB;IAC/E;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,mCAAoC,SAAQ,qBAAqB;IAC5E;QACE,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -1,86 +0,0 @@
1
- import * as ecc from "@bitcoinerlab/secp256k1";
2
- import axios from "axios";
3
- import * as bitcoin from "bitcoinjs-lib";
4
- bitcoin.initEccLib(ecc);
5
- const network = bitcoin.networks.bitcoin;
6
- export const fromHexString = (hexString) => {
7
- const matches = hexString.match(/.{1,2}/g);
8
- if (!matches) {
9
- throw new Error("Invalid hex string");
10
- }
11
- return Uint8Array.from(matches.map((byte) => parseInt(byte, 16)));
12
- };
13
- export async function createSendBtcPsbt(senderAddress, recipientAddress, amount) {
14
- const feeRate = await getFeeRate();
15
- const utxos = await getAddressUtxos(senderAddress);
16
- if (!utxos) {
17
- throw new Error("No UTXOs found");
18
- }
19
- // Sort UTXOs by value in descending order
20
- // This ensures that we select the UTXOs with the highest value first
21
- // to optimize the transaction size
22
- const sortedUtxos = utxos.sort((a, b) => b.value - a.value);
23
- // Sum up the values of the UTXOs up to the desired amount
24
- let inputAmount = 0;
25
- const inputs = [];
26
- for (const utxo of sortedUtxos) {
27
- inputAmount += utxo.value;
28
- inputs.push(utxo);
29
- if (inputAmount >= amount)
30
- break;
31
- }
32
- if (inputAmount < amount)
33
- throw new Error("Insufficient balance");
34
- const outputsCount = 2; // Only two outputs, recipient and change outputs
35
- // Calculate fee based on the byte size of the total inputs and outputs
36
- // Approximate transaction size = (inputs * 150 bytes + outputs * 34 bytes + 10 bytes overhead)
37
- const transactionSize = inputs.length * 150 + outputsCount * 34 + 10;
38
- const fee = feeRate * transactionSize;
39
- const satsNeeded = fee + amount;
40
- const psbt = new bitcoin.Psbt({ network });
41
- let amountGathered = 0;
42
- for (const utxo of sortedUtxos) {
43
- const { txid, vout, value } = utxo;
44
- const script = bitcoin.address.toOutputScript(senderAddress, network);
45
- psbt.addInput({
46
- hash: txid,
47
- index: vout,
48
- witnessUtxo: {
49
- script,
50
- value: BigInt(value),
51
- },
52
- });
53
- amountGathered += value;
54
- if (amountGathered >= satsNeeded) {
55
- break;
56
- }
57
- }
58
- psbt.addOutput({
59
- address: recipientAddress,
60
- value: BigInt(amount),
61
- });
62
- if (amountGathered > satsNeeded) {
63
- psbt.addOutput({
64
- address: senderAddress,
65
- value: BigInt(amountGathered - satsNeeded),
66
- });
67
- }
68
- return {
69
- psbtHex: psbt.toHex(),
70
- };
71
- }
72
- export async function broadcastTx(txHex) {
73
- return axios
74
- .post(`https://mempool.space/api/tx`, txHex)
75
- .then((res) => res.data);
76
- }
77
- async function getAddressUtxos(address) {
78
- return axios
79
- .get(`https://mempool.space/api/address/${address}/utxo`)
80
- .then((response) => response.data);
81
- }
82
- async function getFeeRate() {
83
- const response = await axios.get("https://mempool.space/api/v1/fees/recommended");
84
- return response.data.halfHourFee;
85
- }
86
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/core/connectors/bitcoin/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from "./wallets";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/connectors/bitcoin/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -1,4 +0,0 @@
1
- export { KeplrConnector } from "./keplr";
2
- export { PhantomConnector } from "./phantom";
3
- export { UnisatConnector } from "./unisat";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/connectors/bitcoin/wallets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
@@ -1,28 +0,0 @@
1
- import { BitcoinConnectorInvalidAccountError, BitcoinConnectorProviderNotFoundError, BitcoinConnectorTransactionFailedError, } from "../errors";
2
- export class KeplrConnector {
3
- get getProvider() {
4
- const provider = window?.bitcoin_keplr;
5
- if (!provider) {
6
- throw new BitcoinConnectorProviderNotFoundError("Keplr");
7
- }
8
- return provider;
9
- }
10
- async sendBTC(to, amount) {
11
- const txHash = await this.getProvider.sendBitcoin(to, amount);
12
- if (!txHash) {
13
- throw new BitcoinConnectorTransactionFailedError();
14
- }
15
- return { txHash };
16
- }
17
- async requestAccount() {
18
- const accounts = await this.getProvider.requestAccounts();
19
- const account = accounts[0];
20
- if (typeof account !== "string") {
21
- throw new BitcoinConnectorInvalidAccountError();
22
- }
23
- return {
24
- address: account,
25
- };
26
- }
27
- }
28
- //# sourceMappingURL=keplr.js.map