@wireio/stake 0.2.4 → 0.2.69

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 (554) hide show
  1. package/README.md +185 -243
  2. package/lib/stake.browser.js +59679 -12796
  3. package/lib/stake.browser.js.map +1 -1
  4. package/lib/stake.d.ts +16805 -3254
  5. package/lib/stake.js +60211 -13152
  6. package/lib/stake.js.map +1 -1
  7. package/lib/stake.m.js +59679 -12796
  8. package/lib/stake.m.js.map +1 -1
  9. package/package.json +6 -3
  10. package/src/assets/ethereum/hoodi/common/Base58.sol/Base58.dbg.json +4 -0
  11. package/src/assets/ethereum/hoodi/common/Base58.sol/Base58.json +164 -0
  12. package/src/assets/ethereum/hoodi/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
  13. package/src/assets/ethereum/hoodi/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
  14. package/src/assets/ethereum/hoodi/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
  15. package/src/assets/ethereum/hoodi/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
  16. package/src/assets/ethereum/hoodi/common/iodata.sol/iodata.dbg.json +4 -0
  17. package/src/assets/ethereum/hoodi/common/iodata.sol/iodata.json +618 -0
  18. package/src/assets/ethereum/hoodi/common/iodata_util.sol/iodata_util.dbg.json +4 -0
  19. package/src/assets/ethereum/hoodi/common/iodata_util.sol/iodata_util.json +40 -0
  20. package/src/assets/ethereum/hoodi/common/sysio_data.sol/sysio_data.dbg.json +4 -0
  21. package/src/assets/ethereum/hoodi/common/sysio_data.sol/sysio_data.json +10 -0
  22. package/src/assets/ethereum/hoodi/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
  23. package/src/assets/ethereum/hoodi/common/sysio_errors.sol/sysio_errors.json +10 -0
  24. package/src/assets/ethereum/hoodi/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
  25. package/src/assets/ethereum/hoodi/common/sysio_merkle.sol/sysio_merkle.json +233 -0
  26. package/src/assets/ethereum/hoodi/common/sysio_name.sol/sysio_name.dbg.json +4 -0
  27. package/src/assets/ethereum/hoodi/common/sysio_name.sol/sysio_name.json +49 -0
  28. package/src/assets/ethereum/hoodi/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
  29. package/src/assets/ethereum/hoodi/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
  30. package/src/assets/ethereum/hoodi/common/sysio_read.sol/sysio_read.dbg.json +4 -0
  31. package/src/assets/ethereum/hoodi/common/sysio_read.sol/sysio_read.json +1458 -0
  32. package/src/assets/ethereum/hoodi/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
  33. package/src/assets/ethereum/hoodi/common/sysio_tester.sol/SysioTester.json +1532 -0
  34. package/src/assets/ethereum/hoodi/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
  35. package/src/assets/ethereum/hoodi/common/sysio_verify.sol/sysio_verify.json +1525 -0
  36. package/src/assets/ethereum/hoodi/common/sysio_write.sol/sysio_write.dbg.json +4 -0
  37. package/src/assets/ethereum/hoodi/common/sysio_write.sol/sysio_write.json +1076 -0
  38. package/src/assets/ethereum/hoodi/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
  39. package/src/assets/ethereum/hoodi/liqEth/BeaconState.sol/BeaconState.json +807 -0
  40. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  41. package/src/assets/ethereum/hoodi/liqEth/DepositManager.sol/DepositManagerV2.json +985 -0
  42. package/src/assets/ethereum/hoodi/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  43. package/src/assets/ethereum/hoodi/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
  44. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  45. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IAccounting.json +182 -0
  46. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  47. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  48. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  49. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  50. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  51. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  52. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  53. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  54. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  55. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IStakingModule.json +344 -0
  56. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  57. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +59 -0
  58. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  59. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +14 -12
  60. package/src/assets/ethereum/hoodi/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  61. package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/LiqEthCommon.json +2 -2
  62. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  63. package/src/assets/ethereum/hoodi/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  64. package/src/assets/ethereum/hoodi/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  65. package/src/assets/ethereum/hoodi/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
  66. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  67. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  68. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  69. package/src/assets/ethereum/hoodi/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  70. package/src/assets/ethereum/hoodi/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  71. package/src/assets/ethereum/hoodi/liqEth/Yield.sol/YieldOracle.json +1376 -0
  72. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.dbg.json +4 -0
  73. package/src/assets/ethereum/hoodi/liqEth/accounting.sol/AccountingV2.json +629 -0
  74. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  75. package/src/assets/ethereum/hoodi/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  76. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  77. package/src/assets/ethereum/hoodi/liqEth/stakingModule.sol/StakingModuleV2.json +1779 -0
  78. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  79. package/src/assets/ethereum/hoodi/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  80. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  81. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IAccounting.json +1 -1
  82. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  83. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  84. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  85. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  86. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  87. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  88. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  89. package/src/assets/ethereum/{ABI/liqEth → hoodi/liqEth/v1}/LiqEthCommon.sol/IRewardsERC20.json +37 -1
  90. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  91. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
  92. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  93. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  94. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  95. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  96. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  97. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  98. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  99. package/src/assets/ethereum/hoodi/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  100. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  101. package/src/assets/ethereum/{ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20Pausable.json → hoodi/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json} +140 -78
  102. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  103. package/src/assets/ethereum/hoodi/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
  104. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  105. package/src/assets/ethereum/hoodi/liqEth/v1/accounting.sol/Accounting.json +548 -0
  106. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  107. package/src/assets/ethereum/hoodi/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  108. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  109. package/src/assets/ethereum/hoodi/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  110. package/src/assets/ethereum/hoodi/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  111. package/src/assets/ethereum/hoodi/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
  112. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  113. package/src/assets/ethereum/{ABI → hoodi}/liqEth/withdrawalVault.sol/Uint64BE.json +2 -2
  114. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  115. package/src/assets/ethereum/hoodi/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  116. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.dbg.json +4 -0
  117. package/src/assets/ethereum/hoodi/outpost/BAR.sol/BAR.json +1111 -0
  118. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.dbg.json +4 -0
  119. package/src/assets/ethereum/hoodi/outpost/Depositor.sol/Depositor.json +1696 -0
  120. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  121. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  122. package/src/assets/ethereum/hoodi/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +274 -0
  123. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.dbg.json +4 -0
  124. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.json +10 -0
  125. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.dbg.json +4 -0
  126. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.json +10 -0
  127. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.dbg.json +4 -0
  128. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.json +10 -0
  129. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.dbg.json +4 -0
  130. package/src/assets/ethereum/hoodi/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.json +10 -0
  131. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.dbg.json +4 -0
  132. package/src/assets/ethereum/hoodi/outpost/LiqEthBridge.sol/LiqEthBridge.json +1044 -0
  133. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.dbg.json +4 -0
  134. package/src/assets/ethereum/hoodi/outpost/OPP.sol/OPP.json +1055 -0
  135. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  136. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPP.json +81 -0
  137. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  138. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  139. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPInbound.json +330 -0
  140. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  141. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPReceiver.json +29 -0
  142. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  143. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/IOPPSender.json +41 -0
  144. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  145. package/src/assets/ethereum/hoodi/outpost/OPPCommon.sol/OPPCommon.json +287 -0
  146. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  147. package/src/assets/ethereum/hoodi/outpost/OPPEndpoint.sol/OPPEndpoint.json +294 -0
  148. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  149. package/src/assets/ethereum/hoodi/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +415 -0
  150. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  151. package/src/assets/ethereum/hoodi/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +399 -0
  152. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  153. package/src/assets/ethereum/hoodi/outpost/OPPErrors.sol/OPPErrors.json +245 -0
  154. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  155. package/src/assets/ethereum/hoodi/outpost/OPPInbound.sol/OPPInbound.json +1204 -0
  156. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  157. package/src/assets/ethereum/hoodi/outpost/OPPReceiver.sol/OPPReceiver.json +312 -0
  158. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  159. package/src/assets/ethereum/hoodi/outpost/OPPSender.sol/OPPSender.json +324 -0
  160. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.dbg.json +4 -0
  161. package/src/assets/ethereum/hoodi/outpost/OperatorRegistry.sol/OperatorRegistry.json +1068 -0
  162. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  163. package/src/assets/ethereum/hoodi/outpost/OutpostErrors.sol/OutpostErrors.json +211 -0
  164. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  165. package/src/assets/ethereum/hoodi/outpost/OutpostManaged.sol/OutpostManaged.json +229 -0
  166. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  167. package/src/assets/ethereum/hoodi/outpost/OutpostManager.sol/OutpostManager.json +751 -0
  168. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  169. package/src/assets/ethereum/hoodi/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +1432 -0
  170. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  171. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostManager.json +130 -0
  172. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  173. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  174. package/src/assets/ethereum/hoodi/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +141 -0
  175. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  176. package/src/assets/ethereum/hoodi/outpost/OutpostOwnable.sol/OutpostOwnable.json +213 -0
  177. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.dbg.json +4 -0
  178. package/src/assets/ethereum/hoodi/outpost/OutpostReserve.sol/OutpostReserve.json +888 -0
  179. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.dbg.json +4 -0
  180. package/src/assets/ethereum/hoodi/outpost/Pool.sol/Pool.json +659 -0
  181. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.dbg.json +4 -0
  182. package/src/assets/ethereum/hoodi/outpost/Pretoken.sol/Pretoken.json +1393 -0
  183. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  184. package/src/assets/ethereum/hoodi/outpost/ReceiptNFT.sol/ReceiptNFT.json +1738 -0
  185. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.dbg.json +4 -0
  186. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.json +10 -0
  187. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.dbg.json +4 -0
  188. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.json +10 -0
  189. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.dbg.json +4 -0
  190. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.json +10 -0
  191. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.dbg.json +4 -0
  192. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.json +10 -0
  193. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.dbg.json +4 -0
  194. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.json +10 -0
  195. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.dbg.json +4 -0
  196. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.json +10 -0
  197. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.dbg.json +4 -0
  198. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.json +10 -0
  199. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.dbg.json +4 -0
  200. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.json +10 -0
  201. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.dbg.json +4 -0
  202. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.json +10 -0
  203. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.dbg.json +4 -0
  204. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.json +10 -0
  205. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.dbg.json +4 -0
  206. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.json +1437 -0
  207. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.dbg.json +4 -0
  208. package/src/assets/ethereum/hoodi/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.json +10 -0
  209. package/src/assets/ethereum/hoodi/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  210. package/src/assets/ethereum/hoodi/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
  211. package/src/assets/ethereum/hoodi/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  212. package/src/assets/ethereum/hoodi/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  213. package/src/assets/ethereum/hoodi/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  214. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  215. package/src/assets/ethereum/hoodi/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  216. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  217. package/src/assets/ethereum/hoodi/token/ERC20Token.sol/ERC20Token.json +330 -0
  218. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  219. package/src/assets/ethereum/hoodi/token/ERC721Token.sol/ERC721Token.json +449 -0
  220. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.dbg.json +4 -0
  221. package/src/assets/ethereum/hoodi/token/Eman1155.sol/Eman1155.json +560 -0
  222. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.dbg.json +4 -0
  223. package/src/assets/ethereum/hoodi/token/Eman20.sol/Eman20.json +460 -0
  224. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.dbg.json +4 -0
  225. package/src/assets/ethereum/hoodi/token/Eman721.sol/Eman721.json +624 -0
  226. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.dbg.json +4 -0
  227. package/src/assets/ethereum/mainnet/common/Base58.sol/Base58.json +164 -0
  228. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
  229. package/src/assets/ethereum/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
  230. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
  231. package/src/assets/ethereum/mainnet/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
  232. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.dbg.json +4 -0
  233. package/src/assets/ethereum/mainnet/common/iodata.sol/iodata.json +618 -0
  234. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.dbg.json +4 -0
  235. package/src/assets/ethereum/mainnet/common/iodata_util.sol/iodata_util.json +40 -0
  236. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.dbg.json +4 -0
  237. package/src/assets/ethereum/mainnet/common/sysio_data.sol/sysio_data.json +10 -0
  238. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
  239. package/src/assets/ethereum/mainnet/common/sysio_errors.sol/sysio_errors.json +10 -0
  240. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
  241. package/src/assets/ethereum/mainnet/common/sysio_merkle.sol/sysio_merkle.json +233 -0
  242. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.dbg.json +4 -0
  243. package/src/assets/ethereum/mainnet/common/sysio_name.sol/sysio_name.json +49 -0
  244. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
  245. package/src/assets/ethereum/mainnet/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
  246. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.dbg.json +4 -0
  247. package/src/assets/ethereum/mainnet/common/sysio_read.sol/sysio_read.json +1458 -0
  248. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
  249. package/src/assets/ethereum/mainnet/common/sysio_tester.sol/SysioTester.json +1532 -0
  250. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
  251. package/src/assets/ethereum/mainnet/common/sysio_verify.sol/sysio_verify.json +1525 -0
  252. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.dbg.json +4 -0
  253. package/src/assets/ethereum/mainnet/common/sysio_write.sol/sysio_write.json +1076 -0
  254. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
  255. package/src/assets/ethereum/mainnet/liqEth/BeaconState.sol/BeaconState.json +807 -0
  256. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
  257. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/DepositManagerV2.json +1004 -0
  258. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.dbg.json +4 -0
  259. package/src/assets/ethereum/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.json +29 -0
  260. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.dbg.json +4 -0
  261. package/src/assets/ethereum/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.json +897 -0
  262. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
  263. package/src/assets/ethereum/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
  264. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  265. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.json +39 -0
  266. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  267. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.json +64 -0
  268. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.dbg.json +4 -0
  269. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.json +189 -0
  270. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  271. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  272. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  273. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
  274. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  275. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
  276. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  277. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.json +279 -0
  278. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  279. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  280. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  281. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  282. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  283. package/src/assets/ethereum/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  284. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
  285. package/src/assets/ethereum/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
  286. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
  287. package/src/assets/ethereum/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
  288. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
  289. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
  290. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
  291. package/src/assets/ethereum/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
  292. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.dbg.json +4 -0
  293. package/src/assets/ethereum/mainnet/liqEth/StakingLib.sol/StakingLib.json +89 -0
  294. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
  295. package/src/assets/ethereum/mainnet/liqEth/Yield.sol/YieldOracle.json +1376 -0
  296. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
  297. package/src/assets/ethereum/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
  298. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
  299. package/src/assets/ethereum/mainnet/liqEth/stakingModule.sol/StakingModuleV2.json +1896 -0
  300. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
  301. package/src/assets/ethereum/mainnet/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
  302. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
  303. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.json +176 -0
  304. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
  305. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
  306. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
  307. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
  308. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
  309. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
  310. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
  311. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.json +249 -0
  312. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
  313. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
  314. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
  315. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
  316. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
  317. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
  318. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
  319. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
  320. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
  321. package/src/assets/ethereum/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
  322. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
  323. package/src/assets/ethereum/{ABI/liqEth/RewardsERC20.sol/RewardsERC20.json → mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json} +159 -34
  324. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
  325. package/src/assets/ethereum/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
  326. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
  327. package/src/assets/ethereum/mainnet/liqEth/v1/accounting.sol/Accounting.json +542 -0
  328. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
  329. package/src/assets/ethereum/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
  330. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
  331. package/src/assets/ethereum/mainnet/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
  332. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
  333. package/src/assets/ethereum/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
  334. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
  335. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/Uint64BE.json +10 -0
  336. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
  337. package/src/assets/ethereum/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
  338. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.dbg.json +4 -0
  339. package/src/assets/ethereum/mainnet/outpost/BAR.sol/BARV2.json +1915 -0
  340. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.dbg.json +4 -0
  341. package/src/assets/ethereum/mainnet/outpost/Depositor.sol/DepositorV2.json +1845 -0
  342. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
  343. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +122 -0
  344. package/src/assets/ethereum/mainnet/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
  345. package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +31 -81
  346. package/src/assets/ethereum/mainnet/outpost/OPP.sol/OPP.dbg.json +4 -0
  347. package/src/assets/ethereum/mainnet/outpost/OPP.sol/OPP.json +948 -0
  348. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
  349. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
  350. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.json +29 -0
  351. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
  352. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
  353. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
  354. package/src/assets/ethereum/mainnet/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
  355. package/src/assets/ethereum/mainnet/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
  356. package/src/assets/ethereum/mainnet/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
  357. package/src/assets/ethereum/mainnet/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
  358. package/src/assets/ethereum/mainnet/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
  359. package/src/assets/ethereum/mainnet/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
  360. package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPInbound.sol/OPPInbound.json +2 -2
  361. package/src/assets/ethereum/mainnet/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
  362. package/src/assets/ethereum/mainnet/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
  363. package/src/assets/ethereum/mainnet/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
  364. package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostErrors.sol/OutpostErrors.json +33 -18
  365. package/src/assets/ethereum/mainnet/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
  366. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.dbg.json +4 -0
  367. package/src/assets/ethereum/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.json +737 -0
  368. package/src/assets/ethereum/mainnet/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
  369. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
  370. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
  371. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +29 -0
  372. package/src/assets/ethereum/mainnet/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
  373. package/src/assets/ethereum/mainnet/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
  374. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.dbg.json +4 -0
  375. package/src/assets/ethereum/mainnet/outpost/Pool.sol/PoolV2.json +943 -0
  376. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.dbg.json +4 -0
  377. package/src/assets/ethereum/mainnet/outpost/Pretoken.sol/PretokenV2.json +1703 -0
  378. package/src/assets/ethereum/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
  379. package/src/assets/ethereum/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.json +2015 -0
  380. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
  381. package/src/assets/ethereum/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
  382. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
  383. package/src/assets/ethereum/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.json +29 -0
  384. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
  385. package/src/assets/ethereum/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +858 -0
  386. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
  387. package/src/assets/ethereum/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +30 -0
  388. package/src/assets/ethereum/mainnet/outpost/v1/BAR.sol/BAR.dbg.json +4 -0
  389. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/BAR.sol/BAR.json +34 -19
  390. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.dbg.json +4 -0
  391. package/src/assets/ethereum/mainnet/outpost/v1/Depositor.sol/Depositor.json +1653 -0
  392. package/src/assets/ethereum/mainnet/outpost/v1/OutpostManager.sol/OutpostManager.dbg.json +4 -0
  393. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/OutpostManager.sol/OutpostManager.json +3 -3
  394. package/src/assets/ethereum/mainnet/outpost/v1/Pool.sol/Pool.dbg.json +4 -0
  395. package/src/assets/ethereum/{ABI/outpost → mainnet/outpost/v1}/Pool.sol/Pool.json +34 -19
  396. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.dbg.json +4 -0
  397. package/src/assets/ethereum/mainnet/outpost/v1/Pretoken.sol/Pretoken.json +1665 -0
  398. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
  399. package/src/assets/ethereum/mainnet/token/ERC1155Token.sol/ERC1155Token.json +472 -0
  400. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
  401. package/src/assets/ethereum/mainnet/token/ERC20Token.sol/ERC20Token.json +330 -0
  402. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
  403. package/src/assets/ethereum/mainnet/token/ERC721Token.sol/ERC721Token.json +449 -0
  404. package/src/assets/solana/devnet/idl/liqsol_core.json +8566 -0
  405. package/src/assets/solana/{idl → devnet/idl}/liqsol_token.json +35 -1
  406. package/src/assets/solana/devnet/idl/transfer_hook.json +490 -0
  407. package/src/assets/solana/devnet/idl/validator_leaderboard.json +735 -0
  408. package/src/assets/solana/devnet/types/liqsol_core.ts +8572 -0
  409. package/src/assets/solana/{types → devnet/types}/liqsol_token.ts +35 -1
  410. package/src/assets/solana/devnet/types/transfer_hook.ts +496 -0
  411. package/src/assets/solana/devnet/types/validator_leaderboard.ts +741 -0
  412. package/src/assets/solana/{idl → mainnet/idl}/liqsol_core.json +3816 -1567
  413. package/src/assets/solana/mainnet/idl/liqsol_token.json +217 -0
  414. package/src/assets/solana/mainnet/idl/transfer_hook.json +479 -0
  415. package/src/assets/solana/{idl → mainnet/idl}/validator_leaderboard.json +4 -4
  416. package/src/assets/solana/{types → mainnet/types}/liqsol_core.ts +3816 -1567
  417. package/src/assets/solana/mainnet/types/liqsol_token.ts +223 -0
  418. package/src/assets/solana/mainnet/types/transfer_hook.ts +485 -0
  419. package/src/assets/solana/{types → mainnet/types}/validator_leaderboard.ts +4 -4
  420. package/src/assets/solana/realdevnet/idl/liqsol_core.json +7112 -0
  421. package/src/assets/solana/realdevnet/idl/liqsol_token.json +217 -0
  422. package/src/assets/solana/realdevnet/idl/transfer_hook.json +479 -0
  423. package/src/assets/solana/realdevnet/idl/validator_leaderboard.json +735 -0
  424. package/src/assets/solana/realdevnet/types/liqsol_core.ts +7118 -0
  425. package/src/assets/solana/realdevnet/types/liqsol_token.ts +223 -0
  426. package/src/assets/solana/realdevnet/types/transfer_hook.ts +485 -0
  427. package/src/assets/solana/realdevnet/types/validator_leaderboard.ts +741 -0
  428. package/src/index.ts +2 -2
  429. package/src/networks/ethereum/clients/convert.client.ts +221 -0
  430. package/src/networks/ethereum/clients/opp.client.ts +389 -0
  431. package/src/networks/ethereum/clients/pretoken.client.ts +165 -0
  432. package/src/networks/ethereum/clients/receipt.client.ts +199 -0
  433. package/src/networks/ethereum/clients/stake.client.ts +110 -122
  434. package/src/networks/ethereum/clients/validator.client.ts +61 -0
  435. package/src/networks/ethereum/contract.ts +424 -165
  436. package/src/networks/ethereum/ethereum.ts +505 -172
  437. package/src/networks/ethereum/types.ts +71 -30
  438. package/src/networks/ethereum/utils.ts +340 -0
  439. package/src/networks/solana/clients/convert.client.ts +341 -0
  440. package/src/networks/solana/clients/distribution.client.ts +269 -263
  441. package/src/networks/solana/clients/leaderboard.client.ts +68 -26
  442. package/src/networks/solana/clients/outpost.client.ts +224 -357
  443. package/src/networks/solana/clients/token.client.ts +96 -107
  444. package/src/networks/solana/constants.ts +88 -216
  445. package/src/networks/solana/program.ts +432 -28
  446. package/src/networks/solana/solana.ts +1070 -399
  447. package/src/networks/solana/types.ts +688 -75
  448. package/src/networks/solana/utils.ts +160 -359
  449. package/src/staker.ts +25 -4
  450. package/src/types.ts +261 -40
  451. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.dbg.json +0 -4
  452. package/src/assets/ethereum/ABI/liqEth/DepositManager.sol/DepositManager.json +0 -1114
  453. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +0 -4
  454. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +0 -4
  455. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +0 -4
  456. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +0 -4
  457. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +0 -4
  458. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IStakingModule.json +0 -118
  459. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +0 -4
  460. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +0 -4
  461. package/src/assets/ethereum/ABI/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +0 -4
  462. package/src/assets/ethereum/ABI/liqEth/RewardsERC20.sol/RewardsERC20.dbg.json +0 -4
  463. package/src/assets/ethereum/ABI/liqEth/RewardsERC20Pausable.sol/RewardsERC20Pausable.dbg.json +0 -4
  464. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.dbg.json +0 -4
  465. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/BeaconRoots.json +0 -10
  466. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.dbg.json +0 -4
  467. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/SSZ.json +0 -10
  468. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/ValidatorBalanceVerifier.dbg.json +0 -4
  469. package/src/assets/ethereum/ABI/liqEth/ValidatorBalanceVerifier.sol/ValidatorBalanceVerifier.json +0 -225
  470. package/src/assets/ethereum/ABI/liqEth/Yield.sol/BeaconRoots.dbg.json +0 -4
  471. package/src/assets/ethereum/ABI/liqEth/Yield.sol/BeaconRoots.json +0 -10
  472. package/src/assets/ethereum/ABI/liqEth/Yield.sol/SSZ.dbg.json +0 -4
  473. package/src/assets/ethereum/ABI/liqEth/Yield.sol/SSZ.json +0 -10
  474. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.dbg.json +0 -4
  475. package/src/assets/ethereum/ABI/liqEth/Yield.sol/YieldOracle.json +0 -813
  476. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.dbg.json +0 -4
  477. package/src/assets/ethereum/ABI/liqEth/accounting.sol/Accounting.json +0 -573
  478. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.dbg.json +0 -4
  479. package/src/assets/ethereum/ABI/liqEth/liqEth.sol/LiqEthToken.json +0 -1087
  480. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.dbg.json +0 -4
  481. package/src/assets/ethereum/ABI/liqEth/stakingModule.sol/StakingModule.json +0 -1183
  482. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +0 -4
  483. package/src/assets/ethereum/ABI/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +0 -927
  484. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +0 -4
  485. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +0 -4
  486. package/src/assets/ethereum/ABI/liqEth/withdrawalVault.sol/WithdrawalVault.json +0 -447
  487. package/src/assets/ethereum/ABI/outpost/BAR.sol/BAR.dbg.json +0 -4
  488. package/src/assets/ethereum/ABI/outpost/Depositor.sol/Depositor.dbg.json +0 -4
  489. package/src/assets/ethereum/ABI/outpost/Depositor.sol/Depositor.json +0 -1753
  490. package/src/assets/ethereum/ABI/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +0 -4
  491. package/src/assets/ethereum/ABI/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +0 -4
  492. package/src/assets/ethereum/ABI/outpost/OPP.sol/OPP.dbg.json +0 -4
  493. package/src/assets/ethereum/ABI/outpost/OPP.sol/OPP.json +0 -930
  494. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPP.dbg.json +0 -4
  495. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +0 -4
  496. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPInbound.dbg.json +0 -4
  497. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +0 -4
  498. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/IOPPSender.dbg.json +0 -4
  499. package/src/assets/ethereum/ABI/outpost/OPPCommon.sol/OPPCommon.dbg.json +0 -4
  500. package/src/assets/ethereum/ABI/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +0 -4
  501. package/src/assets/ethereum/ABI/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +0 -4
  502. package/src/assets/ethereum/ABI/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +0 -4
  503. package/src/assets/ethereum/ABI/outpost/OPPErrors.sol/OPPErrors.dbg.json +0 -4
  504. package/src/assets/ethereum/ABI/outpost/OPPInbound.sol/OPPInbound.dbg.json +0 -4
  505. package/src/assets/ethereum/ABI/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +0 -4
  506. package/src/assets/ethereum/ABI/outpost/OPPSender.sol/OPPSender.dbg.json +0 -4
  507. package/src/assets/ethereum/ABI/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +0 -4
  508. package/src/assets/ethereum/ABI/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +0 -4
  509. package/src/assets/ethereum/ABI/outpost/OutpostManager.sol/OutpostManager.dbg.json +0 -4
  510. package/src/assets/ethereum/ABI/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +0 -4
  511. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +0 -4
  512. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +0 -4
  513. package/src/assets/ethereum/ABI/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +0 -4
  514. package/src/assets/ethereum/ABI/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +0 -4
  515. package/src/assets/ethereum/ABI/outpost/Pool.sol/Pool.dbg.json +0 -4
  516. package/src/assets/ethereum/ABI/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +0 -4
  517. package/src/assets/ethereum/ABI/outpost/ReceiptNFT.sol/ReceiptNFT.json +0 -2020
  518. package/src/assets/ethereum/ABI/outpost/Warrant.sol/Warrant.dbg.json +0 -4
  519. package/src/assets/ethereum/ABI/outpost/Warrant.sol/Warrant.json +0 -1650
  520. package/src/assets/ethereum/ABI/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +0 -4
  521. package/src/assets/ethereum/ABI/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +0 -4
  522. package/src/assets/ethereum/ABI/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +0 -4
  523. package/src/assets/ethereum/ABI/token/ERC1155Token.sol/ERC1155Token.dbg.json +0 -4
  524. package/src/assets/ethereum/ABI/token/ERC1155Token.sol/ERC1155Token.json +0 -472
  525. package/src/assets/ethereum/ABI/token/ERC20Token.sol/ERC20Token.dbg.json +0 -4
  526. package/src/assets/ethereum/ABI/token/ERC20Token.sol/ERC20Token.json +0 -330
  527. package/src/assets/ethereum/ABI/token/ERC721Token.sol/ERC721Token.dbg.json +0 -4
  528. package/src/assets/ethereum/ABI/token/ERC721Token.sol/ERC721Token.json +0 -449
  529. package/src/networks/ethereum/clients/deposit.client.ts +0 -82
  530. package/src/networks/solana/clients/deposit.client.ts +0 -127
  531. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositContract.json +0 -0
  532. /package/src/assets/ethereum/{ABI → hoodi}/liqEth/LiqEthCommon.sol/IDepositManager.json +0 -0
  533. /package/src/assets/ethereum/{ABI → hoodi}/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +0 -0
  534. /package/src/assets/ethereum/{ABI → hoodi}/outpost/OPPCommon.sol/IOPPEndpoint.json +0 -0
  535. /package/src/assets/ethereum/{ABI → hoodi}/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +0 -0
  536. /package/src/assets/ethereum/{ABI → hoodi}/outpost/interfaces/IWarrant.sol/IWarrant.json +0 -0
  537. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +0 -0
  538. /package/src/assets/ethereum/{ABI → hoodi}/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +0 -0
  539. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPP.json +0 -0
  540. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPInbound.json +0 -0
  541. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPReceiver.json +0 -0
  542. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPSender.json +0 -0
  543. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/OPPCommon.json +0 -0
  544. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpoint.sol/OPPEndpoint.json +0 -0
  545. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +0 -0
  546. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +0 -0
  547. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPErrors.sol/OPPErrors.json +0 -0
  548. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPReceiver.sol/OPPReceiver.json +0 -0
  549. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPSender.sol/OPPSender.json +0 -0
  550. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManaged.sol/OutpostManaged.json +0 -0
  551. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +0 -0
  552. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostManager.json +0 -0
  553. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +0 -0
  554. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostOwnable.sol/OutpostOwnable.json +0 -0
