@berachain/berajs 0.1.2 → 0.2.1

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 (448) hide show
  1. package/dist/{BeraError-D1HS_rbb.d.cts → BeraError-_mQdkanr.d.cts} +35 -10
  2. package/dist/{BeraError-D1HS_rbb.d.ts → BeraError-_mQdkanr.d.ts} +35 -10
  3. package/dist/HoneyConfigProvider-CK6mOKFH.d.ts +390 -0
  4. package/dist/HoneyConfigProvider-Ca3ouozs.d.cts +390 -0
  5. package/dist/{RequestError-D8AE6xnI.d.cts → RequestError-A8XJ6QR9.d.cts} +1 -1
  6. package/dist/{RequestError-m4jxyM7D.d.ts → RequestError-Dk97z8rm.d.ts} +1 -1
  7. package/dist/abi/exports.cjs +2 -0
  8. package/dist/abi/exports.cjs.map +1 -0
  9. package/dist/abi/{index.d.cts → exports.d.cts} +12369 -9122
  10. package/dist/abi/{index.d.ts → exports.d.ts} +12369 -9122
  11. package/dist/abi/exports.mjs +2 -0
  12. package/dist/abi/exports.mjs.map +1 -0
  13. package/dist/actions/exports.cjs +2 -0
  14. package/dist/actions/exports.cjs.map +1 -0
  15. package/dist/actions/{index.d.cts → exports.d.cts} +79 -107
  16. package/dist/actions/{index.d.ts → exports.d.ts} +79 -107
  17. package/dist/actions/exports.mjs +2 -0
  18. package/dist/actions/exports.mjs.map +1 -0
  19. package/dist/chunk-22J3YJDN.cjs +2 -0
  20. package/dist/chunk-22J3YJDN.cjs.map +1 -0
  21. package/dist/chunk-2LL3P5PN.mjs +2 -0
  22. package/dist/chunk-2LL3P5PN.mjs.map +1 -0
  23. package/dist/chunk-3YXSUBA5.mjs +2 -0
  24. package/dist/chunk-3YXSUBA5.mjs.map +1 -0
  25. package/dist/chunk-55L7STYD.mjs +2 -0
  26. package/dist/chunk-55L7STYD.mjs.map +1 -0
  27. package/dist/chunk-575OK77P.mjs +2 -0
  28. package/dist/chunk-575OK77P.mjs.map +1 -0
  29. package/dist/chunk-6LDOG5RL.cjs +2 -0
  30. package/dist/chunk-6LDOG5RL.cjs.map +1 -0
  31. package/dist/chunk-7LNBSOVV.cjs +2 -0
  32. package/dist/chunk-7LNBSOVV.cjs.map +1 -0
  33. package/dist/chunk-7SMWQ6SN.mjs +2 -0
  34. package/dist/chunk-7SMWQ6SN.mjs.map +1 -0
  35. package/dist/chunk-7WRTK7RJ.mjs +2 -0
  36. package/dist/chunk-7WRTK7RJ.mjs.map +1 -0
  37. package/dist/chunk-A4UDYSB6.mjs +4 -0
  38. package/dist/chunk-A4UDYSB6.mjs.map +1 -0
  39. package/dist/chunk-AX2YQQFQ.mjs +2 -0
  40. package/dist/chunk-AX2YQQFQ.mjs.map +1 -0
  41. package/dist/chunk-C3FHGFLK.mjs +2 -0
  42. package/dist/chunk-C3FHGFLK.mjs.map +1 -0
  43. package/dist/chunk-C6ZGUO4H.cjs +2 -0
  44. package/dist/chunk-C6ZGUO4H.cjs.map +1 -0
  45. package/dist/chunk-CYKCYPFR.cjs +2 -0
  46. package/dist/chunk-CYKCYPFR.cjs.map +1 -0
  47. package/dist/chunk-ECRMUMTA.mjs +2 -0
  48. package/dist/chunk-ECRMUMTA.mjs.map +1 -0
  49. package/dist/chunk-F4BKSBEM.mjs +2 -0
  50. package/dist/chunk-F4BKSBEM.mjs.map +1 -0
  51. package/dist/chunk-FCWDGE62.cjs +2 -0
  52. package/dist/chunk-FCWDGE62.cjs.map +1 -0
  53. package/dist/chunk-FL2N3XHK.cjs +2 -0
  54. package/dist/chunk-FL2N3XHK.cjs.map +1 -0
  55. package/dist/chunk-MUCEYO3E.cjs +4 -0
  56. package/dist/chunk-MUCEYO3E.cjs.map +1 -0
  57. package/dist/chunk-NAXAZJJY.mjs +2 -0
  58. package/dist/chunk-NAXAZJJY.mjs.map +1 -0
  59. package/dist/chunk-OGJMSGB2.mjs +2 -0
  60. package/dist/chunk-OGJMSGB2.mjs.map +1 -0
  61. package/dist/chunk-OIYXOKTT.cjs +2 -0
  62. package/dist/chunk-OIYXOKTT.cjs.map +1 -0
  63. package/dist/chunk-P2Q7CMUD.cjs +2 -0
  64. package/dist/chunk-P2Q7CMUD.cjs.map +1 -0
  65. package/dist/chunk-PKXAW6MO.cjs +2 -0
  66. package/dist/chunk-PKXAW6MO.cjs.map +1 -0
  67. package/dist/chunk-Q3SCM6WL.mjs +2 -0
  68. package/dist/chunk-Q3SCM6WL.mjs.map +1 -0
  69. package/dist/chunk-SWMJQOH6.cjs +2 -0
  70. package/dist/chunk-SWMJQOH6.cjs.map +1 -0
  71. package/dist/chunk-TEBJWAVU.mjs +2 -0
  72. package/dist/chunk-TEBJWAVU.mjs.map +1 -0
  73. package/dist/chunk-THATXCJK.mjs +2 -0
  74. package/dist/chunk-THATXCJK.mjs.map +1 -0
  75. package/dist/chunk-VP7XUOSI.cjs +2 -0
  76. package/dist/chunk-VP7XUOSI.cjs.map +1 -0
  77. package/dist/chunk-VXL2ZZ4X.cjs +2 -0
  78. package/dist/chunk-VXL2ZZ4X.cjs.map +1 -0
  79. package/dist/chunk-WRFDB3QJ.cjs +2 -0
  80. package/dist/chunk-WRFDB3QJ.cjs.map +1 -0
  81. package/dist/chunk-XNJLSA6P.cjs +2 -0
  82. package/dist/chunk-XNJLSA6P.cjs.map +1 -0
  83. package/dist/chunk-YXLFOEZN.mjs +2 -0
  84. package/dist/chunk-YXLFOEZN.mjs.map +1 -0
  85. package/dist/chunk-YZV5LKIP.cjs +2 -0
  86. package/dist/chunk-YZV5LKIP.cjs.map +1 -0
  87. package/dist/contexts/exports.cjs +2 -0
  88. package/dist/contexts/exports.cjs.map +1 -0
  89. package/dist/contexts/{index.d.cts → exports.d.cts} +10 -27
  90. package/dist/contexts/{index.d.ts → exports.d.ts} +10 -27
  91. package/dist/contexts/exports.mjs +2 -0
  92. package/dist/contexts/exports.mjs.map +1 -0
  93. package/dist/{defaultFlags-V-tJs2K8.d.cts → defaultFlags-d0kPbT0i.d.cts} +1 -1
  94. package/dist/{defaultFlags-V-tJs2K8.d.ts → defaultFlags-d0kPbT0i.d.ts} +1 -1
  95. package/dist/dex-C_BB0b0O.d.cts +37 -0
  96. package/dist/dex-C_BB0b0O.d.ts +37 -0
  97. package/dist/enum/exports.cjs +2 -0
  98. package/dist/enum/exports.cjs.map +1 -0
  99. package/dist/enum/exports.d.cts +23 -0
  100. package/dist/enum/exports.d.ts +23 -0
  101. package/dist/enum/exports.mjs +2 -0
  102. package/dist/enum/exports.mjs.map +1 -0
  103. package/dist/errors/exports.cjs +2 -0
  104. package/dist/errors/exports.cjs.map +1 -0
  105. package/dist/errors/exports.d.cts +408 -0
  106. package/dist/errors/exports.d.ts +408 -0
  107. package/dist/errors/exports.mjs +2 -0
  108. package/dist/{getValidatorQueuedOperatorAddress-Ne2zoiiV.d.ts → getValidatorQueuedOperatorAddress-Dstyaomr.d.cts} +125 -15
  109. package/dist/{getValidatorQueuedOperatorAddress-9xY2RUGe.d.cts → getValidatorQueuedOperatorAddress-RW4OMcD1.d.ts} +125 -15
  110. package/dist/global.d-CN6l2b9E.d.cts +473 -0
  111. package/dist/global.d-wYu8G8IQ.d.ts +473 -0
  112. package/dist/honey-CYm0RWf4.d.cts +14 -0
  113. package/dist/honey-CYm0RWf4.d.ts +14 -0
  114. package/dist/hooks/exports.cjs +4 -0
  115. package/dist/hooks/exports.cjs.map +1 -0
  116. package/dist/hooks/{index.d.cts → exports.d.cts} +218 -176
  117. package/dist/hooks/{index.d.ts → exports.d.ts} +218 -176
  118. package/dist/hooks/exports.mjs +4 -0
  119. package/dist/hooks/exports.mjs.map +1 -0
  120. package/dist/{txnEnum-BQKDfaeH.d.cts → txnEnum-BlBYhNRl.d.cts} +75 -1
  121. package/dist/{txnEnum-BQKDfaeH.d.ts → txnEnum-BlBYhNRl.d.ts} +75 -1
  122. package/dist/types/exports.cjs +1 -0
  123. package/dist/types/exports.cjs.map +1 -0
  124. package/dist/types/exports.d.cts +57 -0
  125. package/dist/types/exports.d.ts +57 -0
  126. package/dist/types/exports.mjs +1 -0
  127. package/dist/{useHoneySwapState-C-9BV4VB.d.cts → useHoneySwapState-B-vmIP1b.d.cts} +1 -1
  128. package/dist/{useHoneySwapState-CUY5Sm1b.d.ts → useHoneySwapState-D1DKG_Of.d.ts} +1 -1
  129. package/dist/utils/exports.cjs +2 -0
  130. package/dist/utils/exports.cjs.map +1 -0
  131. package/dist/utils/{index.d.cts → exports.d.cts} +83 -20
  132. package/dist/utils/{index.d.ts → exports.d.ts} +83 -20
  133. package/dist/utils/exports.mjs +2 -0
  134. package/dist/utils/exports.mjs.map +1 -0
  135. package/package.json +19 -20
  136. package/src/abi/{index.ts → exports.ts} +3 -0
  137. package/src/abi/pol/LSTStakerVault.ts +2032 -0
  138. package/src/abi/utils/openChainErrors.ts +71 -30
  139. package/src/abi/utils/thirdwebMinimalAccount.ts +616 -0
  140. package/src/actions/clients/BeraApolloClient.ts +8 -6
  141. package/src/actions/dex/__tests__/aggregators.unit.test.ts +2 -5
  142. package/src/actions/dex/aggregators/base.ts +74 -16
  143. package/src/actions/dex/aggregators/bex.ts +54 -74
  144. package/src/actions/dex/aggregators/bgt.ts +31 -8
  145. package/src/actions/dex/aggregators/{enso.ts → enso/enso.ts} +18 -14
  146. package/src/actions/dex/aggregators/enso/ensoErc4626.debug.test.ts +37 -0
  147. package/src/actions/dex/aggregators/enso/ensoErc4626.ts +176 -0
  148. package/src/actions/dex/aggregators/erc4626.ts +122 -0
  149. package/src/actions/dex/aggregators/fly.ts +59 -53
  150. package/src/actions/dex/aggregators/haiku.ts +52 -54
  151. package/src/actions/dex/aggregators/honey.ts +54 -45
  152. package/src/actions/dex/aggregators/kyberswap.ts +41 -39
  153. package/src/actions/dex/aggregators/oogabooga.ts +47 -46
  154. package/src/actions/dex/aggregators/openOcean.ts +51 -46
  155. package/src/actions/dex/aggregators/wbera.ts +54 -42
  156. package/src/actions/dex/b-sdk.ts +5 -2
  157. package/src/actions/dex/getIsTokenExploited.ts +2 -2
  158. package/src/actions/enso/{zap.ts → getEnsoSwapBundle.ts} +4 -5
  159. package/src/actions/enso/getEnsoUserTokensWithBalances.debug.test.ts +73 -0
  160. package/src/actions/enso/{getEnsoUserToken.ts → getEnsoUserTokensWithBalances.ts} +42 -30
  161. package/src/actions/enso/util.ts +1 -1
  162. package/src/actions/{index.ts → exports.ts} +5 -0
  163. package/src/actions/governance/__tests__/checkProposalField.unit.test.ts +1 -1
  164. package/src/actions/governance/__tests__/getQuorum.integration.test.ts +1 -1
  165. package/src/actions/governance/checkProposalField.ts +1 -1
  166. package/src/actions/governance/computeActualStatus.ts +1 -1
  167. package/src/actions/governance/getBodyErrors.ts +1 -1
  168. package/src/actions/governance/getDecodedFunctionData.ts +1 -4
  169. package/src/actions/governance/getProposalDetails.ts +2 -2
  170. package/src/actions/governance/getProposalFromTx.ts +1 -2
  171. package/src/actions/governance/getProposalParams.ts +7 -8
  172. package/src/actions/governance/getQuorum.ts +1 -2
  173. package/src/actions/honey/getCollateralWeights.ts +1 -1
  174. package/src/actions/honey/getHoneyCollaterals.ts +1 -0
  175. package/src/actions/honey/getHoneyVaultsBalance.ts +51 -55
  176. package/src/actions/honey/getSwapPayload.ts +37 -35
  177. package/src/actions/honey/tests/pyth.integration.test.ts +0 -1
  178. package/src/actions/pol/__tests__/getAllValidators.integration.test.ts +1 -1
  179. package/src/actions/pol/getEarnedStakedBeraVault.ts +31 -0
  180. package/src/actions/pol/getGlobalData.ts +14 -13
  181. package/src/actions/pol/getLSTStakeConfig.ts +67 -0
  182. package/src/actions/pol/getMarkets.ts +1 -1
  183. package/src/actions/pol/getRewardProofsByValidator.ts +1 -1
  184. package/src/actions/pol/getRewardVaultIncentives.ts +3 -5
  185. package/src/actions/pol/getRewardVaults.ts +2 -3
  186. package/src/actions/pol/getSWBeraVaultMetadata.ts +7 -5
  187. package/src/actions/pol/getSWBeraWithdrawal.ts +41 -27
  188. package/src/actions/pol/getStakeWithdrawalCooldown.ts +5 -7
  189. package/src/actions/pol/getStakingDailyAssets.ts +24 -0
  190. package/src/actions/pol/getStakingTokenInformation.ts +3 -4
  191. package/src/actions/pol/getTotalStakedAmount.ts +47 -0
  192. package/src/actions/pol/getUserClaimableIncentives.ts +1 -1
  193. package/src/actions/pol/getUserVaults.ts +8 -6
  194. package/src/actions/pol/getUserVaultsBalance.ts +4 -16
  195. package/src/actions/prices/getTokenCurrentPrices.ts +8 -3
  196. package/src/actions/tokens/getAllowances.ts +68 -41
  197. package/src/actions/tokens/getTokenInformation.ts +4 -1
  198. package/src/actions/tokens/getTokens.ts +1 -1
  199. package/src/actions/tokens/getUnderlyingToken.ts +53 -0
  200. package/src/actions/tokens/getWalletBalances.integration.test.ts +53 -14
  201. package/src/actions/tokens/getWalletBalances.ts +69 -43
  202. package/src/actions/transactions/beraWriteContract.integration.test.ts +18 -6
  203. package/src/actions/transactions/beraWriteContract.ts +3 -3
  204. package/src/actions/validators/getUserActiveValidators.ts +2 -3
  205. package/src/actions/validators/getUserBoostsOnValidator.ts +2 -3
  206. package/src/contexts/BeraFlags/defaultFlags.ts +4 -0
  207. package/src/contexts/SwrFallback.tsx +13 -3
  208. package/src/contexts/TokensProvider.tsx +35 -8
  209. package/src/contexts/block-time-provider.tsx +1 -1
  210. package/src/contexts/{index.ts → exports.ts} +0 -1
  211. package/src/data/contracts.ts +17 -2
  212. package/src/enum/contracts.ts +13 -0
  213. package/src/enum/dex.ts +29 -0
  214. package/src/enum/{index.ts → exports.ts} +3 -0
  215. package/src/enum/governance.ts +61 -0
  216. package/src/enum/honey.ts +12 -0
  217. package/src/enum/txnEnum.ts +1 -0
  218. package/src/errors/BeraError.ts +61 -13
  219. package/src/errors/BeraMonitoring.ts +66 -0
  220. package/src/errors/BeraTracing.ts +79 -0
  221. package/src/errors/BeraTracing.unit.test.ts +198 -0
  222. package/src/errors/RequestError.ts +29 -3
  223. package/src/errors/assert.ts +4 -2
  224. package/src/errors/assert.unit.test.ts +6 -2
  225. package/src/errors/errorMap.ts +19 -8
  226. package/src/errors/{index.ts → exports.ts} +7 -0
  227. package/src/errors/getErrorMessage.ts +67 -9
  228. package/src/errors/getRevertReason.integration.test.ts +18 -6
  229. package/src/errors/getRevertReason.ts +41 -2
  230. package/src/errors/initBeraError.ts +52 -7
  231. package/src/errors/parseViemError.ts +114 -27
  232. package/src/errors/severity.ts +12 -0
  233. package/src/hooks/bend/useGetConvertToAssets.ts +3 -2
  234. package/src/hooks/dex/useAggregatorsQuotes.ts +126 -365
  235. package/src/hooks/dex/useAllUserPools.ts +1 -1
  236. package/src/hooks/dex/useApiPool.ts +1 -1
  237. package/src/hooks/dex/useCreatePool.ts +6 -5
  238. package/src/hooks/dex/useExploitedTokens.ts +1 -1
  239. package/src/hooks/dex/useLiquidityMismatch.ts +2 -5
  240. package/src/hooks/dex/useLpPosition.ts +21 -20
  241. package/src/hooks/dex/useMultipleTokenApprovalsWithSlippage.ts +40 -29
  242. package/src/hooks/dex/usePollPoolCreationRelayerApproval.ts +1 -1
  243. package/src/hooks/dex/usePoolEvents.ts +1 -1
  244. package/src/hooks/dex/usePools.ts +1 -1
  245. package/src/hooks/dex/usePriceImpact.ts +40 -0
  246. package/src/hooks/dex/useSingleAggregatorQuote.ts +350 -0
  247. package/src/hooks/enso/useBendZapSupply.ts +216 -0
  248. package/src/hooks/enso/useEnsoSwapBundle.ts +107 -0
  249. package/src/hooks/enso/useEnsoUserTokensWithBalances.ts +43 -0
  250. package/src/hooks/enso/useZapStakeBera.ts +113 -0
  251. package/src/hooks/{index.ts → exports.ts} +17 -10
  252. package/src/hooks/governance/useCreateProposal.ts +8 -8
  253. package/src/hooks/governance/usePollAllProposals.ts +1 -1
  254. package/src/hooks/governance/usePollProposal.ts +1 -1
  255. package/src/hooks/governance/usePollProposalThreshold.ts +1 -1
  256. package/src/hooks/governance/usePollUserDelegates.ts +1 -1
  257. package/src/hooks/governance/useProposalState.ts +2 -2
  258. package/src/hooks/honey/useCappedGlobally.ts +2 -1
  259. package/src/hooks/honey/useCappedRelatively.ts +1 -1
  260. package/src/hooks/honey/useCollateralWeights.ts +2 -1
  261. package/src/hooks/honey/useHoneyAlerts.ts +11 -11
  262. package/src/hooks/honey/useHoneyBalances.ts +7 -3
  263. package/src/hooks/honey/useHoneyGlobalData.ts +2 -1
  264. package/src/hooks/honey/useHoneySwapState.ts +2 -1
  265. package/src/hooks/honey/useHoneyVaultsBalance.ts +1 -1
  266. package/src/hooks/honey/useIsBadCollateralAsset.ts +2 -1
  267. package/src/hooks/honey/useIsBasketModeEnabled.ts +1 -1
  268. package/src/hooks/honey/usePythLatestPrices.ts +1 -1
  269. package/src/hooks/pol/useOnChainRewardVault.ts +3 -2
  270. package/src/hooks/pol/usePollGlobalData.ts +1 -1
  271. package/src/hooks/pol/usePollMarkets.ts +1 -1
  272. package/src/hooks/pol/useQueuedBeraUnlock.ts +17 -15
  273. package/src/hooks/pol/useRewardTokenToBeraRate.ts +6 -3
  274. package/src/hooks/pol/useRewardVault.ts +1 -1
  275. package/src/hooks/pol/useRewardVaults.ts +1 -1
  276. package/src/hooks/pol/useSWBeraVaultMetadata.ts +35 -0
  277. package/src/hooks/pol/useStakedAPR.ts +38 -0
  278. package/src/hooks/pol/useStakedData.ts +117 -0
  279. package/src/hooks/pol/useStakedSnapshots.ts +52 -0
  280. package/src/hooks/pol/useTotalStakedAmount.ts +30 -0
  281. package/src/hooks/pol/useUserVaultInfo.ts +1 -1
  282. package/src/hooks/pol/useVaultValidators.ts +1 -1
  283. package/src/hooks/tokens/useMultipleTokenInformation.ts +15 -6
  284. package/src/hooks/tokens/usePollAllowances.ts +15 -19
  285. package/src/hooks/tokens/usePollBalance.ts +8 -4
  286. package/src/hooks/tokens/usePollWalletBalances.ts +14 -11
  287. package/src/hooks/tokens/useStakingTokenInformation.ts +2 -1
  288. package/src/hooks/tokens/useTokenCurrentPrice.ts +4 -2
  289. package/src/hooks/tokens/useTokenCurrentPrices.ts +92 -13
  290. package/src/hooks/tokens/useTokenInformation.ts +11 -6
  291. package/src/hooks/tokens/useTokenPrice.ts +21 -0
  292. package/src/hooks/tokens/useTokenPrices.ts +133 -0
  293. package/src/hooks/tokens/useTokens.ts +1 -0
  294. package/src/hooks/tokens/useUnderlyingAsset.ts +23 -0
  295. package/src/hooks/useContractWrite/useBeraContractWrite.ts +2 -1
  296. package/src/hooks/validators/useAllValidators.ts +1 -1
  297. package/src/hooks/validators/useApiValidator.ts +1 -1
  298. package/src/hooks/validators/useDailyValidatorBlockStats.ts +1 -1
  299. package/src/hooks/validators/useManagedValidatorByAccount.ts +1 -1
  300. package/src/hooks/validators/useManagedValidatorRole.ts +1 -1
  301. package/src/hooks/validators/useOnChainValidator.ts +1 -1
  302. package/src/hooks/validators/useStakingPoolBatch.ts +1 -1
  303. package/src/hooks/validators/useUserActiveValidators.ts +1 -1
  304. package/src/hooks/validators/useUserBoostsOnValidator.ts +1 -1
  305. package/src/hooks/validators/useUserClaimableIncentives.ts +8 -8
  306. package/src/hooks/validators/useValidator.ts +1 -1
  307. package/src/hooks/validators/useValidatorAnalytics.ts +1 -1
  308. package/src/hooks/validators/useValidatorCommission.ts +1 -1
  309. package/src/hooks/validators/useValidatorQueuedCommission.ts +1 -1
  310. package/src/hooks/validators/useValidatorQueuedOperatorAddress.ts +1 -1
  311. package/src/hooks/validators/useValidatorQueuedRewardAllocation.ts +1 -1
  312. package/src/hooks/validators/useValidatorRewardAllocation.ts +1 -1
  313. package/src/types/{dex.ts → dex.d.ts} +96 -67
  314. package/src/types/{enso.ts → enso.d.ts} +1 -1
  315. package/src/types/exports.ts +8 -0
  316. package/src/types/{global.ts → global.d.ts} +1 -30
  317. package/src/types/{governance.ts → governance.d.ts} +2 -64
  318. package/src/types/{honeySwap.ts → honeySwap.d.ts} +1 -13
  319. package/src/types/{pol.ts → pol.d.ts} +12 -1
  320. package/src/types/staking.d.ts +22 -0
  321. package/src/utils/createEmitter.ts +122 -0
  322. package/src/utils/createEmitter.unit.test.ts +149 -0
  323. package/src/utils/{index.ts → exports.ts} +3 -2
  324. package/src/utils/filter.ts +34 -0
  325. package/src/utils/formatNumber.ts +1 -1
  326. package/src/utils/formatNumber.unit.test.ts +2 -1
  327. package/src/utils/formatTokenList.ts +4 -10
  328. package/src/utils/getHoneySwapMessage.test.ts +1 -2
  329. package/src/utils/getServerSideClient.ts +4 -5
  330. package/src/utils/isDifferenceExceedingThreshold.ts +1 -1
  331. package/src/utils/layerZeroScan.ts +122 -0
  332. package/src/utils/math.ts +1 -1
  333. package/src/utils/parseWhiskToken.ts +15 -0
  334. package/src/utils/poolNamings.ts +1 -1
  335. package/src/utils/tokens.ts +23 -7
  336. package/dist/HoneyConfigProvider-6PXZJMSU.d.cts +0 -562
  337. package/dist/HoneyConfigProvider-CwDFrt02.d.ts +0 -562
  338. package/dist/abi/index.cjs +0 -2
  339. package/dist/abi/index.cjs.map +0 -1
  340. package/dist/abi/index.mjs +0 -2
  341. package/dist/actions/index.cjs +0 -2
  342. package/dist/actions/index.cjs.map +0 -1
  343. package/dist/actions/index.mjs +0 -2
  344. package/dist/aggregatorsRouter-Cny4B_MB.d.cts +0 -593
  345. package/dist/aggregatorsRouter-Cny4B_MB.d.ts +0 -593
  346. package/dist/chunk-22MQVFHP.cjs +0 -2
  347. package/dist/chunk-22MQVFHP.cjs.map +0 -1
  348. package/dist/chunk-3TKSVFZ3.mjs +0 -2
  349. package/dist/chunk-3TKSVFZ3.mjs.map +0 -1
  350. package/dist/chunk-6VF3RF53.cjs +0 -3
  351. package/dist/chunk-6VF3RF53.cjs.map +0 -1
  352. package/dist/chunk-6W22TFYA.mjs +0 -2
  353. package/dist/chunk-6W22TFYA.mjs.map +0 -1
  354. package/dist/chunk-AMRJ4B36.mjs +0 -2
  355. package/dist/chunk-AMRJ4B36.mjs.map +0 -1
  356. package/dist/chunk-DS2ZDVKU.mjs +0 -2
  357. package/dist/chunk-DS2ZDVKU.mjs.map +0 -1
  358. package/dist/chunk-ED43NYSE.cjs +0 -2
  359. package/dist/chunk-ED43NYSE.cjs.map +0 -1
  360. package/dist/chunk-EU4WFADK.cjs +0 -2
  361. package/dist/chunk-EU4WFADK.cjs.map +0 -1
  362. package/dist/chunk-HCTFDGXL.mjs +0 -2
  363. package/dist/chunk-HCTFDGXL.mjs.map +0 -1
  364. package/dist/chunk-IOSYBHKU.mjs +0 -2
  365. package/dist/chunk-IOSYBHKU.mjs.map +0 -1
  366. package/dist/chunk-JMKLDDKY.cjs +0 -2
  367. package/dist/chunk-JMKLDDKY.cjs.map +0 -1
  368. package/dist/chunk-KMKUXP2S.mjs +0 -3
  369. package/dist/chunk-KMKUXP2S.mjs.map +0 -1
  370. package/dist/chunk-OJXJ6CZ4.mjs +0 -4
  371. package/dist/chunk-OJXJ6CZ4.mjs.map +0 -1
  372. package/dist/chunk-PHIOKO3A.mjs +0 -2
  373. package/dist/chunk-PHIOKO3A.mjs.map +0 -1
  374. package/dist/chunk-QCK474XD.cjs +0 -2
  375. package/dist/chunk-QCK474XD.cjs.map +0 -1
  376. package/dist/chunk-REDXXUK7.cjs +0 -2
  377. package/dist/chunk-REDXXUK7.cjs.map +0 -1
  378. package/dist/chunk-S74ZMG2G.cjs +0 -2
  379. package/dist/chunk-S74ZMG2G.cjs.map +0 -1
  380. package/dist/chunk-TOAXF4YW.cjs +0 -2
  381. package/dist/chunk-TOAXF4YW.cjs.map +0 -1
  382. package/dist/chunk-UZ5CB33M.cjs +0 -2
  383. package/dist/chunk-UZ5CB33M.cjs.map +0 -1
  384. package/dist/chunk-VYWYJR63.mjs +0 -2
  385. package/dist/chunk-VYWYJR63.mjs.map +0 -1
  386. package/dist/chunk-XFPTQMAK.cjs +0 -4
  387. package/dist/chunk-XFPTQMAK.cjs.map +0 -1
  388. package/dist/chunk-YK4NINF5.mjs +0 -2
  389. package/dist/chunk-YK4NINF5.mjs.map +0 -1
  390. package/dist/contexts/index.cjs +0 -2
  391. package/dist/contexts/index.cjs.map +0 -1
  392. package/dist/contexts/index.mjs +0 -2
  393. package/dist/contexts/index.mjs.map +0 -1
  394. package/dist/enum/index.cjs +0 -2
  395. package/dist/enum/index.cjs.map +0 -1
  396. package/dist/enum/index.d.cts +0 -31
  397. package/dist/enum/index.d.ts +0 -31
  398. package/dist/enum/index.mjs +0 -2
  399. package/dist/enum/index.mjs.map +0 -1
  400. package/dist/errors/index.cjs +0 -2
  401. package/dist/errors/index.cjs.map +0 -1
  402. package/dist/errors/index.d.cts +0 -204
  403. package/dist/errors/index.d.ts +0 -204
  404. package/dist/errors/index.mjs +0 -2
  405. package/dist/errors/index.mjs.map +0 -1
  406. package/dist/hooks/index.cjs +0 -4
  407. package/dist/hooks/index.cjs.map +0 -1
  408. package/dist/hooks/index.mjs +0 -4
  409. package/dist/hooks/index.mjs.map +0 -1
  410. package/dist/staking-F9Nx9TKD.d.ts +0 -246
  411. package/dist/staking-f4BpYH7l.d.cts +0 -246
  412. package/dist/types/index.cjs +0 -2
  413. package/dist/types/index.cjs.map +0 -1
  414. package/dist/types/index.d.cts +0 -56
  415. package/dist/types/index.d.ts +0 -56
  416. package/dist/types/index.mjs +0 -2
  417. package/dist/types/index.mjs.map +0 -1
  418. package/dist/utils/index.cjs +0 -2
  419. package/dist/utils/index.cjs.map +0 -1
  420. package/dist/utils/index.mjs +0 -2
  421. package/dist/utils/index.mjs.map +0 -1
  422. package/src/actions/dex/getTransactionCount.ts +0 -29
  423. package/src/actions/enso/bend.ts +0 -143
  424. package/src/actions/enso/getEnsoUserToken.debug.test.ts +0 -57
  425. package/src/contexts/berajsProvider/context.tsx +0 -49
  426. package/src/contexts/berajsProvider/index.ts +0 -2
  427. package/src/contexts/berajsProvider/useBeraJs.ts +0 -18
  428. package/src/hooks/dex/usePollVaultIsPaused.ts +0 -30
  429. package/src/hooks/enso/useBendTransactionRequests.ts +0 -247
  430. package/src/hooks/enso/useEnsoZap.ts +0 -166
  431. package/src/hooks/enso/useZapTransactionRequests.ts +0 -81
  432. package/src/hooks/pol/useEarnedStakedBeraVault.ts +0 -59
  433. package/src/hooks/pol/useStakedBeraSnapshots.ts +0 -27
  434. package/src/hooks/transactions/TransactionStoreContext.tsx +0 -59
  435. package/src/hooks/transactions/transactionStore.ts +0 -275
  436. package/src/hooks/transactions/transactionStore.unit.test.ts +0 -508
  437. package/src/hooks/transactions/useAddRecentTransaction.ts +0 -29
  438. package/src/hooks/transactions/useRecentTransactions.ts +0 -27
  439. package/src/hooks/validators/validatorRoleManager.ts +0 -0
  440. package/src/types/index.ts +0 -8
  441. package/src/types/staking.ts +0 -7
  442. package/src/utils/formatAggregatorsQuotes.ts +0 -57
  443. package/src/utils/formatAggregatorsQuotes.unit.test.ts +0 -191
  444. package/src/utils/sentryBeforeSend.ts +0 -52
  445. /package/dist/{abi/index.mjs.map → errors/exports.mjs.map} +0 -0
  446. /package/dist/{actions/index.mjs.map → types/exports.mjs.map} +0 -0
  447. /package/src/actions/dex/{__tests__ → aggregators}/haiku.integration.test.ts +0 -0
  448. /package/src/types/{bribe-boost.ts → bribe-boost.d.ts} +0 -0
