@wireio/stake 1.1.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/lib/stake.browser.js +12958 -6707
  2. package/lib/stake.browser.js.map +1 -1
  3. package/lib/stake.d.ts +7612 -639
  4. package/lib/stake.js +13324 -7073
  5. package/lib/stake.js.map +1 -1
  6. package/lib/stake.m.js +12958 -6707
  7. package/lib/stake.m.js.map +1 -1
  8. package/package.json +4 -3
  9. package/src/assets/solana/{idl → devnet/idl}/liqsol_core.json +15 -3
  10. package/src/assets/solana/{types → devnet/types}/liqsol_core.ts +15 -3
  11. package/src/assets/solana/mainnet/idl/liqsol_core.json +6178 -0
  12. package/src/assets/solana/mainnet/idl/liqsol_token.json +183 -0
  13. package/src/assets/solana/mainnet/idl/transfer_hook.json +197 -0
  14. package/src/assets/solana/mainnet/idl/validator_leaderboard.json +574 -0
  15. package/src/assets/solana/mainnet/types/liqsol_core.ts +6184 -0
  16. package/src/assets/solana/mainnet/types/liqsol_token.ts +189 -0
  17. package/src/assets/solana/mainnet/types/transfer_hook.ts +203 -0
  18. package/src/assets/solana/mainnet/types/validator_leaderboard.ts +580 -0
  19. package/src/networks/ethereum/clients/convert.client.ts +30 -1
  20. package/src/networks/ethereum/clients/receipt.client.ts +81 -3
  21. package/src/networks/ethereum/clients/stake.client.ts +1 -0
  22. package/src/networks/ethereum/contract.ts +260 -222
  23. package/src/networks/ethereum/ethereum.ts +35 -30
  24. package/src/networks/ethereum/types.ts +17 -2
  25. package/src/networks/solana/clients/deposit.client.ts +294 -68
  26. package/src/networks/solana/clients/distribution.client.ts +15 -20
  27. package/src/networks/solana/clients/leaderboard.client.ts +11 -13
  28. package/src/networks/solana/clients/outpost.client.ts +13 -19
  29. package/src/networks/solana/clients/token.client.ts +13 -15
  30. package/src/networks/solana/constants.ts +44 -285
  31. package/src/networks/solana/program.ts +382 -28
  32. package/src/networks/solana/solana.ts +315 -92
  33. package/src/networks/solana/types.ts +4 -4
  34. package/src/networks/solana/utils.ts +16 -301
  35. package/src/staker.ts +10 -2
  36. package/src/types.ts +19 -6
  37. /package/src/assets/ethereum/{ABI → mainnet}/common/Base58.sol/Base58.dbg.json +0 -0
  38. /package/src/assets/ethereum/{ABI → mainnet}/common/Base58.sol/Base58.json +0 -0
  39. /package/src/assets/ethereum/{ABI → mainnet}/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +0 -0
  40. /package/src/assets/ethereum/{ABI → mainnet}/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +0 -0
  41. /package/src/assets/ethereum/{ABI → mainnet}/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +0 -0
  42. /package/src/assets/ethereum/{ABI → mainnet}/common/RestrictedCallers.sol/RestrictedCallers.json +0 -0
  43. /package/src/assets/ethereum/{ABI → mainnet}/common/iodata.sol/iodata.dbg.json +0 -0
  44. /package/src/assets/ethereum/{ABI → mainnet}/common/iodata.sol/iodata.json +0 -0
  45. /package/src/assets/ethereum/{ABI → mainnet}/common/iodata_util.sol/iodata_util.dbg.json +0 -0
  46. /package/src/assets/ethereum/{ABI → mainnet}/common/iodata_util.sol/iodata_util.json +0 -0
  47. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_data.sol/sysio_data.dbg.json +0 -0
  48. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_data.sol/sysio_data.json +0 -0
  49. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_errors.sol/sysio_errors.dbg.json +0 -0
  50. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_errors.sol/sysio_errors.json +0 -0
  51. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_merkle.sol/sysio_merkle.dbg.json +0 -0
  52. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_merkle.sol/sysio_merkle.json +0 -0
  53. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_name.sol/sysio_name.dbg.json +0 -0
  54. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_name.sol/sysio_name.json +0 -0
  55. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +0 -0
  56. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_pubkey.sol/sysio_pubkey.json +0 -0
  57. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_read.sol/sysio_read.dbg.json +0 -0
  58. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_read.sol/sysio_read.json +0 -0
  59. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_tester.sol/SysioTester.dbg.json +0 -0
  60. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_tester.sol/SysioTester.json +0 -0
  61. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_verify.sol/sysio_verify.dbg.json +0 -0
  62. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_verify.sol/sysio_verify.json +0 -0
  63. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_write.sol/sysio_write.dbg.json +0 -0
  64. /package/src/assets/ethereum/{ABI → mainnet}/common/sysio_write.sol/sysio_write.json +0 -0
  65. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/BeaconState.sol/BeaconState.dbg.json +0 -0
  66. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/BeaconState.sol/BeaconState.json +0 -0
  67. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/DepositManager.sol/DepositManager.dbg.json +0 -0
  68. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/DepositManager.sol/DepositManager.json +0 -0
  69. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +0 -0
  70. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +0 -0
  71. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +0 -0
  72. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IAccounting.json +0 -0
  73. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +0 -0
  74. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IDepositContract.json +0 -0
  75. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +0 -0
  76. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IDepositManager.json +0 -0
  77. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +0 -0
  78. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +0 -0
  79. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +0 -0
  80. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IRewardsERC20.json +0 -0
  81. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +0 -0
  82. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +0 -0
  83. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +0 -0
  84. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IStakingModule.json +0 -0
  85. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +0 -0
  86. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +0 -0
  87. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +0 -0
  88. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +0 -0
  89. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +0 -0
  90. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthCommon.sol/LiqEthCommon.json +0 -0
  91. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +0 -0
  92. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/LiqEthManaged.sol/LiqEthManaged.json +0 -0
  93. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +0 -0
  94. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/RewardsERC20.sol/RewardsERC20Upgradeable.json +0 -0
  95. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +0 -0
  96. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +0 -0
  97. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/Yield.sol/YieldOracle.dbg.json +0 -0
  98. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/Yield.sol/YieldOracle.json +0 -0
  99. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/accounting.sol/Accounting.dbg.json +0 -0
  100. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/accounting.sol/Accounting.json +0 -0
  101. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/liqEth.sol/LiqEthToken.dbg.json +0 -0
  102. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/liqEth.sol/LiqEthToken.json +0 -0
  103. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/stakingModule.sol/StakingModule.dbg.json +0 -0
  104. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/stakingModule.sol/StakingModule.json +0 -0
  105. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +0 -0
  106. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +0 -0
  107. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +0 -0
  108. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/withdrawalVault.sol/Uint64BE.json +0 -0
  109. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +0 -0
  110. /package/src/assets/ethereum/{ABI → mainnet}/liqEth/withdrawalVault.sol/WithdrawalVault.json +0 -0
  111. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Aggregator.sol/Aggregator.json +0 -0
  112. /package/src/assets/ethereum/{ABI → mainnet}/outpost/BAR.sol/BAR.dbg.json +0 -0
  113. /package/src/assets/ethereum/{ABI → mainnet}/outpost/BAR.sol/BAR.json +0 -0
  114. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Depositor.sol/Depositor.dbg.json +0 -0
  115. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Depositor.sol/Depositor.json +0 -0
  116. /package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +0 -0
  117. /package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +0 -0
  118. /package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +0 -0
  119. /package/src/assets/ethereum/{ABI → mainnet}/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +0 -0
  120. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPP.sol/OPP.dbg.json +0 -0
  121. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPP.sol/OPP.json +0 -0
  122. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPP.dbg.json +0 -0
  123. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPP.json +0 -0
  124. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +0 -0
  125. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPEndpoint.json +0 -0
  126. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPInbound.dbg.json +0 -0
  127. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPInbound.json +0 -0
  128. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +0 -0
  129. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPReceiver.json +0 -0
  130. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPSender.dbg.json +0 -0
  131. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/IOPPSender.json +0 -0
  132. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/OPPCommon.dbg.json +0 -0
  133. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPCommon.sol/OPPCommon.json +0 -0
  134. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +0 -0
  135. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpoint.sol/OPPEndpoint.json +0 -0
  136. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +0 -0
  137. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +0 -0
  138. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +0 -0
  139. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +0 -0
  140. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPErrors.sol/OPPErrors.dbg.json +0 -0
  141. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPErrors.sol/OPPErrors.json +0 -0
  142. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPInbound.sol/OPPInbound.dbg.json +0 -0
  143. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPInbound.sol/OPPInbound.json +0 -0
  144. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +0 -0
  145. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPReceiver.sol/OPPReceiver.json +0 -0
  146. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPSender.sol/OPPSender.dbg.json +0 -0
  147. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OPPSender.sol/OPPSender.json +0 -0
  148. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +0 -0
  149. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostErrors.sol/OutpostErrors.json +0 -0
  150. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +0 -0
  151. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManaged.sol/OutpostManaged.json +0 -0
  152. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManager.sol/OutpostManager.dbg.json +0 -0
  153. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManager.sol/OutpostManager.json +0 -0
  154. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +0 -0
  155. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +0 -0
  156. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +0 -0
  157. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostManager.json +0 -0
  158. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +0 -0
  159. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +0 -0
  160. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +0 -0
  161. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +0 -0
  162. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +0 -0
  163. /package/src/assets/ethereum/{ABI → mainnet}/outpost/OutpostOwnable.sol/OutpostOwnable.json +0 -0
  164. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Pool.sol/Pool.dbg.json +0 -0
  165. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Pool.sol/Pool.json +0 -0
  166. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Pretoken.sol/Pretoken.dbg.json +0 -0
  167. /package/src/assets/ethereum/{ABI → mainnet}/outpost/Pretoken.sol/Pretoken.json +0 -0
  168. /package/src/assets/ethereum/{ABI → mainnet}/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +0 -0
  169. /package/src/assets/ethereum/{ABI → mainnet}/outpost/ReceiptNFT.sol/ReceiptNFT.json +0 -0
  170. /package/src/assets/ethereum/{ABI → mainnet}/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +0 -0
  171. /package/src/assets/ethereum/{ABI → mainnet}/outpost/interfaces/IPretoken.sol/IPretoken.json +0 -0
  172. /package/src/assets/ethereum/{ABI → mainnet}/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +0 -0
  173. /package/src/assets/ethereum/{ABI → mainnet}/outpost/interfaces/IWarrant.sol/IWarrant.json +0 -0
  174. /package/src/assets/ethereum/{ABI → mainnet}/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +0 -0
  175. /package/src/assets/ethereum/{ABI → mainnet}/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +0 -0
  176. /package/src/assets/ethereum/{ABI → mainnet}/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +0 -0
  177. /package/src/assets/ethereum/{ABI → mainnet}/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +0 -0
  178. /package/src/assets/ethereum/{ABI → mainnet}/token/ERC1155Token.sol/ERC1155Token.dbg.json +0 -0
  179. /package/src/assets/ethereum/{ABI → mainnet}/token/ERC1155Token.sol/ERC1155Token.json +0 -0
  180. /package/src/assets/ethereum/{ABI → mainnet}/token/ERC20Token.sol/ERC20Token.dbg.json +0 -0
  181. /package/src/assets/ethereum/{ABI → mainnet}/token/ERC20Token.sol/ERC20Token.json +0 -0
  182. /package/src/assets/ethereum/{ABI → mainnet}/token/ERC721Token.sol/ERC721Token.dbg.json +0 -0
  183. /package/src/assets/ethereum/{ABI → mainnet}/token/ERC721Token.sol/ERC721Token.json +0 -0
  184. /package/src/assets/solana/{idl → devnet/idl}/liqsol_token.json +0 -0
  185. /package/src/assets/solana/{idl → devnet/idl}/transfer_hook.json +0 -0
  186. /package/src/assets/solana/{idl → devnet/idl}/validator_leaderboard.json +0 -0
  187. /package/src/assets/solana/{types → devnet/types}/liqsol_token.ts +0 -0
  188. /package/src/assets/solana/{types → devnet/types}/transfer_hook.ts +0 -0
  189. /package/src/assets/solana/{types → devnet/types}/validator_leaderboard.ts +0 -0
