@wireio/stake 2.7.4 → 3.0.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.
- package/README.md +34 -15
- package/lib/stake.browser.js +50561 -13484
- package/lib/stake.browser.js.map +1 -1
- package/lib/stake.d.ts +564 -15719
- package/lib/stake.js +47546 -10288
- package/lib/stake.js.map +1 -1
- package/lib/stake.m.js +50561 -13484
- package/lib/stake.m.js.map +1 -1
- package/package.json +1 -1
- package/src/assets/evm/hoodi/.gitkeep +1 -0
- package/src/assets/evm/monad-testnet/.gitkeep +0 -0
- package/src/assets/evm/polygon-amoy/.gitkeep +0 -0
- package/src/assets/evm/wiredev/common/Base58.sol/Base58.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/Base58.sol/Base58.json +164 -0
- package/src/assets/evm/wiredev/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +76 -0
- package/src/assets/evm/wiredev/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/RestrictedCallers.sol/RestrictedCallers.json +10 -0
- package/src/assets/evm/wiredev/common/iodata.sol/iodata.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/iodata.sol/iodata.json +618 -0
- package/src/assets/evm/wiredev/common/iodata_util.sol/iodata_util.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/iodata_util.sol/iodata_util.json +40 -0
- package/src/assets/evm/wiredev/common/sysio_data.sol/sysio_data.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_data.sol/sysio_data.json +10 -0
- package/src/assets/evm/wiredev/common/sysio_errors.sol/sysio_errors.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_errors.sol/sysio_errors.json +10 -0
- package/src/assets/evm/wiredev/common/sysio_merkle.sol/sysio_merkle.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_merkle.sol/sysio_merkle.json +233 -0
- package/src/assets/evm/wiredev/common/sysio_name.sol/sysio_name.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_name.sol/sysio_name.json +49 -0
- package/src/assets/evm/wiredev/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_pubkey.sol/sysio_pubkey.json +64 -0
- package/src/assets/evm/wiredev/common/sysio_read.sol/sysio_read.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_read.sol/sysio_read.json +1458 -0
- package/src/assets/evm/wiredev/common/sysio_tester.sol/SysioTester.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_tester.sol/SysioTester.json +1532 -0
- package/src/assets/evm/wiredev/common/sysio_verify.sol/sysio_verify.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_verify.sol/sysio_verify.json +1525 -0
- package/src/assets/evm/wiredev/common/sysio_write.sol/sysio_write.dbg.json +4 -0
- package/src/assets/evm/wiredev/common/sysio_write.sol/sysio_write.json +1076 -0
- package/src/assets/evm/wiredev/liqEth/BeaconState.sol/BeaconState.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/BeaconState.sol/BeaconState.json +807 -0
- package/src/assets/evm/wiredev/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/DepositManager.sol/DepositManagerV2.json +985 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +1289 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IAccounting.json +182 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IDepositContract.json +39 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IDepositManager.json +64 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IRewardsERC20.json +319 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +333 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IStakingModule.json +344 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthCommon.sol/LiqEthCommon.json +10 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +236 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/LiqEthManaged.sol/LiqEthManaged.json +229 -0
- package/src/assets/evm/wiredev/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +957 -0
- package/src/assets/evm/wiredev/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +1020 -0
- package/src/assets/evm/wiredev/liqEth/Yield.sol/YieldOracle.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/Yield.sol/YieldOracle.json +1376 -0
- package/src/assets/evm/wiredev/liqEth/accounting.sol/AccountingV2.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/accounting.sol/AccountingV2.json +629 -0
- package/src/assets/evm/wiredev/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/liqEth.sol/LiqEthTokenV2.json +1323 -0
- package/src/assets/evm/wiredev/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/stakingModule.sol/StakingModuleV2.json +1779 -0
- package/src/assets/evm/wiredev/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/DepositManager.sol/DepositManager.json +978 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IAccounting.json +176 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +39 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +64 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +29 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.json +249 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +263 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +344 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +129 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +66 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +10 -0
- package/src/assets/evm/wiredev/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json +874 -0
- package/src/assets/evm/wiredev/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +937 -0
- package/src/assets/evm/wiredev/liqEth/v1/accounting.sol/Accounting.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/accounting.sol/Accounting.json +548 -0
- package/src/assets/evm/wiredev/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/liqEth.sol/LiqEthToken.json +1233 -0
- package/src/assets/evm/wiredev/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/v1/stakingModule.sol/StakingModule.json +1772 -0
- package/src/assets/evm/wiredev/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +973 -0
- package/src/assets/evm/wiredev/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/withdrawalVault.sol/Uint64BE.json +10 -0
- package/src/assets/evm/wiredev/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +4 -0
- package/src/assets/evm/wiredev/liqEth/withdrawalVault.sol/WithdrawalVault.json +441 -0
- package/src/assets/evm/wiredev/outpost/BAR.sol/BAR.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/BAR.sol/BAR.json +1154 -0
- package/src/assets/evm/wiredev/outpost/Depositor.sol/Depositor.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/Depositor.sol/Depositor.json +1633 -0
- package/src/assets/evm/wiredev/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +122 -0
- package/src/assets/evm/wiredev/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +274 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeDepositCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawConfirmCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawFailedCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/BridgeWithdrawFailedCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/InstaswapBridgeAttestations.sol/InstaswapBridgeAttestationTypeLib.json +10 -0
- package/src/assets/evm/wiredev/outpost/LiqEthBridge.sol/IDepositorBridgeHooks.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/LiqEthBridge.sol/IDepositorBridgeHooks.json +29 -0
- package/src/assets/evm/wiredev/outpost/LiqEthBridge.sol/LiqEthBridge.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/LiqEthBridge.sol/LiqEthBridge.json +1076 -0
- package/src/assets/evm/wiredev/outpost/OPP.sol/OPP.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPP.sol/OPP.json +1098 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPP.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPP.json +81 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPEndpoint.json +29 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPInbound.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPInbound.json +330 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPReceiver.json +29 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPSender.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/IOPPSender.json +41 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/OPPCommon.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPCommon.sol/OPPCommon.json +287 -0
- package/src/assets/evm/wiredev/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPEndpoint.sol/OPPEndpoint.json +337 -0
- package/src/assets/evm/wiredev/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +458 -0
- package/src/assets/evm/wiredev/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +442 -0
- package/src/assets/evm/wiredev/outpost/OPPErrors.sol/OPPErrors.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPErrors.sol/OPPErrors.json +288 -0
- package/src/assets/evm/wiredev/outpost/OPPInbound.sol/OPPInbound.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPInbound.sol/OPPInbound.json +1298 -0
- package/src/assets/evm/wiredev/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPReceiver.sol/OPPReceiver.json +355 -0
- package/src/assets/evm/wiredev/outpost/OPPSender.sol/OPPSender.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OPPSender.sol/OPPSender.json +367 -0
- package/src/assets/evm/wiredev/outpost/OperatorRegistry.sol/OperatorRegistry.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OperatorRegistry.sol/OperatorRegistry.json +1111 -0
- package/src/assets/evm/wiredev/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostErrors.sol/OutpostErrors.json +211 -0
- package/src/assets/evm/wiredev/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostManaged.sol/OutpostManaged.json +229 -0
- package/src/assets/evm/wiredev/outpost/OutpostManager.sol/OutpostManager.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostManager.sol/OutpostManager.json +794 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +1432 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerCommon.sol/IOutpostManager.json +130 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +29 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +141 -0
- package/src/assets/evm/wiredev/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostOwnable.sol/OutpostOwnable.json +213 -0
- package/src/assets/evm/wiredev/outpost/OutpostReserve.sol/OutpostReserve.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/OutpostReserve.sol/OutpostReserve.json +931 -0
- package/src/assets/evm/wiredev/outpost/Pool.sol/Pool.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/Pool.sol/Pool.json +659 -0
- package/src/assets/evm/wiredev/outpost/Pretoken.sol/Pretoken.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/Pretoken.sol/Pretoken.json +1436 -0
- package/src/assets/evm/wiredev/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/ReceiptNFT.sol/ReceiptNFT.json +1738 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapConfirmCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapFailedCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapRequestCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/InstaswapSettlementCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalExitConfirmCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalExitFailedCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalExitRequestCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/PrincipalStakeDeltaCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/WireYieldHubAssetCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestationTypeLib.json +10 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/WireYieldHubAttestations.json +1437 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/WireYieldHubAttestations.sol/YieldDepositCodec.json +10 -0
- package/src/assets/evm/wiredev/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/interfaces/IPretoken.sol/IPretoken.json +29 -0
- package/src/assets/evm/wiredev/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/interfaces/IWarrant.sol/IWarrant.json +29 -0
- package/src/assets/evm/wiredev/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +858 -0
- package/src/assets/evm/wiredev/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +4 -0
- package/src/assets/evm/wiredev/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +30 -0
- package/src/assets/evm/wiredev/token/ERC1155Token.sol/ERC1155Token.dbg.json +4 -0
- package/src/assets/evm/wiredev/token/ERC1155Token.sol/ERC1155Token.json +472 -0
- package/src/assets/evm/wiredev/token/ERC20Token.sol/ERC20Token.dbg.json +4 -0
- package/src/assets/evm/wiredev/token/ERC20Token.sol/ERC20Token.json +330 -0
- package/src/assets/evm/wiredev/token/ERC721Token.sol/ERC721Token.dbg.json +4 -0
- package/src/assets/evm/wiredev/token/ERC721Token.sol/ERC721Token.json +449 -0
- package/src/assets/evm/wiredev/token/Eman1155.sol/Eman1155.dbg.json +4 -0
- package/src/assets/evm/wiredev/token/Eman1155.sol/Eman1155.json +560 -0
- package/src/assets/evm/wiredev/token/Eman20.sol/Eman20.dbg.json +4 -0
- package/src/assets/evm/wiredev/token/Eman20.sol/Eman20.json +460 -0
- package/src/assets/evm/wiredev/token/Eman721.sol/Eman721.dbg.json +4 -0
- package/src/assets/evm/wiredev/token/Eman721.sol/Eman721.json +624 -0
- package/src/assets/solana/mainnet/idl/validator_leaderboard.json.bak +568 -0
- package/src/assets/solana/wiredev/idl/liqsol_core.json +8726 -0
- package/src/assets/solana/wiredev/idl/liqsol_token.json +217 -0
- package/src/assets/solana/wiredev/idl/transfer_hook.json +490 -0
- package/src/assets/solana/wiredev/idl/validator_leaderboard.json +735 -0
- package/src/assets/solana/wiredev/types/liqsol_core.ts +8732 -0
- package/src/assets/solana/wiredev/types/liqsol_token.ts +223 -0
- package/src/assets/solana/wiredev/types/transfer_hook.ts +496 -0
- package/src/assets/solana/wiredev/types/validator_leaderboard.ts +741 -0
- package/src/chains.ts +165 -0
- package/src/index.ts +7 -3
- package/src/networks/{ethereum → evm}/clients/convert.client.ts +8 -3
- package/src/networks/evm/clients/instaswap.client.ts +440 -0
- package/src/networks/{ethereum → evm}/clients/opp.client.ts +3 -3
- package/src/networks/{ethereum → evm}/clients/pretoken.client.ts +11 -6
- package/src/networks/{ethereum → evm}/clients/receipt.client.ts +3 -3
- package/src/networks/{ethereum → evm}/clients/stake.client.ts +144 -20
- package/src/networks/{ethereum → evm}/clients/validator.client.ts +3 -3
- package/src/networks/{ethereum → evm}/contract.ts +207 -116
- package/src/networks/{ethereum/ethereum.ts → evm/evm.ts} +214 -68
- package/src/networks/{ethereum → evm}/utils.ts +56 -4
- package/src/networks/solana/clients/convert.client.ts +47 -11
- package/src/networks/solana/clients/distribution.client.ts +17 -13
- package/src/networks/solana/clients/instaswap.client.ts +486 -0
- package/src/networks/solana/clients/leaderboard.client.ts +4 -5
- package/src/networks/solana/clients/outpost.client.ts +110 -47
- package/src/networks/solana/clients/token.client.ts +20 -11
- package/src/networks/solana/constants.ts +27 -7
- package/src/networks/solana/program.ts +104 -19
- package/src/networks/solana/solana.ts +145 -15
- package/src/networks/solana/types.ts +1 -2
- package/src/networks/solana/utils.ts +36 -4
- package/src/staker.ts +22 -20
- package/src/status.ts +301 -0
- package/src/types.ts +6 -11
- /package/src/assets/{ethereum → evm}/mainnet/common/Base58.sol/Base58.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/Base58.sol/Base58.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/OpenZepArtifacts.sol/__Dummy_OZ_UUPS__.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/RestrictedCallers.sol/RestrictedCallers.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/RestrictedCallers.sol/RestrictedCallers.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/iodata.sol/iodata.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/iodata.sol/iodata.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/iodata_util.sol/iodata_util.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/iodata_util.sol/iodata_util.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_data.sol/sysio_data.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_data.sol/sysio_data.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_errors.sol/sysio_errors.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_errors.sol/sysio_errors.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_merkle.sol/sysio_merkle.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_merkle.sol/sysio_merkle.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_name.sol/sysio_name.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_name.sol/sysio_name.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_pubkey.sol/sysio_pubkey.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_pubkey.sol/sysio_pubkey.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_read.sol/sysio_read.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_read.sol/sysio_read.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_tester.sol/SysioTester.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_tester.sol/SysioTester.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_verify.sol/sysio_verify.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_verify.sol/sysio_verify.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_write.sol/sysio_write.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/common/sysio_write.sol/sysio_write.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/BeaconState.sol/BeaconState.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/BeaconState.sol/BeaconState.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/DepositManager.sol/DepositManagerV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/DepositManager.sol/DepositManagerV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/DepositManager.sol/IStakingModuleBondLocker.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/KeyBondManager.sol/KeyBondManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthAuthority.sol/LiqEthAuthority.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IDepositContract.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IDepositManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IKeyBondManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/ILiqEthUpgradeable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IRewardsERC20Pausable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IStakingModule.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IValidatorBalanceVerifier.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/IWithdrawalRecord.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthCommon.sol/LiqEthCommon.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthDeepFreeze.sol/LiqEthDeepFreeze.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/LiqEthManaged.sol/LiqEthManaged.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/RewardsERC20.sol/RewardsERC20UpgradeableV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeableV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/StakingLib.sol/StakingLib.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/StakingLib.sol/StakingLib.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/Yield.sol/YieldOracle.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/Yield.sol/YieldOracle.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/liqEth.sol/LiqEthTokenV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/stakingModule.sol/StakingModuleV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/stakingModule.sol/StakingModuleV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/DepositManager.sol/DepositManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/DepositManager.sol/DepositManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IAccounting.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositContract.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IDepositManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/ILiqEthUpgradeable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IRewardsERC20Pausable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IStakingModule.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IValidatorBalanceVerifier.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/IWithdrawalRecord.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/LiqEthCommon.sol/LiqEthCommon.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/RewardsERC20.sol/RewardsERC20Upgradeable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/RewardsERC20Pausable.sol/RewardsERC20PausableUpgradeable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/accounting.sol/Accounting.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/accounting.sol/Accounting.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/liqEth.sol/LiqEthToken.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/stakingModule.sol/StakingModule.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/v1/stakingModule.sol/StakingModule.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/withdrawalQueue.sol/WithdrawalQueue.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/withdrawalVault.sol/Uint64BE.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/withdrawalVault.sol/Uint64BE.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/liqEth/withdrawalVault.sol/WithdrawalVault.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/BAR.sol/BARV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/BAR.sol/BARV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/Depositor.sol/DepositorV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/Depositor.sol/DepositorV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/EthUsdPriceConsumer.sol/AggregatorV3Interface.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/EthUsdPriceConsumer.sol/EthUsdPriceConsumer.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPP.sol/OPP.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPP.sol/OPP.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPP.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPP.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPEndpoint.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPInbound.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPInbound.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPReceiver.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPReceiver.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPSender.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/IOPPSender.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/OPPCommon.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPCommon.sol/OPPCommon.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPEndpoint.sol/OPPEndpoint.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPEndpoint.sol/OPPEndpoint.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPEndpointManaged.sol/OPPEndpointManaged.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPEndpointOwnable.sol/OPPEndpointOwnable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPErrors.sol/OPPErrors.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPErrors.sol/OPPErrors.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPInbound.sol/OPPInbound.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPInbound.sol/OPPInbound.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPReceiver.sol/OPPReceiver.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPReceiver.sol/OPPReceiver.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPSender.sol/OPPSender.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OPPSender.sol/OPPSender.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostErrors.sol/OutpostErrors.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostErrors.sol/OutpostErrors.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManaged.sol/OutpostManaged.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManaged.sol/OutpostManaged.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManager.sol/OutpostManagerV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerAuthority.sol/OutpostManagerAuthority.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerCommon.sol/IOutpostManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerCommon.sol/IOutpostManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerCommon.sol/IOutpostUpgradeable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostManagerCommon.sol/OutpostManagerCommon.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostOwnable.sol/OutpostOwnable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/OutpostOwnable.sol/OutpostOwnable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/Pool.sol/PoolV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/Pool.sol/PoolV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/Pretoken.sol/PretokenV2.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/Pretoken.sol/PretokenV2.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/ReceiptNFT.sol/ReceiptNFT.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/interfaces/IPretoken.sol/IPretoken.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/interfaces/IWarrant.sol/IWarrant.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/token/ERC721EthEquivalentVotesUpgradeable.sol/ERC721EthEquivalentVotesUpgradeable.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/token/IERC721EthEquivalent.sol/IERC721EthEquivalent.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/BAR.sol/BAR.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/BAR.sol/BAR.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/Depositor.sol/Depositor.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/Depositor.sol/Depositor.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/OutpostManager.sol/OutpostManager.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/OutpostManager.sol/OutpostManager.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/Pool.sol/Pool.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/Pool.sol/Pool.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/Pretoken.sol/Pretoken.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/outpost/v1/Pretoken.sol/Pretoken.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/token/ERC1155Token.sol/ERC1155Token.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/token/ERC1155Token.sol/ERC1155Token.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/token/ERC20Token.sol/ERC20Token.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/token/ERC20Token.sol/ERC20Token.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/token/ERC721Token.sol/ERC721Token.dbg.json +0 -0
- /package/src/assets/{ethereum → evm}/mainnet/token/ERC721Token.sol/ERC721Token.json +0 -0
- /package/src/networks/{ethereum → evm}/types.ts +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { AnchorProvider,
|
|
1
|
+
import { AnchorProvider, BN } from '@coral-xyz/anchor';
|
|
2
2
|
import { PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import type { LiqsolCore } from '../../../assets/solana/devnet/types/liqsol_core';
|
|
4
|
+
import { SolanaProgramService } from '../program';
|
|
6
5
|
import type { DistributionState, DistributionUserRecord, GlobalConfig, PayRateEntry, PayRateHistory } from '../types';
|
|
7
6
|
import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
8
7
|
import { ceilDiv } from '../utils';
|
|
@@ -28,7 +27,7 @@ const INDEX_SCALE_BN = new BN('1000000000000');
|
|
|
28
27
|
* - DistributionState + UserRecord track *shares* for yield.
|
|
29
28
|
*/
|
|
30
29
|
export class DistributionClient {
|
|
31
|
-
private program:
|
|
30
|
+
private program: any;
|
|
32
31
|
|
|
33
32
|
constructor(
|
|
34
33
|
private readonly provider: AnchorProvider,
|
|
@@ -57,8 +56,9 @@ export class DistributionClient {
|
|
|
57
56
|
*/
|
|
58
57
|
async getDistributionState(): Promise<DistributionState | null> {
|
|
59
58
|
const pda = this.pgs.deriveDistributionStatePda();
|
|
59
|
+
const program = this.program;
|
|
60
60
|
try {
|
|
61
|
-
return await
|
|
61
|
+
return await program.account.distributionState.fetch(pda);
|
|
62
62
|
} catch {
|
|
63
63
|
return null;
|
|
64
64
|
}
|
|
@@ -72,9 +72,10 @@ export class DistributionClient {
|
|
|
72
72
|
*/
|
|
73
73
|
async getPayRateHistory(): Promise<PayRateHistory | null> {
|
|
74
74
|
const pda = this.pgs.derivePayRateHistoryPda();
|
|
75
|
+
const program = this.program;
|
|
75
76
|
try {
|
|
76
77
|
// Anchor types map directly onto our PayRateHistory TS type
|
|
77
|
-
return (await
|
|
78
|
+
return (await program.account.payRateHistory.fetch(
|
|
78
79
|
pda,
|
|
79
80
|
)) as PayRateHistory;
|
|
80
81
|
} catch {
|
|
@@ -89,10 +90,11 @@ export class DistributionClient {
|
|
|
89
90
|
*/
|
|
90
91
|
async getGlobalConfig(): Promise<GlobalConfig | null> {
|
|
91
92
|
const pda = this.pgs.deriveGlobalConfigPda();
|
|
93
|
+
const program = this.program;
|
|
92
94
|
try {
|
|
93
|
-
return (await
|
|
95
|
+
return (await program.account.globalConfig.fetch(
|
|
94
96
|
pda,
|
|
95
|
-
));
|
|
97
|
+
)) as GlobalConfig;
|
|
96
98
|
} catch {
|
|
97
99
|
return null;
|
|
98
100
|
}
|
|
@@ -105,6 +107,7 @@ export class DistributionClient {
|
|
|
105
107
|
async getUserRecord(
|
|
106
108
|
ownerOrAta: PublicKey,
|
|
107
109
|
): Promise<DistributionUserRecord | null> {
|
|
110
|
+
const program = this.program;
|
|
108
111
|
const liqsolMint = this.pgs.deriveLiqsolMintPda();
|
|
109
112
|
|
|
110
113
|
// 1) Try treating ownerOrAta as a WALLET: derive its liqSOL ATA, then userRecord.
|
|
@@ -117,7 +120,7 @@ export class DistributionClient {
|
|
|
117
120
|
);
|
|
118
121
|
const pdaFromWallet = this.pgs.deriveUserRecordPda(ata);
|
|
119
122
|
const recFromWallet =
|
|
120
|
-
await
|
|
123
|
+
await program.account.userRecord.fetchNullable(pdaFromWallet);
|
|
121
124
|
if (recFromWallet) {
|
|
122
125
|
return recFromWallet;
|
|
123
126
|
}
|
|
@@ -128,7 +131,7 @@ export class DistributionClient {
|
|
|
128
131
|
// 2) Fallback: treat ownerOrAta as already being the TOKEN ACCOUNT.
|
|
129
132
|
try {
|
|
130
133
|
const pdaFromAta = this.pgs.deriveUserRecordPda(ownerOrAta);
|
|
131
|
-
return await
|
|
134
|
+
return await program.account.userRecord.fetchNullable(pdaFromAta);
|
|
132
135
|
} catch {
|
|
133
136
|
return null;
|
|
134
137
|
}
|
|
@@ -234,6 +237,7 @@ export class DistributionClient {
|
|
|
234
237
|
* Build claim_rewards instruction for a wallet.
|
|
235
238
|
*/
|
|
236
239
|
async buildClaimRewardsIx(user: PublicKey): Promise<TransactionInstruction> {
|
|
240
|
+
const program = this.program;
|
|
237
241
|
const liqsolMint = this.pgs.deriveLiqsolMintPda();
|
|
238
242
|
const distributionState = this.pgs.deriveDistributionStatePda();
|
|
239
243
|
const bucketAuthority = this.pgs.deriveBucketAuthorityPda();
|
|
@@ -255,7 +259,7 @@ export class DistributionClient {
|
|
|
255
259
|
const bucketUserRecord = this.pgs.deriveUserRecordPda(bucketTokenAccount);
|
|
256
260
|
const extraAccountMetaList = this.pgs.deriveExtraAccountMetaListPda(liqsolMint);
|
|
257
261
|
|
|
258
|
-
return
|
|
262
|
+
return program.methods
|
|
259
263
|
.claimRewards()
|
|
260
264
|
.accounts({
|
|
261
265
|
user,
|
|
@@ -297,7 +301,7 @@ export class DistributionClient {
|
|
|
297
301
|
? history.maxEntries
|
|
298
302
|
: entries.length;
|
|
299
303
|
|
|
300
|
-
const rawTotalAdded
|
|
304
|
+
const rawTotalAdded = history.totalEntriesAdded ?? 0;
|
|
301
305
|
const totalAddedBn = new BN(rawTotalAdded.toString());
|
|
302
306
|
|
|
303
307
|
// No valid entries written yet
|
|
@@ -330,7 +334,7 @@ export class DistributionClient {
|
|
|
330
334
|
const zero = new BN(0);
|
|
331
335
|
|
|
332
336
|
for (let i = 0; i < COUNT; i++) {
|
|
333
|
-
const entry: any = entries[idx];
|
|
337
|
+
const entry : any = entries[idx];
|
|
334
338
|
if (entry) {
|
|
335
339
|
// Support both camelCase and snake_case (for safety)
|
|
336
340
|
const rawScaled =
|
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
import { AnchorProvider, BN } from '@coral-xyz/anchor';
|
|
2
|
+
import {
|
|
3
|
+
Commitment,
|
|
4
|
+
ComputeBudgetProgram,
|
|
5
|
+
PublicKey,
|
|
6
|
+
SystemProgram,
|
|
7
|
+
TransactionSignature,
|
|
8
|
+
TransactionInstruction,
|
|
9
|
+
} from '@solana/web3.js';
|
|
10
|
+
import { getAssociatedTokenAddressSync, TOKEN_2022_PROGRAM_ID } from '@solana/spl-token';
|
|
11
|
+
|
|
12
|
+
import { buildOutpostAccounts, OutpostAccounts } from '../utils';
|
|
13
|
+
import { SolanaProgramService } from '../program';
|
|
14
|
+
import { ConvertClient } from './convert.client';
|
|
15
|
+
|
|
16
|
+
const commitment: Commitment = 'confirmed';
|
|
17
|
+
const DEFAULT_SOLANA_EPOCH_CAP = 32;
|
|
18
|
+
|
|
19
|
+
export type SolanaInstaswapSubmitParams = {
|
|
20
|
+
amountLamports: bigint;
|
|
21
|
+
destinationChain: number | string | bigint;
|
|
22
|
+
destinationAddress: Uint8Array;
|
|
23
|
+
minOutLamports: bigint;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type SolanaInstaswapSubmitHooks = {
|
|
27
|
+
onSubmitted?: (signature: string) => void | Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type SolanaDepositToWireParams = {
|
|
31
|
+
quantityLamports: bigint;
|
|
32
|
+
recipient: string;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export type SolanaInstaswapConnectedBalances = {
|
|
36
|
+
nativeLamports: string;
|
|
37
|
+
liqsolLamports: string;
|
|
38
|
+
liqsolDecimals: number;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function buildSolanaInstaswapCrossChainAccounts(params: {
|
|
42
|
+
user: PublicKey;
|
|
43
|
+
accounts: OutpostAccounts;
|
|
44
|
+
liqsolCoreProgram: PublicKey;
|
|
45
|
+
transferHookProgram: PublicKey;
|
|
46
|
+
pendingAttestations: PublicKey;
|
|
47
|
+
}) {
|
|
48
|
+
const {
|
|
49
|
+
user,
|
|
50
|
+
accounts,
|
|
51
|
+
liqsolCoreProgram,
|
|
52
|
+
transferHookProgram,
|
|
53
|
+
pendingAttestations,
|
|
54
|
+
} = params;
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
user,
|
|
58
|
+
globalState: accounts.globalState,
|
|
59
|
+
liqsolMint: accounts.liqsolMint,
|
|
60
|
+
distributionState: accounts.distributionState,
|
|
61
|
+
userAta: accounts.userAta,
|
|
62
|
+
senderUserRecord: accounts.userUserRecord,
|
|
63
|
+
bridgeAuthority: accounts.bridgeAuthority,
|
|
64
|
+
bridgeVaultAta: accounts.bridgeVaultAta,
|
|
65
|
+
bridgeUserRecord: accounts.bridgeUserRecord,
|
|
66
|
+
bridgeState: accounts.bridgeState,
|
|
67
|
+
extraAccountMetaList: accounts.extraAccountMetaList,
|
|
68
|
+
liqsolCoreProgram,
|
|
69
|
+
transferHookProgram,
|
|
70
|
+
bucketAuthority: accounts.bucketAuthority,
|
|
71
|
+
bucketTokenAccount: accounts.bucketTokenAccount,
|
|
72
|
+
bucketUserRecord: accounts.bucketUserRecord,
|
|
73
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
74
|
+
systemProgram: SystemProgram.programId,
|
|
75
|
+
globalConfig: accounts.globalConfig,
|
|
76
|
+
oppEpochState: accounts.oppEpochState,
|
|
77
|
+
pendingAttestations,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export class SolanaInstaswapClient {
|
|
82
|
+
private readonly program: any;
|
|
83
|
+
private readonly convertClient: ConvertClient;
|
|
84
|
+
|
|
85
|
+
constructor(
|
|
86
|
+
private readonly provider: AnchorProvider,
|
|
87
|
+
private readonly pgs: SolanaProgramService,
|
|
88
|
+
private readonly submitInstructions?: (
|
|
89
|
+
ix: TransactionInstruction | TransactionInstruction[],
|
|
90
|
+
) => Promise<string>,
|
|
91
|
+
) {
|
|
92
|
+
this.program = pgs.getProgram('liqsolCore');
|
|
93
|
+
this.convertClient = new ConvertClient(provider, pgs);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async submitCrossChain(
|
|
97
|
+
params: SolanaInstaswapSubmitParams,
|
|
98
|
+
hooks?: SolanaInstaswapSubmitHooks,
|
|
99
|
+
): Promise<string> {
|
|
100
|
+
const program = this.program;
|
|
101
|
+
const user = this.provider.wallet.publicKey;
|
|
102
|
+
if (!user) {
|
|
103
|
+
throw new Error('Connect a Solana wallet first.');
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const accounts = await buildOutpostAccounts(this.provider.connection, user, this.pgs);
|
|
107
|
+
const amount = new BN(params.amountLamports.toString());
|
|
108
|
+
const destinationChain = new BN(params.destinationChain.toString());
|
|
109
|
+
const destinationAddress = Buffer.from(params.destinationAddress);
|
|
110
|
+
const minOut = new BN(params.minOutLamports.toString());
|
|
111
|
+
|
|
112
|
+
let pendingAttestations = accounts.pendingAttestations;
|
|
113
|
+
let signature = '';
|
|
114
|
+
|
|
115
|
+
try {
|
|
116
|
+
signature = await this.runRpcWithRecovery(() =>
|
|
117
|
+
program.methods
|
|
118
|
+
.instaswapCrossChain(
|
|
119
|
+
amount,
|
|
120
|
+
destinationChain,
|
|
121
|
+
destinationAddress,
|
|
122
|
+
minOut,
|
|
123
|
+
)
|
|
124
|
+
.accounts(
|
|
125
|
+
buildSolanaInstaswapCrossChainAccounts({
|
|
126
|
+
user,
|
|
127
|
+
accounts,
|
|
128
|
+
liqsolCoreProgram: this.program.programId,
|
|
129
|
+
transferHookProgram: this.pgs.PROGRAM_IDS.TRANSFER_HOOK,
|
|
130
|
+
pendingAttestations,
|
|
131
|
+
}),
|
|
132
|
+
)
|
|
133
|
+
.preInstructions([
|
|
134
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 900_000 }),
|
|
135
|
+
])
|
|
136
|
+
.rpc(),
|
|
137
|
+
);
|
|
138
|
+
} catch (error) {
|
|
139
|
+
if (!this.isEpochFinalizationRequired(error)) {
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
await this.finalizeReadyEpoch(true);
|
|
144
|
+
const retryEpochNumber = await this.pgs.fetchOppEpochNumber(this.provider.connection);
|
|
145
|
+
pendingAttestations = this.pgs.derivePendingAttestationsPda(retryEpochNumber);
|
|
146
|
+
|
|
147
|
+
signature = await this.runRpcWithRecovery(() =>
|
|
148
|
+
program.methods
|
|
149
|
+
.instaswapCrossChain(
|
|
150
|
+
amount,
|
|
151
|
+
destinationChain,
|
|
152
|
+
destinationAddress,
|
|
153
|
+
minOut,
|
|
154
|
+
)
|
|
155
|
+
.accounts(
|
|
156
|
+
buildSolanaInstaswapCrossChainAccounts({
|
|
157
|
+
user,
|
|
158
|
+
accounts,
|
|
159
|
+
liqsolCoreProgram: this.program.programId,
|
|
160
|
+
transferHookProgram: this.pgs.PROGRAM_IDS.TRANSFER_HOOK,
|
|
161
|
+
pendingAttestations,
|
|
162
|
+
}),
|
|
163
|
+
)
|
|
164
|
+
.preInstructions([
|
|
165
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 900_000 }),
|
|
166
|
+
])
|
|
167
|
+
.rpc(),
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
await hooks?.onSubmitted?.(signature);
|
|
172
|
+
return signature;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async depositToWire(
|
|
176
|
+
params: SolanaDepositToWireParams,
|
|
177
|
+
hooks?: SolanaInstaswapSubmitHooks,
|
|
178
|
+
): Promise<string> {
|
|
179
|
+
const program: any = this.program;
|
|
180
|
+
const user = this.provider.wallet.publicKey;
|
|
181
|
+
if (!user) {
|
|
182
|
+
throw new Error('Connect a Solana wallet first.');
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const recipient = params.recipient.trim();
|
|
186
|
+
if (!recipient) {
|
|
187
|
+
throw new Error('Wire recipient is required.');
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
await this.finalizeReadyEpoch();
|
|
191
|
+
|
|
192
|
+
const accounts = await buildOutpostAccounts(this.provider.connection, user, this.pgs);
|
|
193
|
+
const quantity = new BN(params.quantityLamports.toString());
|
|
194
|
+
let pendingAttestations = accounts.pendingAttestations;
|
|
195
|
+
|
|
196
|
+
let signature: string;
|
|
197
|
+
try {
|
|
198
|
+
signature = await this.runRpcWithRecovery(() =>
|
|
199
|
+
program.methods
|
|
200
|
+
.bridgeLiqsolToWire(recipient, quantity)
|
|
201
|
+
.accounts({
|
|
202
|
+
user,
|
|
203
|
+
liqsolMint: accounts.liqsolMint,
|
|
204
|
+
distributionState: accounts.distributionState,
|
|
205
|
+
userAta: accounts.userAta,
|
|
206
|
+
senderUserRecord: accounts.userUserRecord,
|
|
207
|
+
bridgeAuthority: accounts.bridgeAuthority,
|
|
208
|
+
bridgeVaultAta: accounts.bridgeVaultAta,
|
|
209
|
+
bridgeUserRecord: accounts.bridgeUserRecord,
|
|
210
|
+
bridgeState: accounts.bridgeState,
|
|
211
|
+
extraAccountMetaList: accounts.extraAccountMetaList,
|
|
212
|
+
liqsolCoreProgram: program.programId,
|
|
213
|
+
transferHookProgram: this.pgs.PROGRAM_IDS.TRANSFER_HOOK,
|
|
214
|
+
bucketAuthority: accounts.bucketAuthority,
|
|
215
|
+
bucketTokenAccount: accounts.bucketTokenAccount,
|
|
216
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
217
|
+
systemProgram: SystemProgram.programId,
|
|
218
|
+
globalConfig: accounts.globalConfig,
|
|
219
|
+
oppEpochState: accounts.oppEpochState,
|
|
220
|
+
pendingAttestations,
|
|
221
|
+
})
|
|
222
|
+
.preInstructions([
|
|
223
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 900_000 }),
|
|
224
|
+
])
|
|
225
|
+
.rpc(),
|
|
226
|
+
);
|
|
227
|
+
} catch (error) {
|
|
228
|
+
if (!this.isEpochFinalizationRequired(error)) {
|
|
229
|
+
throw error;
|
|
230
|
+
}
|
|
231
|
+
await this.finalizeReadyEpoch(true);
|
|
232
|
+
const retryEpochNumber = await this.pgs.fetchOppEpochNumber(this.provider.connection);
|
|
233
|
+
pendingAttestations = this.pgs.derivePendingAttestationsPda(retryEpochNumber);
|
|
234
|
+
signature = await this.runRpcWithRecovery(() =>
|
|
235
|
+
program.methods
|
|
236
|
+
.bridgeLiqsolToWire(recipient, quantity)
|
|
237
|
+
.accounts({
|
|
238
|
+
user,
|
|
239
|
+
liqsolMint: accounts.liqsolMint,
|
|
240
|
+
distributionState: accounts.distributionState,
|
|
241
|
+
userAta: accounts.userAta,
|
|
242
|
+
senderUserRecord: accounts.userUserRecord,
|
|
243
|
+
bridgeAuthority: accounts.bridgeAuthority,
|
|
244
|
+
bridgeVaultAta: accounts.bridgeVaultAta,
|
|
245
|
+
bridgeUserRecord: accounts.bridgeUserRecord,
|
|
246
|
+
bridgeState: accounts.bridgeState,
|
|
247
|
+
extraAccountMetaList: accounts.extraAccountMetaList,
|
|
248
|
+
liqsolCoreProgram: program.programId,
|
|
249
|
+
transferHookProgram: this.pgs.PROGRAM_IDS.TRANSFER_HOOK,
|
|
250
|
+
bucketAuthority: accounts.bucketAuthority,
|
|
251
|
+
bucketTokenAccount: accounts.bucketTokenAccount,
|
|
252
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID,
|
|
253
|
+
systemProgram: SystemProgram.programId,
|
|
254
|
+
globalConfig: accounts.globalConfig,
|
|
255
|
+
oppEpochState: accounts.oppEpochState,
|
|
256
|
+
pendingAttestations,
|
|
257
|
+
})
|
|
258
|
+
.preInstructions([
|
|
259
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 900_000 }),
|
|
260
|
+
])
|
|
261
|
+
.rpc(),
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
await this.finalizeReadyEpoch();
|
|
266
|
+
await hooks?.onSubmitted?.(signature);
|
|
267
|
+
return signature;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
async getConnectedBalances(owner?: PublicKey | string): Promise<SolanaInstaswapConnectedBalances> {
|
|
271
|
+
const resolvedOwner = this.resolveOwner(owner);
|
|
272
|
+
const liqsolMint = this.pgs.deriveLiqsolMintPda();
|
|
273
|
+
const userAta = getAssociatedTokenAddressSync(
|
|
274
|
+
liqsolMint,
|
|
275
|
+
resolvedOwner,
|
|
276
|
+
false,
|
|
277
|
+
TOKEN_2022_PROGRAM_ID,
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
const [nativeLamports, liqsolBalance] = await Promise.all([
|
|
281
|
+
this.provider.connection.getBalance(resolvedOwner, commitment),
|
|
282
|
+
this.provider.connection.getTokenAccountBalance(userAta, commitment).catch(() => null),
|
|
283
|
+
]);
|
|
284
|
+
|
|
285
|
+
return {
|
|
286
|
+
nativeLamports: BigInt(nativeLamports ?? 0).toString(),
|
|
287
|
+
liqsolLamports: liqsolBalance?.value?.amount ?? '0',
|
|
288
|
+
liqsolDecimals: Number(liqsolBalance?.value?.decimals ?? 9),
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private async finalizeReadyEpoch(force = false): Promise<boolean> {
|
|
293
|
+
const program = this.program;
|
|
294
|
+
const epochNumber = await this.pgs.fetchOppEpochNumber(this.provider.connection);
|
|
295
|
+
const pendingAttestations = await this.fetchPendingAttestations(epochNumber);
|
|
296
|
+
const attestations = pendingAttestations?.list ?? [];
|
|
297
|
+
|
|
298
|
+
if (!attestations.length) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (!force) {
|
|
303
|
+
const oppEpochState: any = await program.account.oppEpochState.fetch(
|
|
304
|
+
this.pgs.deriveOppEpochStatePda(),
|
|
305
|
+
);
|
|
306
|
+
const globalConfig: any = await program.account.globalConfig.fetch(
|
|
307
|
+
this.pgs.deriveGlobalConfigPda(),
|
|
308
|
+
);
|
|
309
|
+
const attestationCount = attestations.length;
|
|
310
|
+
const maxAttestations = this.toSafeNumber(
|
|
311
|
+
globalConfig.oppMaxAttestations || DEFAULT_SOLANA_EPOCH_CAP,
|
|
312
|
+
);
|
|
313
|
+
const maxIntervalSecs = this.toSafeNumber(globalConfig.oppMaxIntervalSecs || 0);
|
|
314
|
+
const outboundEpochStart = this.toSafeNumber(oppEpochState.outboundEpochStart || 0);
|
|
315
|
+
const now = Math.floor(Date.now() / 1000);
|
|
316
|
+
const readyByCount = attestationCount >= maxAttestations;
|
|
317
|
+
const readyByTime =
|
|
318
|
+
attestationCount > 0 &&
|
|
319
|
+
outboundEpochStart > 0 &&
|
|
320
|
+
maxIntervalSecs > 0 &&
|
|
321
|
+
now - outboundEpochStart >= maxIntervalSecs;
|
|
322
|
+
|
|
323
|
+
if (!readyByCount && !readyByTime) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
const signer = this.provider.wallet.publicKey;
|
|
329
|
+
if (!signer) {
|
|
330
|
+
throw new Error('Connect a Solana wallet first.');
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
const remainingAccounts = Array.from(
|
|
334
|
+
{ length: attestations.length },
|
|
335
|
+
(_, index) => ({
|
|
336
|
+
pubkey: this.pgs.deriveEpochMessagePda(epochNumber, index),
|
|
337
|
+
isWritable: true,
|
|
338
|
+
isSigner: false,
|
|
339
|
+
}),
|
|
340
|
+
);
|
|
341
|
+
|
|
342
|
+
await this.runRpcWithRecovery(() =>
|
|
343
|
+
program.methods
|
|
344
|
+
.finalizeEpoch()
|
|
345
|
+
.accounts({
|
|
346
|
+
oppEpochState: this.pgs.deriveOppEpochStatePda(),
|
|
347
|
+
pendingAttestations: this.pgs.derivePendingAttestationsPda(epochNumber),
|
|
348
|
+
epochHeader: this.pgs.deriveEpochHeaderPda(epochNumber),
|
|
349
|
+
signer,
|
|
350
|
+
systemProgram: SystemProgram.programId,
|
|
351
|
+
globalConfig: this.pgs.deriveGlobalConfigPda(),
|
|
352
|
+
})
|
|
353
|
+
.preInstructions([
|
|
354
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 1_400_000 }),
|
|
355
|
+
])
|
|
356
|
+
.remainingAccounts(remainingAccounts)
|
|
357
|
+
.rpc(),
|
|
358
|
+
);
|
|
359
|
+
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
private async fetchPendingAttestations(epochNumber: number): Promise<any | null> {
|
|
364
|
+
const program = this.program;
|
|
365
|
+
try {
|
|
366
|
+
return await program.account.pendingAttestations.fetch(
|
|
367
|
+
this.pgs.derivePendingAttestationsPda(epochNumber),
|
|
368
|
+
);
|
|
369
|
+
} catch {
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
private isEpochFinalizationRequired(error: unknown): boolean {
|
|
375
|
+
const message = error instanceof Error ? error.message : String(error ?? '');
|
|
376
|
+
return message.includes('EpochFinalizationRequired')
|
|
377
|
+
|| message.includes('Epoch finalization required')
|
|
378
|
+
|| message.includes('Outbound epoch is already ready');
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
private async runRpcWithRecovery(
|
|
382
|
+
submit: () => Promise<TransactionSignature>,
|
|
383
|
+
): Promise<TransactionSignature> {
|
|
384
|
+
try {
|
|
385
|
+
return await submit();
|
|
386
|
+
} catch (error) {
|
|
387
|
+
const signature = this.extractTimedOutSignature(error);
|
|
388
|
+
if (!signature) {
|
|
389
|
+
throw error;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
const recovered = await this.waitForSignatureSuccess(signature);
|
|
393
|
+
if (!recovered) {
|
|
394
|
+
throw error;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return signature;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
private extractTimedOutSignature(error: unknown): string | null {
|
|
402
|
+
const message = error instanceof Error
|
|
403
|
+
? error.message
|
|
404
|
+
: typeof error === 'string'
|
|
405
|
+
? error
|
|
406
|
+
: JSON.stringify(error ?? '');
|
|
407
|
+
if (!message.includes('Transaction was not confirmed')) {
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
const labeledMatch = message.match(
|
|
411
|
+
/(?:signature|txSignature)["'\s:]+([1-9A-HJ-NP-Za-km-z]{32,88})/i,
|
|
412
|
+
);
|
|
413
|
+
if (labeledMatch?.[1]) {
|
|
414
|
+
return labeledMatch[1];
|
|
415
|
+
}
|
|
416
|
+
const anyBase58Match = message.match(/([1-9A-HJ-NP-Za-km-z]{32,88})/);
|
|
417
|
+
return anyBase58Match?.[1] ?? null;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
private async waitForSignatureSuccess(signature: string): Promise<boolean> {
|
|
421
|
+
for (let attempt = 0; attempt < 10; attempt += 1) {
|
|
422
|
+
const response = await this.provider.connection.getSignatureStatuses(
|
|
423
|
+
[signature],
|
|
424
|
+
{ searchTransactionHistory: true },
|
|
425
|
+
);
|
|
426
|
+
const status = response.value[0];
|
|
427
|
+
if (status?.err) {
|
|
428
|
+
throw new Error(
|
|
429
|
+
`Solana transaction ${signature} failed after timeout: ${JSON.stringify(status.err)}`,
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
if (
|
|
433
|
+
status?.confirmationStatus === commitment ||
|
|
434
|
+
status?.confirmationStatus === 'finalized'
|
|
435
|
+
) {
|
|
436
|
+
return true;
|
|
437
|
+
}
|
|
438
|
+
await this.sleep(1500);
|
|
439
|
+
}
|
|
440
|
+
return false;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
private resolveOwner(owner?: PublicKey | string): PublicKey {
|
|
444
|
+
if (owner instanceof PublicKey) {
|
|
445
|
+
return owner;
|
|
446
|
+
}
|
|
447
|
+
if (typeof owner === 'string' && owner.trim()) {
|
|
448
|
+
return new PublicKey(owner.trim());
|
|
449
|
+
}
|
|
450
|
+
const walletOwner = this.provider.wallet.publicKey;
|
|
451
|
+
if (!walletOwner) {
|
|
452
|
+
throw new Error('Connect a Solana wallet first.');
|
|
453
|
+
}
|
|
454
|
+
return walletOwner;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
private toSafeNumber(value: unknown): number {
|
|
458
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
459
|
+
return value;
|
|
460
|
+
}
|
|
461
|
+
if (typeof value === 'bigint') {
|
|
462
|
+
return Number(value);
|
|
463
|
+
}
|
|
464
|
+
if (value && typeof value === 'object' && 'toNumber' in value) {
|
|
465
|
+
return (value as { toNumber: () => number }).toNumber();
|
|
466
|
+
}
|
|
467
|
+
if (value && typeof value === 'object' && 'toString' in value) {
|
|
468
|
+
const parsed = Number((value as { toString: () => string }).toString());
|
|
469
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
470
|
+
}
|
|
471
|
+
return 0;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
private async sleep(ms: number): Promise<void> {
|
|
475
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
private async sendInstructions(
|
|
479
|
+
ix: TransactionInstruction | TransactionInstruction[],
|
|
480
|
+
): Promise<string> {
|
|
481
|
+
if (!this.submitInstructions) {
|
|
482
|
+
throw new Error('Solana instruction submitter is not configured.');
|
|
483
|
+
}
|
|
484
|
+
return this.submitInstructions(ix);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { AnchorProvider
|
|
1
|
+
import { AnchorProvider } from '@coral-xyz/anchor';
|
|
2
2
|
import { PublicKey } from '@solana/web3.js';
|
|
3
3
|
|
|
4
|
-
import { SolanaProgramService
|
|
5
|
-
import type { ValidatorLeaderboard } from '../../../assets/solana/devnet/types/validator_leaderboard';
|
|
4
|
+
import { SolanaProgramService } from '../program';
|
|
6
5
|
import { LeaderboardState, ValidatorRecord } from '../types';
|
|
7
6
|
|
|
8
7
|
/**
|
|
@@ -11,7 +10,7 @@ import { LeaderboardState, ValidatorRecord } from '../types';
|
|
|
11
10
|
* Adjust account names/fields to match your IDL (state, validatorRecord, etc).
|
|
12
11
|
*/
|
|
13
12
|
export class LeaderboardClient {
|
|
14
|
-
private program:
|
|
13
|
+
private program: any;
|
|
15
14
|
|
|
16
15
|
constructor(
|
|
17
16
|
private readonly provider: AnchorProvider,
|
|
@@ -99,4 +98,4 @@ export class LeaderboardClient {
|
|
|
99
98
|
return all.slice(0, limit).map(r => r.account);
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
|
-
}
|
|
101
|
+
}
|