@@ -1,69 +1,76 @@
1
1
  import { Program, BN, AnchorProvider } from '@coral-xyz/anchor';
2
-
3
2
  import {
4
3
  Connection,
5
4
  Keypair,
6
5
  PublicKey,
7
- SystemProgram,
8
- StakeProgram,
9
6
  } from '@solana/web3.js';
10
7
  import {
11
8
  TOKEN_2022_PROGRAM_ID,
12
- ASSOCIATED_TOKEN_PROGRAM_ID,
13
9
  getAssociatedTokenAddress,
14
10
  } from '@solana/spl-token';
15
11
 
16
12
  import {
17
- LIQSOL_CORE,
18
- LIQSOL_TOKEN,
19
- PAY_RATE_SCALE_FACTOR,
20
13
  DEFAULT_AVERAGE_PAY_RATE,
21
14
  EPHEMERAL_RENT_EXEMPTION,
22
- LAMPORTS_PER_SOL,
23
- lamportsToSol,
24
15
  solToLamports,
25
- deriveDepositAuthorityPda,
26
- deriveLiqsolMintPda,
27
- deriveLiqsolMintAuthorityPda,
28
- deriveVaultPda,
29
- deriveReservePoolPda,
30
- deriveStakeControllerStatePda,
31
- derivePayoutStatePda,
32
- deriveBucketAuthorityPda,
33
- deriveDistributionStatePda,
34
- deriveUserRecordPda,
35
- derivePayRateHistoryPda,
36
- deriveStakeControllerVaultPda,
37
- deriveEphemeralStakeAddress,
38
16
  DEFAULT_PAY_RATE_LOOKBACK,
39
- deriveOutpostGlobalStatePda,
40
- deriveOutpostPoolAuthorityPda,
41
- deriveSolBucketPda,
42
- deriveTrancheStatePda,
43
- deriveWireReceiptPda,
44
- derivePoolUserRecordPda,
45
- deriveUserUserRecordPda,
46
- deriveUserWarrantRecordPda,
47
17
  CHAINLINK_FEED,
48
18
  CHAINLINK_PROGRAM,
49
19
  } from './constants';