@@ -1,47 +1,401 @@
1
+ // src/networks/solana/programs.ts
1
2
  import { AnchorProvider, Program } from '@coral-xyz/anchor';
3
+ import { ChainID, SolChainID } from '@wireio/core';
4
+ import { PublicKey, StakeProgram } from '@solana/web3.js';
2
5
 
3
- import liqsolCoreJson from '../../assets/solana/idl/liqsol_core.json';
4
- import liqsolTokenJson from '../../assets/solana/idl/liqsol_token.json';
5
- import validatorLeaderboardJson from '../../assets/solana/idl/validator_leaderboard.json';
6
+ import {
7
+ PDA_SEEDS,
8
+ getProgramIds,
9
+ SolanaProgramIds,
10
+ } from './constants';
6
11
 
7
- import type { LiqsolCore } from '../../assets/solana/types/liqsol_core';
8
- import type { LiqsolToken } from '../../assets/solana/types/liqsol_token';
9
- import type { ValidatorLeaderboard } from '../../assets/solana/types/validator_leaderboard';
12
+ // Mainnet IDLs
13
+ import liqsolCoreMainnetJson from '../../assets/solana/mainnet/idl/liqsol_core.json';
14
+ import liqsolTokenMainnetJson from '../../assets/solana/mainnet/idl/liqsol_token.json';
15
+ import validatorLeaderboardMainnetJson from '../../assets/solana/mainnet/idl/validator_leaderboard.json';
10
16
 