@@ -1,81 +0,0 @@
1
- "use client";
2
-
3
- import useSWR from "swr";
4
-
5
- import { POLLING } from "~/enum/polling";
6
- import { assertAddress, assertAmount, assertDefined } from "~/errors/assert";
7
- import type {
8
- BalanceToken,
9
- BalanceTokenWithMetadata,
10
- GetZapTransactionResponse,
11
- } from "~/types";
12
- import { useEnsoZap } from "./useEnsoZap";
13
-
14
- /**
15
- * Get the zap transaction requests for swapping tokens using Enso.
16
- * @param {Pick<BalanceToken, "address" | "decimals">} tokenIn - The input token to swap from
17
- * @param {Pick<BalanceToken, "address" | "decimals">} tokenOut - The output token to swap to
18
- * @param {string} amount - The amount of input token to swap
19
- * @param {number} slippage - The slippage tolerance to use for the route in percentage
20
- * @returns {DefaultHookReturnType<GetZapTransactionResponse> & {tokens: BalanceTokenWithMetadata[], refresh: () => void}}
21
- *
22
- * The zap transaction response data with polling enabled, see {@link GetZapTransactionResponse} and {@link BalanceTokenWithMetadata}
23
- * @remarks The hook is only enabled when all parameters are provided and amount is greater than 0
24
- * @see {@link useEnsoZap}
25
- */
26
- export const useZapTransactionRequests = ({
27
- tokenIn,
28
- tokenOut,
29
- amount,
30
- slippage,
31
- chainId,
32
- }: {
33
- tokenIn?: Pick<BalanceToken, "address" | "decimals">;
34
- tokenOut?: Pick<BalanceToken, "address" | "decimals">;
35
- amount?: string;
36
- slippage?: number;
37
- chainId?: number;
38
- }) => {
39
- const { getZapTransactionRequests, refreshTokens, tokens } = useEnsoZap({
40
- chainId,
41
- });
42
- const isEnabled =
43
- !!tokenIn && !!tokenOut && !!amount && Number(amount) > 0 && !!slippage;
44
- const QUERY_KEY = isEnabled
45
- ? ([
46
- "useZapTransactionRequests",
47
- tokenIn,
48
- tokenOut,
49
- amount,
50
- slippage,
51
- ] as const)
52
- : null;
53
-
54
- const swrResponse = useSWR(
55
- QUERY_KEY,
56
- async ([, tokenIn, tokenOut, amount, slippage]) => {
57
- assertDefined(tokenIn, "tokenIn");
58
- assertAddress(tokenOut?.address, "tokenOutAddress");
59
- assertAmount(amount, "amount");
60
- assertAmount(slippage, "slippage");
61
- return getZapTransactionRequests({
62
- amount,
63
- tokenIn: tokenIn,
64
- tokenOut: tokenOut.address,
65
- slippage,
66
- });
67
- },
68
- {
69
- refreshInterval: POLLING.NORMAL,
70
- isEnabled: isEnabled,
71
- },
72
- );
73
- return {
74
- ...swrResponse,
75
- tokens,
76
- refresh: () => {
77
- swrResponse.mutate();
78
- refreshTokens();
79
- },
80
- };
81
- };
@@ -1,59 +0,0 @@
1
- import useSWR from "swr";
2
-
3
- import {
4
- GetStakeBeraVaultEarningsByOwner,
5
- type GetStakeBeraVaultEarningsByOwnerQuery,
6
- type GetStakeBeraVaultEarningsByOwnerQueryVariables,
7
- } from "@berachain/graphql/pol/api";
8
- import { useBeraWallet } from "@berachain/wagmi/hooks";
9
-
10
- import { getApolloClient } from "~/actions/clients/getApolloClient";
11
- import { POLLING } from "~/enum/polling";
12
- import type {
13
- DefaultHookOptions,
14
- DefaultHookReturnType,
15
- TokenWithMetadata,
16
- } from "~/types";
17
-
18
- type UseEarnedStakedBeraVaultArgs = {
19
- /**
20
- * The token that the user has staked
21
- */
22
- receiptToken: TokenWithMetadata;
23
- };
24
- export function useEarnedStakedBeraVault(
25
- { receiptToken }: UseEarnedStakedBeraVaultArgs,
26
- opt?: DefaultHookOptions,
27
- ): DefaultHookReturnType<string> {
28
- const { address: account } = useBeraWallet();
29
-
30
- const QUERY_KEY =
31
- receiptToken.address && account
32
- ? (["useEarnedStakedBeraVault", receiptToken.address, account] as const)
33
- : null;
34
-
35
- const swrResponse = useSWR(
36
- QUERY_KEY,
37
- async ([_, , account]) => {
38
- const bexApiGraphqlClient = getApolloClient("api", {});
39
- const response = await bexApiGraphqlClient.query<
40
- GetStakeBeraVaultEarningsByOwnerQuery,
41
- GetStakeBeraVaultEarningsByOwnerQueryVariables
42
- >({
43
- query: GetStakeBeraVaultEarningsByOwner,
44
- variables: {
45
- owner: account,
46
- },
47
- });
48
- return response.data?.polGetStakeBeraVaultEarningsByOwner?.earnings;
49
- },
50
- {
51
- refreshInterval: POLLING.SLOW,
52
- ...opt?.opts,
53
- },
54
- );
55
- return {
56
- ...swrResponse,
57
- refresh: swrResponse.mutate,
58
- };
59
- }
@@ -1,27 +0,0 @@
1
- import useSWR from "swr";
2
-
3
- import type { GetSWberaVaultSnapshotsQuery } from "@berachain/graphql/pol/api";
4
-
5
- import {
6
- type GetStakedBeraSnapshotsArgs,
7
- getStakedBeraSnapshots,
8
- } from "~/actions/pol/getStakedBeraSnapshots";
9
- import type { DefaultHookReturnType } from "~/types/global";
10
-
11
- export const useStakedBeraSnapshots = ({
12
- range,
13
- }: GetStakedBeraSnapshotsArgs): DefaultHookReturnType<
14
- GetSWberaVaultSnapshotsQuery["polGetSWberaVaultSnapshots"]
15
- > => {
16
- const QUERY_KEY = range ? (["useStakedBeraSnapshots", range] as const) : null;
17
- const swrResponse = useSWR(QUERY_KEY, ([, range]) =>
18
- getStakedBeraSnapshots({
19
- range,
20
- }),
21
- );
22
-
23
- return {
24
- ...swrResponse,
25
- refresh: () => swrResponse.mutate(),
26
- };
27
- };
@@ -1,59 +0,0 @@
1
- import type React from "react";
2
- import { createContext, useContext, useEffect, useState } from "react";
3
-
4
- import { useBeraWagmi, useConfig } from "@berachain/wagmi/hooks";
5
-
6
- import {
7
- createTransactionStore,
8
- type TransactionStore,
9
- } from "./transactionStore";
10
-
11
- // Only allow a single instance of the store to exist at once
12
- // so that multiple RainbowKitProvider instances can share the same store.
13
- // We delay the creation of the store until the first time it is used
14
- // so that it always has access to a provider.
15
- let storeSingleton: ReturnType<typeof createTransactionStore> | undefined;
16
-
17
- const TransactionStoreContext = createContext<TransactionStore | null>(null);
18
-
19
- export function TransactionStoreProvider({
20
- children,
21
- }: {
22
- children: React.ReactNode;
23
- }) {
24
- const { account } = useBeraWagmi();
25
- const address = account?.wallet?.address;
26
- const config = useConfig();
27
-
28
- // Use existing store if it exists, or lazily create one
29
- const [store] = useState(
30
- () =>
31
- storeSingleton ??
32
- (storeSingleton = createTransactionStore({
33
- config,
34
- })),
35
- );
36
-
37
- // Wait for pending transactions whenever address changes
38
- useEffect(() => {
39
- if (address) {
40
- store.waitForPendingTransactions(address);
41
- }
42
- }, [store, address]);
43
-
44
- return (
45
- <TransactionStoreContext.Provider value={store}>
46
- {children}
47
- </TransactionStoreContext.Provider>
48
- );
49
- }
50
-
51
- export function useTransactionStore(): TransactionStore {
52
- const store = useContext(TransactionStoreContext);
53
-
54
- if (!store) {
55
- throw new Error("Transaction hooks must be used within ");
56
- }
57
-
58
- return store;
59
- }
@@ -1,275 +0,0 @@
1
- import { type Config, getPublicClient } from "@wagmi/core";
2
- import type { Address } from "viem";
3
-
4
- import type { TransactionActionType } from "~/enum";
5
-
6
- const storageKeyLegacy = "rk-transactions";
7
- const storageKey = "transactions";
8
-
9
- type TransactionStatus = "pending" | "confirmed" | "failed";
10
-
11
- export interface Transaction {
12
- hash: string;
13
- description: string;
14
- actionType?: TransactionActionType;
15
- timestamp: number;
16
- status: TransactionStatus;
17
- confirmations?: number;
18
- chainId: number;
19
- }
20
-
21
- export type NewTransaction = Omit<Transaction, "status">;
22
-
23
- export type DataLegacy = Record<
24
- string,
25
- Record<number, Transaction[] | undefined>
26
- >;
27
- export type Data = Record<string, Transaction[] | undefined>;
28
-
29
- export function safeParseJsonData<T = DataLegacy | Data>(
30
- string: string | null,
31
- ): T {
32
- try {
33
- const value = string ? JSON.parse(string) : {};
34
- return typeof value === "object" ? value : {};
35
- } catch {
36
- return {} as T;
37
- }
38
- }
39
- /**
40
- *
41
- * @param legacyData - The legacy data to convert to the new data format.
42
- * removes the nested chains and converts the data to a flat array.
43
- * @returns Data in the new format with the chainId added to each transaction.
44
- */
45
- export function convertLegacyDataToNewData(legacyData: DataLegacy): Data {
46
- return Object.entries(legacyData).reduce((acc, [account, chains]) => {
47
- return {
48
- ...acc,
49
- [account]: Object.entries(chains).reduce(
50
- (acc, [chainId, transactions]) => {
51
- if (!transactions) {
52
- return acc;
53
- }
54
- const transactionsArray = transactions.map(
55
- (transaction): Transaction => ({
56
- ...transaction,
57
- chainId: Number(chainId),
58
- }),
59
- );
60
- acc.push(...transactionsArray);
61
- return acc;
62
- },
63
- [] as NewTransaction[],
64
- ),
65
- };
66
- }, {});
67
- }
68
-
69
- /**
70
- * Filter out duplicate transactions by hash
71
- */
72
- export const filterDuplicatefn = (
73
- tx: Transaction,
74
- idx: number,
75
- arr: Transaction[],
76
- ) => arr.findIndex((otherTx) => otherTx.hash === tx.hash) === idx;
77
-
78
- export function mergeData(legacyData: DataLegacy, newData: Data): Data {
79
- const mergedData = convertLegacyDataToNewData(legacyData);
80
- for (const [account, transactions] of Object.entries(newData)) {
81
- if (mergedData[account] && transactions) {
82
- // Merge and filter out duplicates by transaction hash
83
- mergedData[account] = [...transactions, ...mergedData[account]].filter(
84
- filterDuplicatefn,
85
- );
86
- } else {
87
- mergedData[account] = transactions?.filter(filterDuplicatefn);
88
- }
89
- }
90
- return mergedData;
91
- }
92
- function loadData(): Data {
93
- const legacyData = safeParseJsonData<DataLegacy>(
94
- typeof localStorage !== "undefined"
95
- ? localStorage.getItem(storageKeyLegacy)
96
- : null,
97
- );
98
- const data = safeParseJsonData<Data>(
99
- typeof localStorage !== "undefined"
100
- ? localStorage.getItem(storageKey)
101
- : null,
102
- );
103
- return mergeData(legacyData, data);
104
- }
105
-
106
- const transactionHashRegex = /^0x([A-Fa-f0-9]{64})$/;
107
-
108
- function validateTransaction(
109
- transaction: Transaction | NewTransaction,
110
- ): string[] {
111
- const errors: string[] = [];
112
-
113
- if (!transactionHashRegex.test(transaction.hash)) {
114
- errors.push("Invalid transaction hash");
115
- }
116
-
117
- if (typeof transaction.description !== "string") {
118
- errors.push("Transaction must have a description");
119
- }
120
-
121
- if (
122
- typeof transaction.confirmations !== "undefined" &&
123
- (!Number.isInteger(transaction.confirmations) ||
124
- transaction.confirmations < 1)
125
- ) {
126
- errors.push("Transaction confirmations must be a positiver integer");
127
- }
128
-
129
- return errors;
130
- }
131
-
132
- export function createTransactionStore({ config }: { config: Config }) {
133
- let data: Data = loadData();
134
- const listeners: Set<() => void> = new Set();
135
- const transactionRequestCache: Map<string, Promise<void>> = new Map();
136
-
137
- function getTransactions(account: string): Transaction[] {
138
- return data[account] ?? [];
139
- }
140
-
141
- function addTransaction(account: string, transaction: NewTransaction): void {
142
- const errors = validateTransaction(transaction);
143
-
144
- if (errors.length > 0) {
145
- throw new Error(["Unable to add transaction", ...errors].join("\n"));
146
- }
147
-
148
- updateTransactions(account, (transactions) => {
149
- return [
150
- { ...transaction, status: "pending" },
151
- ...transactions.filter(({ hash }) => {
152
- // Omit any duplicate transactions
153
- return hash !== transaction.hash;
154
- }),
155
- ];
156
- });
157
- }
158
-
159
- function clearTransactions(account: string): void {
160
- updateTransactions(account, () => {
161
- return [];
162
- });
163
- }
164
-
165
- function setTransactionStatus(
166
- account: string,
167
- hash: string,
168
- status: TransactionStatus,
169
- ): void {
170
- updateTransactions(account, (transactions) => {
171
- return transactions.map((transaction) =>
172
- transaction.hash === hash ? { ...transaction, status } : transaction,
173
- );
174
- });
175
- }
176
-
177
- async function waitForPendingTransactions(account: string): Promise<void> {
178
- await Promise.all(
179
- getTransactions(account)
180
- .filter((transaction) => transaction.status === "pending")
181
- .map(async (transaction) => {
182
- const { confirmations, hash, chainId } = transaction;
183
-
184
- const existingRequest = transactionRequestCache.get(hash);
185
-
186
- if (existingRequest) {
187
- return await existingRequest;
188
- }
189
- const provider = getPublicClient(config, { chainId });
190
- if (!provider) {
191
- return;
192
- }
193
-
194
- const requestPromise = provider
195
- .waitForTransactionReceipt({ confirmations, hash: hash as Address })
196
- .then(({ status }) => {
197
- transactionRequestCache.delete(hash);
198
-
199
- if (status === undefined) {
200
- return;
201
- }
202
-
203
- setTransactionStatus(
204
- account,
205
- hash,
206
- Number(status) === 0 ? "failed" : "confirmed",
207
- );
208
- });
209
-
210
- transactionRequestCache.set(hash, requestPromise);
211
-
212
- return await requestPromise;
213
- }),
214
- );
215
- }
216
-
217
- function updateTransactions(
218
- account: string,
219
- updateFn: (transactions: Transaction[]) => Transaction[],
220
- ): void {
221
- // Ensure we’re always operating on the latest data in case we have
222
- // multiple instances/tabs/etc. since we write all data back to
223
- // local storage after updating
224
- data = loadData();
225
-
226
- data[account] = data[account] ?? [];
227
-
228
- const MAX_TRANSACTIONS = 10;
229
- const updatedTransactions = updateFn(data?.[account] ?? []);
230
-
231
- const transactions = updatedTransactions
232
- // Sort by timestamp (latest first) and keep only the latest 10
233
- .sort((a, b) => b.timestamp - a.timestamp)
234
- .slice(0, MAX_TRANSACTIONS);
235
-
236
- data[account] =
237
- transactions.length > 0
238
- ? transactions.filter(filterDuplicatefn)
239
- : undefined;
240
-
241
- persistData();
242
- notifyListeners();
243
- waitForPendingTransactions(account);
244
- }
245
-
246
- function persistData(): void {
247
- localStorage.setItem(storageKey, JSON.stringify(data));
248
- // remove legacy data how that it has been converted to the new data format and saved to the new key
249
- localStorage.removeItem(storageKeyLegacy);
250
- }
251
-
252
- function notifyListeners(): void {
253
- for (const listener of listeners) {
254
- listener();
255
- }
256
- }
257
-
258
- function onChange(fn: () => void): () => void {
259
- listeners.add(fn);
260
-
261
- return () => {
262
- listeners.delete(fn);
263
- };
264
- }
265
-
266
- return {
267
- addTransaction,
268
- clearTransactions,
269
- getTransactions,
270
- onChange,
271
- waitForPendingTransactions,
272
- };
273
- }
274
-
275
- export type TransactionStore = ReturnType<typeof createTransactionStore>;