50
20
 
51
- import liqsolCoreIDL from '../../assets/solana/idl/liqsol_core.json';
52
- import { LiqsolCore } from '../../assets/solana/types/liqsol_core';
53
21
  import { GlobalState, TrancheState } from './types';
54
22
  import { TrancheLadderItem, TrancheSnapshot } from '../../types';
55
23
  import { ChainID } from '@wireio/core';
56
-
24
+ import { SolanaProgramService } from './program';
57
25
 
58
26
  // -----------------------------------------------------------------------------
59
27
  // Tranche Support
60
28
  // -----------------------------------------------------------------------------
61
-
62
-
63
29
  const INDEX_SCALE = BigInt(1_000_000_000_000); // 1e12
64
- const USD_SCALE = BigInt(100_000_000); // 1e8
30
+ const USD_SCALE = BigInt(100_000_000); // 1e8
65
31
  const BPS = BigInt(10_000);
66
32
 
33
+ /**
34
+ * Apply one forward growth step: value * (BPS + growthBps) / BPS.
35
+ * Simple integer round-half-up.
36
+ */
37
+ function growSupplyOnce(value: bigint, growthBps: number): bigint {
38
+ const g = BigInt(growthBps);
39
+ return (value * (BPS + g) + BPS / BigInt(2)) / BPS;
40
+ }
41
+
42
+ /**
43
+ * Apply one backward step: value * BPS / (BPS + growthBps).
44
+ * Also integer round-half-up.
45
+ */
46
+ function shrinkSupplyOnce(value: bigint, growthBps: number): bigint {
47
+ const g = BigInt(growthBps);
48
+ return (value * BPS + (BPS + g) / BigInt(2)) / (BPS + g);
49
+ }
50
+
51
+ /**
52
+ * Price step is expressed in *cents*, while prices are 1e8 USD.
53
+ * 1 cent = 0.01 * 1e8 = 1e6, so:
54
+ * step = priceGrowthCents * 1e6
55
+ */
56
+ function priceStepUsd1e8(priceGrowthCents: number): bigint {
57
+ if (!priceGrowthCents) return BigInt(0);
58
+ const CENT_SCALE = USD_SCALE / BigInt(100); // 1e6
59
+ return BigInt(priceGrowthCents) * CENT_SCALE;
60
+ }
61
+
62
+ function growPriceOnceUsd1e8(value: bigint, priceGrowthCents: number): bigint {
63
+ const step = priceStepUsd1e8(priceGrowthCents);
64
+ return value + step;
65
+ }
66
+
67
+ function shrinkPriceOnceUsd1e8(value: bigint, priceGrowthCents: number): bigint {
68
+ const step = priceStepUsd1e8(priceGrowthCents);
69
+ if (step === BigInt(0)) return value;
70
+ if (value <= step) return BigInt(0);
71
+ return value - step;
72
+ }
73
+
67
74
  /** BN | bigint -> bigint helper (keeps code readable) */