11
- import { PROGRAM_IDS } from './constants';
17
+ // Devnet IDLs
18
+ import liqsolCoreDevnetJson from '../../assets/solana/devnet/idl/liqsol_core.json';
19
+ import liqsolTokenDevnetJson from '../../assets/solana/devnet/idl/liqsol_token.json';
20
+ import validatorLeaderboardDevnetJson from '../../assets/solana/devnet/idl/validator_leaderboard.json';
21
+
22
+ // Mainnet types
23
+ import type { LiqsolCore as LiqSolCoreMainnet } from '../../assets/solana/mainnet/types/liqsol_core';
24
+ import type { LiqsolToken as LiqsolTokenMainnet } from '../../assets/solana/mainnet/types/liqsol_token';
25
+ import type { ValidatorLeaderboard as ValidatorLeaderboardMainnet } from '../../assets/solana/mainnet/types/validator_leaderboard';
26
+
27
+ // Devnet types
28
+ import type { LiqsolCore as LiqSolCoreDevnet } from '../../assets/solana/devnet/types/liqsol_core';
29
+ import type { LiqsolToken as LiqsolTokenDevnet } from '../../assets/solana/devnet/types/liqsol_token';
30
+ import type { ValidatorLeaderboard as ValidatorLeaderboardDevnet } from '../../assets/solana/devnet/types/validator_leaderboard';
31
+
32
+ // “Client” IDLs = mainnet OR devnet, plus `address` field we add at runtime
33
+
34
+ export type LiqsolCoreClientIdl =
35
+ (LiqSolCoreMainnet | LiqSolCoreDevnet) & { address: string };
36
+
37
+ export type LiqsolTokenClientIdl =
38
+ (LiqsolTokenMainnet | LiqsolTokenDevnet) & { address: string };
39
+
40
+ export type ValidatorLeaderboardClientIdl =
41
+ (ValidatorLeaderboardMainnet | ValidatorLeaderboardDevnet) & { address: string };
42
+
43
+ export type SolanaProgramIdlMap = {
44
+ liqsolCore: LiqsolCoreClientIdl;
45
+ liqsolToken: LiqsolTokenClientIdl;
46
+ validatorLeaderboard: ValidatorLeaderboardClientIdl;
47
+ };
48
+
49
+ export type SolanaProgramName = keyof SolanaProgramIdlMap;
12
50
 
13
51
  type Entry<IDL> = {
14
52
  idl: IDL & { address: string };
15
53
  address: string;
16
54
  };
17
55
 
18
- const PROGRAMS = {
19
- liqsolCore: {
20
- idl: liqsolCoreJson,
21
- address: PROGRAM_IDS.LIQSOL_CORE.toBase58(),
22
- } as Entry<LiqsolCore>,
23
- liqsolToken: {
24
- idl: liqsolTokenJson,
25
- address: PROGRAM_IDS.LIQSOL_TOKEN.toBase58(),
26
- } as Entry<LiqsolToken>,
27
- validatorLeaderboard: {
28
- idl: validatorLeaderboardJson,
29
- address: PROGRAM_IDS.VALIDATOR_LEADERBOARD.toBase58(),
30
- } as Entry<ValidatorLeaderboard>,
56
+ const PROGRAMS_BY_CHAIN = {
57
+ [SolChainID.Mainnet]: {
58
+ liqsolCore: {
59
+ idl: liqsolCoreMainnetJson,
60
+ address: liqsolCoreMainnetJson.address,
61
+ } as Entry<LiqSolCoreMainnet>,
62
+ liqsolToken: {
63
+ idl: liqsolTokenMainnetJson,
64
+ address: liqsolTokenMainnetJson.address,
65
+ } as Entry<LiqsolTokenMainnet>,
66
+ validatorLeaderboard: {
67
+ idl: validatorLeaderboardMainnetJson,
68
+ address: validatorLeaderboardMainnetJson.address,
69
+ } as Entry<ValidatorLeaderboardMainnet>,
70
+ },
71
+ [SolChainID.Devnet]: {
72
+ liqsolCore: {
73
+ idl: liqsolCoreDevnetJson,
74
+ address: liqsolCoreDevnetJson.address,
75
+ } as Entry<LiqSolCoreDevnet>,
76
+ liqsolToken: {
77
+ idl: liqsolTokenDevnetJson,
78
+ address: liqsolTokenDevnetJson.address,
79
+ } as Entry<LiqsolTokenDevnet>,
80
+ validatorLeaderboard: {
81
+ idl: validatorLeaderboardDevnetJson,
82
+ address: validatorLeaderboardDevnetJson.address,
83
+ } as Entry<ValidatorLeaderboardDevnet>,
84
+ },
31
85
  } as const;
32
86
 
33
- export type SolanaProgramName = keyof typeof PROGRAMS;
34
-
35
87
  export class SolanaProgramService {
36
- constructor(private provider: AnchorProvider) { }
88
+ private readonly ids: SolanaProgramIds;
89
+ private readonly programs: (typeof PROGRAMS_BY_CHAIN)[SolChainID.Mainnet];
90
+
91
+ constructor(
92
+ private provider: AnchorProvider,
93
+ private chainId: ChainID,
94
+ ) {
95
+ const solChain = chainId as SolChainID;
96
+ this.ids = getProgramIds(solChain);
97
+ const programs = PROGRAMS_BY_CHAIN[solChain];
98
+ if (!programs) {
99
+ throw new Error(`Unsupported Solana chainId=${chainId}`);
100
+ }
101
+ this.programs = programs;
102
+ }
37
103
 
38
- getProgram<K extends SolanaProgramName>(name: K): Program<(typeof PROGRAMS)[K]['idl']> {
39
- const { idl, address } = PROGRAMS[name];
40
- const idlWithAddr = { ...idl, address };
41
- return new Program(idlWithAddr, this.provider) as Program<(typeof PROGRAMS)[K]['idl']>;
104
+ /** Expose per-chain program IDs */
105
+ get programIds(): SolanaProgramIds {
106
+ return this.ids;
107
+ }
108
+
109
+ // Generic getProgram, typed by name → union IDL
110
+ getProgram<K extends SolanaProgramName>(
111
+ name: K,
112
+ ): Program<SolanaProgramIdlMap[K]> {
113
+ const { idl, address } = this.programs[name];
114
+ const idlWithAddr = { ...(idl as any), address } as SolanaProgramIdlMap[K];
115
+
116
+ return new Program(idlWithAddr, this.provider) as Program<SolanaProgramIdlMap[K]>;
42
117
  }
43
118
 
44
119
  listProgramNames(): SolanaProgramName[] {
45
- return Object.keys(PROGRAMS) as SolanaProgramName[];
120
+ return Object.keys(this.programs) as SolanaProgramName[];
121
+ }
122
+
123
+ get PROGRAM_IDS(): SolanaProgramIds {
124
+ return this.ids;
125
+ }
126
+
127
+
128
+ // ---------------------------------------------------------------------
129
+ // PDA helpers (instance methods, no ids passed in)
130
+ // ---------------------------------------------------------------------
131
+
132
+ // GLOBAL CONFIG
133
+ deriveGlobalConfigPda(): PublicKey {
134
+ return PublicKey.findProgramAddressSync(
135
+ [Buffer.from(PDA_SEEDS.GLOBAL_CONFIG)],
136
+ this.ids.LIQSOL_CORE,
137
+ )[0];
138
+ }
139
+
140
+ // CORE / DISTRIBUTION / DEPOSIT
141
+
142
+ deriveLiqsolMintPda(): PublicKey {
143
+ return PublicKey.findProgramAddressSync(
144
+ [Buffer.from(PDA_SEEDS.LIQSOL_MINT)],
145
+ this.ids.LIQSOL_TOKEN,
146
+ )[0];
147
+ }
148
+
149
+ deriveLiqsolMintAuthorityPda(): PublicKey {
150
+ return PublicKey.findProgramAddressSync(
151
+ [Buffer.from(PDA_SEEDS.LIQSOL_MINT_AUTHORITY)],
152
+ this.ids.LIQSOL_TOKEN,
153
+ )[0];
154
+ }
155
+
156
+ deriveDepositAuthorityPda(): PublicKey {
157
+ return PublicKey.findProgramAddressSync(
158
+ [Buffer.from(PDA_SEEDS.DEPOSIT_AUTHORITY)],
159
+ this.ids.LIQSOL_CORE,
160
+ )[0];
161
+ }
162
+
163
+ deriveVaultPda(): PublicKey {
164
+ return PublicKey.findProgramAddressSync(
165
+ [Buffer.from(PDA_SEEDS.VAULT)],
166
+ this.ids.LIQSOL_CORE,
167
+ )[0];
168
+ }
169
+
170
+ deriveReservePoolPda(): PublicKey {
171
+ return PublicKey.findProgramAddressSync(
172
+ [Buffer.from(PDA_SEEDS.RESERVE_POOL)],
173
+ this.ids.LIQSOL_CORE,
174
+ )[0];
175
+ }
176
+
177
+ deriveStakeControllerStatePda(): PublicKey {
178
+ return PublicKey.findProgramAddressSync(
179
+ [Buffer.from(PDA_SEEDS.STAKE_CONTROLLER_STATE)],
180
+ this.ids.LIQSOL_CORE,
181
+ )[0];
182
+ }
183
+
184
+ derivePayoutStatePda(): PublicKey {
185
+ return PublicKey.findProgramAddressSync(
186
+ [Buffer.from(PDA_SEEDS.PAYOUT_STATE)],
187
+ this.ids.LIQSOL_CORE,
188
+ )[0];
189
+ }
190
+
191
+ deriveBucketAuthorityPda(): PublicKey {
192
+ return PublicKey.findProgramAddressSync(
193
+ [Buffer.from(PDA_SEEDS.BUCKET_AUTHORITY)],
194
+ this.ids.LIQSOL_CORE,
195
+ )[0];
196
+ }
197
+
198
+ deriveDistributionStatePda(): PublicKey {
199
+ return PublicKey.findProgramAddressSync(
200
+ [Buffer.from(PDA_SEEDS.DISTRIBUTION_STATE)],
201
+ this.ids.LIQSOL_CORE,
202
+ )[0];
203
+ }
204
+
205
+ /**
206
+ * user_record PDA (keyed by USER wallet)
207
+ */
208
+ deriveUserRecordPda(user: PublicKey): PublicKey {
209
+ return PublicKey.findProgramAddressSync(
210
+ [Buffer.from(PDA_SEEDS.USER_RECORD), user.toBuffer()],
211
+ this.ids.LIQSOL_CORE,
212
+ )[0];
213
+ }
214
+
215
+ derivePayRateHistoryPda(): PublicKey {
216
+ return PublicKey.findProgramAddressSync(
217
+ [Buffer.from(PDA_SEEDS.PAY_RATE_HISTORY)],
218
+ this.ids.LIQSOL_CORE,
219
+ )[0];
220
+ }
221
+
222
+ // --- Withdraw module / receipts ---
223
+
224
+ deriveWithdrawGlobalPda(): PublicKey {
225
+ return PublicKey.findProgramAddressSync(
226
+ [Buffer.from(PDA_SEEDS.WITHDRAW_GLOBAL)],
227
+ this.ids.LIQSOL_CORE,
228
+ )[0];
229
+ }
230
+
231
+ deriveStakeAllocationStatePda(): PublicKey {
232
+ return PublicKey.findProgramAddressSync(
233
+ [Buffer.from(PDA_SEEDS.STAKE_ALLOCATION_STATE)],
234
+ this.ids.LIQSOL_CORE,
235
+ )[0];
236
+ }
237
+
238
+ deriveStakeMetricsPda(): PublicKey {
239
+ return PublicKey.findProgramAddressSync(
240
+ [Buffer.from(PDA_SEEDS.STAKE_METRICS)],
241
+ this.ids.LIQSOL_CORE,
242
+ )[0];
243
+ }
244
+
245
+ deriveMaintenanceLedgerPda(): PublicKey {
246
+ return PublicKey.findProgramAddressSync(
247
+ [Buffer.from(PDA_SEEDS.MAINTENANCE_LEDGER)],
248
+ this.ids.LIQSOL_CORE,
249
+ )[0];
250
+ }
251
+
252
+ deriveWithdrawMintAuthorityPda(): PublicKey {
253
+ return PublicKey.findProgramAddressSync(
254
+ [Buffer.from(PDA_SEEDS.WITHDRAW_MINT_AUTHORITY)],
255
+ this.ids.LIQSOL_CORE,
256
+ )[0];
257
+ }
258
+
259
+ deriveWithdrawMintMetadataPda(): PublicKey {
260
+ return PublicKey.findProgramAddressSync(
261
+ [Buffer.from(PDA_SEEDS.MINT_METADATA)],
262
+ this.ids.LIQSOL_CORE,
263
+ )[0];
264
+ }
265
+
266
+ /**
267
+ * NFT mint for withdrawal receipt, derived from nextReceiptId.
268
+ */
269
+ deriveWithdrawNftMintPda(receiptId: bigint | number): PublicKey {
270
+ const receiptIdBytes = Buffer.alloc(8);
271
+ const asBigInt =
272
+ typeof receiptId === 'bigint'
273
+ ? receiptId
274
+ : BigInt(receiptId.toString());
275
+ receiptIdBytes.writeBigUInt64LE(asBigInt);
276
+ return PublicKey.findProgramAddressSync(
277
+ [Buffer.from(PDA_SEEDS.WITHDRAW_MINT), receiptIdBytes],
278
+ this.ids.LIQSOL_CORE,
279
+ )[0];
280
+ }
281
+
282
+ deriveLiqReceiptDataPda(nftMint: PublicKey): PublicKey {
283
+ return PublicKey.findProgramAddressSync(
284
+ [Buffer.from(PDA_SEEDS.LIQ_RECEIPT_DATA), nftMint.toBuffer()],
285
+ this.ids.LIQSOL_CORE,
286
+ )[0];
287
+ }
288
+
289
+ // --- Validator leaderboard ---
290
+
291
+ deriveLeaderboardStatePda(): PublicKey {
292
+ return PublicKey.findProgramAddressSync(
293
+ [Buffer.from(PDA_SEEDS.LEADERBOARD_STATE)],
294
+ this.ids.VALIDATOR_LEADERBOARD,
295
+ )[0];
296
+ }
297
+
298
+ deriveValidatorRecordPda(voteAccount: PublicKey): PublicKey {
299
+ return PublicKey.findProgramAddressSync(
300
+ [Buffer.from(PDA_SEEDS.VALIDATOR_RECORD), voteAccount.toBuffer()],
301
+ this.ids.VALIDATOR_LEADERBOARD,
302
+ )[0];
303
+ }
304
+
305
+ deriveStakeControllerVaultPda(): PublicKey {
306
+ return PublicKey.findProgramAddressSync(
307
+ [Buffer.from(PDA_SEEDS.VAULT)],
308
+ this.ids.LIQSOL_CORE,
309
+ )[0];
310
+ }
311
+
312
+ // --- Outpost / pretokens ---
313
+
314
+ deriveOutpostGlobalStatePda(): PublicKey {
315
+ return PublicKey.findProgramAddressSync(
316
+ [Buffer.from(PDA_SEEDS.OUTPOST_GLOBAL_STATE)],
317
+ this.ids.LIQSOL_CORE,
318
+ )[0];
319
+ }
320
+
321
+ deriveOutpostPoolAuthorityPda(): PublicKey {
322
+ return PublicKey.findProgramAddressSync(
323
+ [Buffer.from(PDA_SEEDS.LIQSOL_POOL)],
324
+ this.ids.LIQSOL_CORE,
325
+ )[0];
326
+ }
327
+
328
+ deriveOutpostAccountPda(user: PublicKey): PublicKey {
329
+ return PublicKey.findProgramAddressSync(
330
+ [Buffer.from(PDA_SEEDS.OUTPOST_ACCOUNT), user.toBuffer()],
331
+ this.ids.LIQSOL_CORE,
332
+ )[0];
333
+ }
334
+
335
+ deriveUserPretokenRecordPda(user: PublicKey): PublicKey {
336
+ return PublicKey.findProgramAddressSync(
337
+ [Buffer.from(PDA_SEEDS.USER_PRETOKEN_RECORD), user.toBuffer()],
338
+ this.ids.LIQSOL_CORE,
339
+ )[0];
340
+ }
341
+
342
+ deriveTrancheStatePda(): PublicKey {
343
+ return PublicKey.findProgramAddressSync(
344
+ [Buffer.from(PDA_SEEDS.TRANCHE_STATE)],
345
+ this.ids.LIQSOL_CORE,
346
+ )[0];
347
+ }
348
+
349
+ derivePriceHistoryPda(): PublicKey {
350
+ return PublicKey.findProgramAddressSync(
351
+ [Buffer.from(PDA_SEEDS.PRICE_HISTORY)],
352
+ this.ids.LIQSOL_CORE,
353
+ )[0];
354
+ }
355
+
356
+ // --- BAR (bonded actor roles) ---
357
+
358
+ deriveBarConfigPda(): PublicKey {
359
+ return PublicKey.findProgramAddressSync(
360
+ [Buffer.from(PDA_SEEDS.BAR_STATE_SEED)],
361
+ this.ids.LIQSOL_CORE,
362
+ )[0];
363
+ }
364
+
365
+ deriveBondLevelPda(bondLevelId: number[]): PublicKey {
366
+ return PublicKey.findProgramAddressSync(
367
+ [Buffer.from(PDA_SEEDS.BOND_LEVEL_SEED), Buffer.from(bondLevelId)],
368
+ this.ids.LIQSOL_CORE,
369
+ )[0];
370
+ }
371
+
372
+ deriveBondedActorPda(actor: PublicKey): PublicKey {
373
+ return PublicKey.findProgramAddressSync(
374
+ [Buffer.from(PDA_SEEDS.BONDED_ACTOR_SEED), actor.toBuffer()],
375
+ this.ids.LIQSOL_CORE,
376
+ )[0];
377
+ }
378
+
379
+ // --- Transfer-hook extra metas ---
380
+
381
+ deriveExtraAccountMetaListPda(liqsolMint: PublicKey): PublicKey {
382
+ return PublicKey.findProgramAddressSync(
383
+ [Buffer.from(PDA_SEEDS.EXTRA_ACCOUNT_METAS), liqsolMint.toBuffer()],
384
+ this.ids.TRANSFER_HOOK,
385
+ )[0];
386
+ }
387
+
388
+ // --- Ephemeral stake address (per-deposit) ---
389
+
390
+ /**
391
+ * Ephemeral stake account address used per-deposit.
392
+ * On-chain convention: seed = `ephemeral_<u32>` under StakeProgram.programId.
393
+ */
394
+ async deriveEphemeralStakeAddress(
395
+ user: PublicKey,
396
+ seed: number,
397
+ ): Promise<PublicKey> {
398
+ const seedStr = `ephemeral_${seed}`;
399
+ return PublicKey.createWithSeed(user, seedStr, StakeProgram.programId);
46
400
  }
47
401
  }