68
75
  export function toBigint(x: any): bigint {
69
76
  if (typeof x === 'bigint') return x;
@@ -84,24 +91,6 @@ export function tokensToShares(amount: bigint, currentIndex: bigint): bigint {
84
91
  return r === BigInt(0) ? q : q + BigInt(1);
85
92
  }
86
93
 
87
- /**
88
- * Apply one forward growth step: value * (BPS + growthBps) / BPS.
89
- * Simple integer round-half-up.
90
- */
91
- function growOnce(value: bigint, growthBps: number): bigint {
92
- const g = BigInt(growthBps);
93
- return (value * (BPS + g) + BPS / BigInt(2)) / BPS;
94
- }
95
-
96
- /**
97
- * Apply one backward step: value * BPS / (BPS + growthBps).
98
- * Also integer round-half-up.
99
- */
100
- function shrinkOnce(value: bigint, growthBps: number): bigint {
101
- const g = BigInt(growthBps);
102
- return (value * BPS + (BPS + g) / BigInt(2)) / (BPS + g);
103
- }
104
-
105
94
  /**
106
95
  * Build a local tranche ladder around the current tranche
107
96
  * using only on-chain config + current state.
@@ -116,10 +105,9 @@ export function buildSolanaTrancheLadder(options: {
116
105
  currentTranche: number;
117
106
  initialTrancheSupply: bigint;
118
107
  currentTrancheSupply: bigint;
119
- totalWarrantsSold: bigint; // informational only
120
- currentPriceUsd: bigint;
108
+ currentPriceUsd: bigint; // 1e8 scale
121
109
  supplyGrowthBps: number;
122
- priceGrowthBps: number;
110
+ priceGrowthCents: number; // e.g. 2 -> $0.02 per tranche
123
111
  windowBefore?: number;
124
112
  windowAfter?: number;
125
113
  }): TrancheLadderItem[] {
@@ -129,7 +117,7 @@ export function buildSolanaTrancheLadder(options: {
129
117
  currentTrancheSupply,
130
118
  currentPriceUsd,
131
119
  supplyGrowthBps,
132
- priceGrowthBps,
120
+ priceGrowthCents,
133
121
  windowBefore = 5,
134
122
  windowAfter = 5,
135
123
  } = options;
@@ -140,35 +128,41 @@ export function buildSolanaTrancheLadder(options: {
140
128
  const capacity = new Map<number, bigint>();
141
129
  const price = new Map<number, bigint>();
142
130
 
143
- // Seed current
131
+ // Seed current tranche
144
132
  capacity.set(currentTranche, initialTrancheSupply);
145
133
  price.set(currentTranche, currentPriceUsd);
146
134
 
147
- // Forward (future tranches)
135
+ // Forward (future tranches): grow supply by BPS, price by +cents (linear)
148
136
  for (let id = currentTranche + 1; id <= endId; id++) {
149
137
  const prevCap = capacity.get(id - 1)!;
150
138
  const prevPrice = price.get(id - 1)!;
151
- capacity.set(id, growOnce(prevCap, supplyGrowthBps));
152
- price.set(id, growOnce(prevPrice, priceGrowthBps));
139
+
140
+ capacity.set(id, growSupplyOnce(prevCap, supplyGrowthBps));
141
+ price.set(id, growPriceOnceUsd1e8(prevPrice, priceGrowthCents));
153
142
  }
154
143
 
155
- // Backward (past tranches)
144
+ // Backward (past tranches): shrink supply by inverse BPS, price by -cents
156
145
  for (let id = currentTranche - 1; id >= startId; id--) {
157
146
  const nextCap = capacity.get(id + 1)!;
158
147
  const nextPrice = price.get(id + 1)!;
159
- capacity.set(id, shrinkOnce(nextCap, supplyGrowthBps));
160
- price.set(id, shrinkOnce(nextPrice, priceGrowthBps));
148
+
149
+ capacity.set(id, shrinkSupplyOnce(nextCap, supplyGrowthBps));
150
+ price.set(id, shrinkPriceOnceUsd1e8(nextPrice, priceGrowthCents));
161
151
  }
162
152
 
163
153
  const ladder: TrancheLadderItem[] = [];
164
154
  for (let id = startId; id <= endId; id++) {
165
155
  const cap = capacity.get(id)!;
156
+
166
157
  let sold: bigint;
167
158
  if (id < currentTranche) {
159
+ // Past tranches fully sold
168
160
  sold = cap;
169
161
  } else if (id === currentTranche) {
162
+ // Current tranche: cap - remaining
170
163
  sold = cap - currentTrancheSupply;
171
164
  } else {
165
+ // Future tranches not yet opened
172
166
  sold = BigInt(0);
173
167
  }
174
168
 
@@ -177,7 +171,7 @@ export function buildSolanaTrancheLadder(options: {
177
171
  capacity: cap,
178
172
  sold,
179
173
  remaining: cap - sold,
180
- priceUsd: price.get(id)!,
174
+ priceUsd: price.get(id)!, // still 1e8 scale
181
175
  });
182
176
  }
183
177
 
@@ -209,31 +203,21 @@ export function buildSolanaTrancheSnapshot(options: {
209
203
 
210
204
  const currentIndex = toBigint(globalState.currentIndex);
211
205
  const totalShares = toBigint(globalState.totalShares);
212
-
213
206
  const currentTranche = trancheState.currentTrancheNumber.toNumber();
214
207
  const currentTrancheSupply = toBigint(trancheState.currentTrancheSupply);
215
208
  const initialTrancheSupply = toBigint(trancheState.initialTrancheSupply);
216
- const totalWarrantsSold = toBigint(trancheState.totalWarrantsSold);
209
+ const totalPretokensSold = toBigint(trancheState.totalPretokensSold);
217
210
  const currentPriceUsd = toBigint(trancheState.currentTranchePriceUsd);
218
-
219
211
  const supplyGrowthBps = trancheState.supplyGrowthBps;
220
- const priceGrowthBps = trancheState.priceGrowthBps;
221
-
222
- const minPriceUsd = trancheState.minPriceUsd
223
- ? toBigint(trancheState.minPriceUsd)
224
- : undefined;
225
- const maxPriceUsd = trancheState.maxPriceUsd
226
- ? toBigint(trancheState.maxPriceUsd)
227
- : undefined;
212
+ const priceGrowthCents = trancheState.priceGrowthCents;
228
213
 
229
214
  const ladder = buildSolanaTrancheLadder({
230
215
  currentTranche,
231
216
  initialTrancheSupply,
232
217
  currentTrancheSupply,
233
- totalWarrantsSold,
234
218
  currentPriceUsd,
235
219
  supplyGrowthBps,
236
- priceGrowthBps,
220
+ priceGrowthCents,
237
221
  windowBefore: ladderWindowBefore,
238
222
  windowAfter: ladderWindowAfter,
239
223
  });
@@ -244,309 +228,82 @@ export function buildSolanaTrancheSnapshot(options: {
244
228
  totalShares,
245
229
  currentTranche,
246
230
  currentPriceUsd,
247
- minPriceUsd,
248
- maxPriceUsd,
249
231
  supplyGrowthBps,
250
- priceGrowthBps,
232
+ priceGrowthCents,
233
+ totalPretokensSold,
251
234
  currentTrancheSupply,
252
235
  initialTrancheSupply,
253
- totalWarrantsSold,
254
236
  nativePriceUsd: solPriceUsd,
255
237
  nativePriceTimestamp,
256
238
  ladder,
257
239
  };
258
240
  }
259
241
 
260
-
261
- // -----------------------------------------------------------------------------
262
- // Read-only liqsol_core Program helper
263
- // -----------------------------------------------------------------------------
264
-
265
- let _liqsolCoreProgram: Program<LiqsolCore> | null = null;
266
-
267
- export function getLiqsolCoreProgram(
268
- connection: Connection,
269
- ): Program<LiqsolCore> {
270
- if (_liqsolCoreProgram && _liqsolCoreProgram.provider.connection === connection) {
271
- return _liqsolCoreProgram;
272
- }
273
-
274
- // Dummy wallet – we're only doing read-only account fetches here.
275
- const tmpKeypair = Keypair.generate();
276
- const wallet: any = { publicKey: tmpKeypair.publicKey, signAllTransactions: async () => [], signTransaction: async () => tmpKeypair };
277
-
278
- const provider = new AnchorProvider(connection, wallet, {
279
- commitment: 'confirmed',
280
- });
281
-
282
- const program = new Program(
283
- liqsolCoreIDL,
284
- provider,
285
- ) as Program<LiqsolCore>;
286
-
287
- _liqsolCoreProgram = program;
288
- return program;
289
- }
290
-
291
-
292
- // -----------------------------------------------------------------------------
293
- // Balance + state getters (UI-friendly)
294
- // -----------------------------------------------------------------------------
295
-
296
- export async function getUserLiqSolBalance(
297
- connection: Connection,
298
- user: PublicKey,
299
- ): Promise<number> {
300
- const liqsolMint = deriveLiqsolMintPda();
301
- const ata = await getAssociatedTokenAddress(
302
- liqsolMint,
303
- user,
304
- false,
305
- TOKEN_2022_PROGRAM_ID,
306
- );
307
-
308
- try {
309
- const bal = await connection.getTokenAccountBalance(ata);
310
- return Number(bal.value.amount); // raw lamports, not decimals-adjusted
311
- } catch {
312
- return 0;
313
- }
314
- }
315
-
316
- export async function getBucketLiqSolBalance(
317
- connection: Connection,
318
- ): Promise<number> {
319
- const liqsolMint = deriveLiqsolMintPda();
320
- const bucketAuthority = deriveBucketAuthorityPda();
321
- const ata = await getAssociatedTokenAddress(
322
- liqsolMint,
323
- bucketAuthority,
324
- true,
325
- TOKEN_2022_PROGRAM_ID,
326
- );
327
-
328
- try {
329
- const bal = await connection.getTokenAccountBalance(ata);
330
- return Number(bal.value.amount);
331
- } catch {
332
- return 0;
333
- }
334
- }
335
-
336
- export async function getReservePoolBalance(
337
- connection: Connection,
338
- ): Promise<number> {
339
- const reservePool = deriveReservePoolPda();
340
- try {
341
- const lamports = await connection.getBalance(reservePool);
342
- return lamports;
343
- } catch {
344
- return 0;
345
- }
346
- }
347
-
348
- /**
349
- * Raw account info for the stake_controller state (Anchor decode is left
350
- * to the caller so the SDK can stay IDL-agnostic at this layer).
351
- */
352
- export async function getStakeControllerStateRaw(
353
- connection: Connection,
354
- ): Promise<Uint8Array | null> {
355
- const pda = deriveStakeControllerStatePda();
356
- const info = await connection.getAccountInfo(pda);
357
- return info?.data ?? null;
358
- }
359
-
360
- /**
361
- * Raw account info for the payout-state account.
362
- */
363
- export async function getPayoutStateRaw(
364
- connection: Connection,
365
- ): Promise<Uint8Array | null> {
366
- const pda = derivePayoutStatePda();
367
- const info = await connection.getAccountInfo(pda);
368
- return info?.data ?? null;
369
- }
370
-
371
- /**
372
- * Raw account info for a user's distribution user_record.
373
- */
374
- export async function getUserRecordRaw(
375
- connection: Connection,
376
- user: PublicKey,
377
- ): Promise<Uint8Array | null> {
378
- const pda = deriveUserRecordPda(user);
379
- const info = await connection.getAccountInfo(pda);
380
- return info?.data ?? null;
381
- }
382
-
383
- // -----------------------------------------------------------------------------
384
- // Pay-rate & fee utilities (on-chain compatible)
385
- // -----------------------------------------------------------------------------
386
-
387
- export async function getAveragePayRate(
388
- connection: Connection,
389
- lookback: number = DEFAULT_PAY_RATE_LOOKBACK,
390
- ): Promise<bigint> {
391
- const program = getLiqsolCoreProgram(connection);
392
- const payRateHistoryPda = derivePayRateHistoryPda();
393
-
394
- try {
395
- const anyProgram = program as any;
396
- const payRateHistoryAccount = await anyProgram.account.payRateHistory.fetch(
397
- payRateHistoryPda,
398
- );
399
-
400
- const entries: any[] = payRateHistoryAccount.entries ?? [];
401
- const totalEntriesAdded = Number(
402
- payRateHistoryAccount.totalEntriesAdded ?? 0,
403
- );
404
- const currentIndex: number = payRateHistoryAccount.currentIndex ?? 0;
405
- const maxEntries: number =
406
- payRateHistoryAccount.maxEntries ?? entries.length;
407
-
408
- if (!entries.length) {
409
- return DEFAULT_AVERAGE_PAY_RATE;
410
- }
411
-
412
- const entriesToFetch = Math.min(lookback, maxEntries, entries.length);
413
-
414
- let idx: number;
415
- if (totalEntriesAdded === 0) {
416
- idx = 0;
417
- } else if (currentIndex === 0) {
418
- idx = maxEntries - 1;
419
- } else {
420
- idx = currentIndex - 1;
421
- }
422
-
423
- let sum = BigInt(0);
424
- let validCount = BigInt(0);
425
-
426
- for (let i = 0; i < entriesToFetch; i++) {
427
- const entry = entries[idx];
428
- if (entry && typeof entry.scaledRate !== 'undefined') {
429
- const rate = BigInt(entry.scaledRate.toString());
430
- if (rate > BigInt(0)) {
431
- sum += rate;
432
- validCount += BigInt(1);
433
- }
434
- }
435
-
436
- if (totalEntriesAdded === 0) {
437
- idx = (idx + 1) % maxEntries;
438
- } else {
439
- idx = idx === 0 ? maxEntries - 1 : idx - 1;
440
- }
441
- }
442
-
443
- if (validCount === BigInt(0)) {
444
- return DEFAULT_AVERAGE_PAY_RATE;
445
- }
446
-
447
- return sum / validCount;
448
- } catch (err) {
449
- // Fallback to default when history missing/unavailable
450
- return DEFAULT_AVERAGE_PAY_RATE;
451
- }
452
- }
453
- /**
454
- * On-chain fee formula:
455
- * fee = (average_pay_rate * 4 * deposit_amount_lamports) / 10^12
456
- */
457
- export function calculateExpectedFee(
458
- depositAmountLamports: BN,
459
- averagePayRate: BN,
460
- ): BN {
461
- return averagePayRate
462
- .mul(new BN(4))
463
- .mul(depositAmountLamports)
464
- .div(new BN(1_000_000_000_000)); // 10^12
465
- }
466
-
467
- /**
468
- * Convenience helper to preview how a deposit splits between user + bucket
469
- * and how much goes into the reserve, assuming the simple model:
470
- *
471
- * - userLiqSol = amount - fee + EPHEMERAL_RENT_EXEMPTION
472
- * - bucketLiqSol = fee
473
- * - reserveLamports = amount + EPHEMERAL_RENT_EXEMPTION
474
- */
475
- export function previewDepositEffects(params: {
476
- depositAmountLamports: BN;
477
- averagePayRate: BN;
478
- rentExemptionLamports?: number;
479
- }): {
480
- feeLamports: BN;
481
- userLiqSolLamports: BN;
482
- bucketLiqSolLamports: BN;
483
- reserveIncreaseLamports: BN;
484
- } {
485
- const { depositAmountLamports, averagePayRate } = params;
486
- const rent = new BN(
487
- params.rentExemptionLamports ?? EPHEMERAL_RENT_EXEMPTION,
488
- );
489
-
490
- const fee = calculateExpectedFee(depositAmountLamports, averagePayRate);
491
- const userLiqSol = depositAmountLamports.sub(fee).add(rent);
492
- const bucketLiqSol = fee;
493
- const reserveIncrease = depositAmountLamports.add(rent);
494
-
495
- return {
496
- feeLamports: fee,
497
- userLiqSolLamports: userLiqSol,
498
- bucketLiqSolLamports: bucketLiqSol,
499
- reserveIncreaseLamports: reserveIncrease,
500
- };
501
- }
502
-
503
242
  /**
504
243
  * ---------------------------------------------------------------------------
505
244
  * Outpost-specific helpers
506
245
  * ---------------------------------------------------------------------------
246
+ *
247
+ * This is the SDK equivalent of `deriveWirePdas` in capital-staking tests.
248
+ * It aggregates all PDAs / ATAs needed for Outpost pretokens + synd/desynd.
507
249
  */
508
250
  export interface OutpostAccounts {
509
251
  user: PublicKey;
510
252
 
511
- // Warrant / outpost
253
+ // Outpost / pretoken wiring
512
254
  globalState: PublicKey;
513
255
  poolAuthority: PublicKey;
514
256
  liqsolMint: PublicKey;
515
257
  liqsolPoolAta: PublicKey;
516
258
  userAta: PublicKey;
517
- wireReceipt: PublicKey;
518
- poolUserRecord: PublicKey;
519
- userUserRecord: PublicKey;
259
+ outpostAccount: PublicKey;
260
+ userPretokenRecord: PublicKey;
261
+
262
+ // Distribution / yield context (user_record keyed by token accounts)
520
263
  distributionState: PublicKey;
521
- payRateHistory: PublicKey;
522
264
  bucketAuthority: PublicKey;
523
265
  bucketTokenAccount: PublicKey;
524
- solBucket: PublicKey;
266
+ bucketUserRecord: PublicKey;
267
+ liqsolPoolUserRecord: PublicKey;
268
+ userUserRecord: PublicKey;
269
+
270
+ // Tranche / pricing
525
271
  trancheState: PublicKey;
526
- userWarrantRecord: PublicKey;
527
272
 
528
273
  // Chainlink
529
274
  chainLinkFeed: PublicKey;
530
275
  chainLinkProgram: PublicKey;
276
+
277
+ // Transfer hook extra accounts
278
+ extraAccountMetaList: PublicKey;
279
+
280
+ // New
281
+ pretokenPurchaseHistory: PublicKey;
282
+
283
+ // OPP (outpost protocol pipeline)
284
+ globalConfig: PublicKey;
285
+ oppEpochState: PublicKey;
286
+ pendingAttestations: PublicKey;
287
+ bridgeState: PublicKey;
531
288
  }
532
289
 
533
290
  export async function buildOutpostAccounts(
534
291
  connection: Connection,
535
292
  user: PublicKey,
293
+ pgs: SolanaProgramService,
536
294
  ): Promise<OutpostAccounts> {
537
- const globalState = deriveOutpostGlobalStatePda();
538
- const poolAuthority = deriveOutpostPoolAuthorityPda();
539
- const liqsolMint = deriveLiqsolMintPda();
540
- const distributionState = deriveDistributionStatePda();
541
- const payRateHistory = derivePayRateHistoryPda();
542
- const bucketAuthority = deriveBucketAuthorityPda();
543
- const solBucket = deriveSolBucketPda();
544
- const trancheState = deriveTrancheStatePda();
545
- const wireReceipt = deriveWireReceiptPda(user);
546
- const poolUserRecord = derivePoolUserRecordPda(poolAuthority);
547
- const userUserRecord = deriveUserUserRecordPda(user);
548
- const userWarrantRecord = deriveUserWarrantRecordPda(user);
549
-
295
+ const globalState = pgs.deriveOutpostGlobalStatePda();
296
+ const poolAuthority = pgs.deriveOutpostPoolAuthorityPda();
297
+ const liqsolMint = pgs.deriveLiqsolMintPda();
298
+ const distributionState = pgs.deriveDistributionStatePda();
299
+ const bucketAuthority = pgs.deriveBucketAuthorityPda();
300
+ const trancheState = pgs.deriveTrancheStatePda();
301
+
302
+ // Outpost / pretoken PDAs
303
+ const outpostAccount = pgs.deriveOutpostAccountPda(user);
304
+ const userPretokenRecord = pgs.deriveUserPretokenRecordPda(user);
305
+
306
+ // ATAs
550
307
  const liqsolPoolAta = await getAssociatedTokenAddress(
551
308
  liqsolMint,
552
309
  poolAuthority,
@@ -564,25 +321,44 @@ export async function buildOutpostAccounts(
564
321
  const userAta = await getAssociatedTokenAddress(
565
322
  liqsolMint,
566
323
  user,
567
- false,
324
+ true, // allow off curve in case squadsx vault
568
325
  TOKEN_2022_PROGRAM_ID,
569
326
  );
570
327
 
328
+ // user_record PDAs keyed by TOKEN ACCOUNTS (matches capital-staking)
329
+ const bucketUserRecord = pgs.deriveUserRecordPda(bucketTokenAccount);
330
+ const liqsolPoolUserRecord = pgs.deriveUserRecordPda(liqsolPoolAta);
331
+ const userUserRecord = pgs.deriveUserRecordPda(userAta);
332
+
333
+ const extraAccountMetaList = pgs.deriveExtraAccountMetaListPda(liqsolMint);
334
+
335
+ const pretokenPurchaseHistory = pgs.derivePretokenPurchaseHistoryPda(poolAuthority);
336
+
337
+ // OPP (outpost protocol pipeline)
338
+ const globalConfig = pgs.deriveGlobalConfigPda();
339
+ const oppEpochState = pgs.deriveOppEpochStatePda();
340
+ const epochNumber = await pgs.fetchOppEpochNumber(connection);
341
+ const pendingAttestations = pgs.derivePendingAttestationsPda(epochNumber);
342
+ const bridgeState = pgs.deriveOppBridgeStatePda();
343
+
571
344
  // Chainlink program feeds
572
345
  let chainLinkFeed = CHAINLINK_FEED;
573
- let chainLinkProgram = CHAINLINK_PROGRAM
346
+ let chainLinkProgram = CHAINLINK_PROGRAM;
574
347
 
575
348
  try {
576
- const program = getLiqsolCoreProgram(connection);
577
- const ts: TrancheState = await program.account.trancheState.fetch(trancheState);
349
+ const program = pgs.getProgram('liqsolCore');
350
+ const ts: TrancheState =
351
+ await program.account.trancheState.fetch(trancheState);
352
+
353
+ // If on-chain config overrides are present, prefer those.
578
354
  if (ts.chainlinkFeed && ts.chainlinkProgram) {
579
355
  chainLinkFeed = ts.chainlinkFeed as PublicKey;
580
356
  chainLinkProgram = ts.chainlinkProgram as PublicKey;
581
357
  }
582
358
  } catch {
583
359
  // If trancheState isn't initialized yet, we fall back to the constants.
584
- // In that case, pretoken instructions will still fail, which is the correct
585
- // behavior until admin initializes TrancheState on-chain.
360
+ // In that case, purchase instructions will still fail, which is the
361
+ // correct behavior until admin initializes TrancheState on-chain.
586
362
  }
587
363
 
588
364
  void connection; // reserved for future extra validation
@@ -594,21 +370,25 @@ export async function buildOutpostAccounts(
594
370
  liqsolMint,
595
371
  liqsolPoolAta,
596
372
  userAta,
597
- wireReceipt,
598
- poolUserRecord,
599
- userUserRecord,
373
+ outpostAccount,
374
+ userPretokenRecord,
600
375
  distributionState,
601
- payRateHistory,
602
376
  bucketAuthority,
603
377
  bucketTokenAccount,
604
- solBucket,
378
+ bucketUserRecord,
379
+ liqsolPoolUserRecord,
380
+ userUserRecord,
605
381
  trancheState,
606
- userWarrantRecord,
607
382
  chainLinkFeed,
608
383
  chainLinkProgram,
384
+ extraAccountMetaList,
385
+ pretokenPurchaseHistory,
386
+ globalConfig,
387
+ oppEpochState,
388
+ pendingAttestations,
389
+ bridgeState,
609
390
  };
610
391
  }
611
-
612
392
  // -----------------------------------------------------------------------------
613
393
  // Epoch / scheduling helpers
614
394
  // -----------------------------------------------------------------------------
@@ -784,3 +564,24 @@ export interface ScheduleConfig {
784
564
  late?: number; // fraction of epoch, default 0.90
785
565
  }
786
566
 
567
+ export function ceilDiv(n: BN, d: BN): BN {
568
+ if (d.isZero()) {
569
+ throw new Error('Division by zero in ceilDiv');
570
+ }
571
+ return n.add(d.subn(1)).div(d);
572
+ }
573
+
574
+ export function normalizeToBigInt(x: any): bigint {
575
+ if (typeof x === 'bigint') return x;
576
+ if (x != null && typeof x === 'object' && 'toString' in x) return BigInt(x.toString());
577
+ if (typeof x === 'number') return BigInt(x);
578
+ throw new Error(`normalizeToBigInt: unsupported type ${typeof x}`);
579
+ }
580
+
581
+ export const safeFetch = async <T>(promise: Promise<T>, label?: string): Promise<T | null> => {
582
+ try { return await promise; }
583
+ catch (err) {
584
+ console.error(`Safe Fetch Failed${label ? ` (${label})` : ''}:`,err);
585
+ return null;
586
+ }
587
+ };