@lombard.finance/sdk 4.0.0 → 4.1.2
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/CHANGELOG.md +12 -0
- package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
- package/dist/bridge/lib/config.d.ts +3 -3
- package/dist/bridge/lib/config.d.ts.map +1 -1
- package/dist/common/chains.d.ts +2 -2
- package/dist/common/chains.d.ts.map +1 -1
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts.map +1 -1
- package/dist/index2.cjs +6 -6
- package/dist/index2.js +792 -759
- package/dist/vaults/lib/config.d.ts +1 -1
- package/package.json +7 -8
- package/src/__tests__/AssetNamespace.spec.ts +0 -234
- package/src/__tests__/helpers/createTestConfig.ts +0 -90
- package/src/__tests__/integration/automint-fee.integration.test.ts +0 -74
- package/src/__tests__/integration/btc-deposit.integration.test.ts +0 -109
- package/src/__tests__/integration/btc-stake-and-deploy.integration.test.ts +0 -96
- package/src/__tests__/integration/btc-stake.integration.test.ts +0 -466
- package/src/__tests__/integration/evm-actions.integration.test.ts +0 -932
- package/src/__tests__/integration/evm-deploy.integration.test.ts +0 -122
- package/src/__tests__/integration/evm-redeem.integration.test.ts +0 -157
- package/src/__tests__/integration/faq-patterns.integration.test.ts +0 -465
- package/src/__tests__/integration/getLBTCMintingFee.integration.test.ts +0 -195
- package/src/__tests__/real-wallet/btc/btc-stake.real.test.ts +0 -70
- package/src/__tests__/real-wallet/evm/evm-stake.real.test.ts +0 -47
- package/src/__tests__/real-wallet/evm/evm-unstake.real.test.ts +0 -49
- package/src/__tests__/real-wallet/non-evm/solana-unstake.real.test.ts +0 -19
- package/src/__tests__/real-wallet/non-evm/starknet-unstake.real.test.ts +0 -19
- package/src/__tests__/real-wallet/non-evm/sui-unstake.real.test.ts +0 -19
- package/src/__tests__/services/ApiService.test.ts +0 -62
- package/src/__tests__/services/BtcService.test.ts +0 -30
- package/src/__tests__/services/EvmService.test.ts +0 -39
- package/src/__tests__/setup.ts +0 -16
- package/src/__tests__/test-utils/eip1193-adapter.ts +0 -48
- package/src/__tests__/test-utils/evm-wallet.ts +0 -38
- package/src/__tests__/test-utils/solana-wallet.ts +0 -22
- package/src/__tests__/test-utils/starknet-wallet.ts +0 -9
- package/src/__tests__/test-utils/sui-wallet.ts +0 -14
- package/src/__tests__/test-utils/test-constraints.ts +0 -110
- package/src/__tests__/unit/btc/BtcDeposit.test.ts +0 -253
- package/src/__tests__/unit/btc/BtcDepositAndDeploy.test.ts +0 -174
- package/src/__tests__/unit/btc/BtcDepositConfig.test.ts +0 -143
- package/src/__tests__/unit/btc/BtcDepositStatusTransition.test.ts +0 -221
- package/src/__tests__/unit/btc/BtcStakeAndDeploy.test.ts +0 -194
- package/src/__tests__/unit/btc/ExistingSignatureHandling.test.ts +0 -301
- package/src/__tests__/unit/btc/StakeAndBakeRatioConversion.test.ts +0 -200
- package/src/__tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts +0 -216
- package/src/__tests__/unit/btc/TokenParameterConsistency.test.ts +0 -184
- package/src/__tests__/unit/btc/btc-deposit-token.test.ts +0 -191
- package/src/__tests__/unit/catalog/AssetCatalog.test.ts +0 -293
- package/src/__tests__/unit/config/ChainConfig.test.ts +0 -47
- package/src/__tests__/unit/config/FeeAuthConfig.test.ts +0 -76
- package/src/__tests__/unit/contract-functions/getLBTCMintingFee.test.ts +0 -128
- package/src/__tests__/unit/core/chain-parsing.test.ts +0 -257
- package/src/__tests__/unit/defi/AvailableProtocols.test.ts +0 -100
- package/src/__tests__/unit/defi/DefiRegistry.test.ts +0 -25
- package/src/__tests__/unit/evm/EvmDeploy.test.ts +0 -224
- package/src/__tests__/unit/evm/EvmRedeem.test.ts +0 -207
- package/src/__tests__/unit/evm/EvmRedeemFeeAuth.test.ts +0 -93
- package/src/__tests__/unit/evm/EvmStake.test.ts +0 -207
- package/src/__tests__/unit/evm/EvmStakeFeeAuth.test.ts +0 -193
- package/src/__tests__/unit/evm/EvmUnstakeAllowance.test.ts +0 -69
- package/src/__tests__/unit/evm/EvmUnstakeConfig.test.ts +0 -203
- package/src/__tests__/unit/fee-signature-expiration.test.ts +0 -76
- package/src/__tests__/unit/modules/CapabilityRegistry.test.ts +0 -55
- package/src/__tests__/unit/shared/BaseAction.test.ts +0 -122
- package/src/__tests__/unit/shared/BaseBtcAction.test.ts +0 -114
- package/src/__tests__/unit/solana/SolanaUnstake.test.ts +0 -314
- package/src/__tests__/unit/starknet/StarknetUnstake.test.ts +0 -318
- package/src/__tests__/unit/sui/SuiUnstake.test.ts +0 -310
- package/src/__tests__/unit/utils/satoshi.test.ts +0 -27
- package/src/__tests__/unit/validation/address-validation.test.ts +0 -350
- package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.tsx +0 -71
- package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts +0 -235
- package/src/api-functions/generateDepositBtcAddress/index.ts +0 -1
- package/src/api-functions/get-badges-by-address/get-badges-by-address.ts +0 -13
- package/src/api-functions/get-badges-by-address/index.ts +0 -1
- package/src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts +0 -38
- package/src/api-functions/getDepositAddressReferrer/index.ts +0 -1
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.tsx +0 -59
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.ts +0 -265
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts +0 -167
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.tsx +0 -58
- package/src/api-functions/getDepositBtcAddress/index.ts +0 -1
- package/src/api-functions/getDepositBtcAddress/make-request.ts +0 -59
- package/src/api-functions/getDepositBtcAddress/types.ts +0 -106
- package/src/api-functions/getDepositsByAddress/getDepositsByAddress.stories.tsx +0 -51
- package/src/api-functions/getDepositsByAddress/getDepositsByAddress.ts +0 -502
- package/src/api-functions/getDepositsByAddress/index.ts +0 -1
- package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.tsx +0 -48
- package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.ts +0 -59
- package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.tsx +0 -55
- package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.ts +0 -75
- package/src/api-functions/getLBTCExchangeRate/index.ts +0 -2
- package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.tsx +0 -59
- package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts +0 -116
- package/src/api-functions/getNetworkFeeSignature/index.ts +0 -1
- package/src/api-functions/getPointsByAddress/getPointsByAddress.stories.tsx +0 -51
- package/src/api-functions/getPointsByAddress/getPointsByAddress.ts +0 -304
- package/src/api-functions/getPointsByAddress/index.ts +0 -1
- package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.tsx +0 -51
- package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts +0 -368
- package/src/api-functions/getUnstakesByAddress/index.ts +0 -1
- package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.tsx +0 -70
- package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts +0 -91
- package/src/api-functions/getUserStakeAndBakeSignature/index.ts +0 -1
- package/src/api-functions/index.ts +0 -11
- package/src/api-functions/setReferral/index.ts +0 -1
- package/src/api-functions/setReferral/setReferral.ts +0 -67
- package/src/api-functions/storeNetworkFeeSignature/index.ts +0 -1
- package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.tsx +0 -57
- package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.ts +0 -75
- package/src/api-functions/storeStakeAndBakeSignature/index.ts +0 -1
- package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.tsx +0 -57
- package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +0 -61
- package/src/bridge/abi/CCIP_BRIDGE_ADAPTER_ABI.json +0 -704
- package/src/bridge/abi/CCIP_ROUTER_ABI.json +0 -702
- package/src/bridge/abi/OFT_BRIDGE_ADAPTER_ABI.json +0 -912
- package/src/bridge/index.ts +0 -16
- package/src/bridge/lib/bridge.stories.tsx +0 -90
- package/src/bridge/lib/bridge.ts +0 -115
- package/src/bridge/lib/ccip-bridge.stories.tsx +0 -91
- package/src/bridge/lib/ccip-bridge.ts +0 -214
- package/src/bridge/lib/ccip-config.ts +0 -54
- package/src/bridge/lib/config.ts +0 -384
- package/src/bridge/lib/oft-bridge.stories.tsx +0 -90
- package/src/bridge/lib/oft-bridge.ts +0 -217
- package/src/chains/btc/BtcActions.ts +0 -192
- package/src/chains/btc/actions/deposit/BtcDeposit.ts +0 -388
- package/src/chains/btc/actions/deposit/config/evm.ts +0 -197
- package/src/chains/btc/actions/deposit/config/index.ts +0 -53
- package/src/chains/btc/actions/deposit/config/types.ts +0 -108
- package/src/chains/btc/actions/deposit/factory.ts +0 -53
- package/src/chains/btc/actions/deposit/index.ts +0 -23
- package/src/chains/btc/actions/deposit/types.ts +0 -120
- package/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts +0 -366
- package/src/chains/btc/actions/depositAndDeploy/config/evm.ts +0 -105
- package/src/chains/btc/actions/depositAndDeploy/config/index.ts +0 -111
- package/src/chains/btc/actions/depositAndDeploy/config/types.ts +0 -67
- package/src/chains/btc/actions/depositAndDeploy/factory.ts +0 -38
- package/src/chains/btc/actions/depositAndDeploy/index.ts +0 -24
- package/src/chains/btc/actions/depositAndDeploy/types.ts +0 -120
- package/src/chains/btc/actions/index.ts +0 -14
- package/src/chains/btc/actions/shared/BaseBtcAction.ts +0 -495
- package/src/chains/btc/actions/shared/index.ts +0 -28
- package/src/chains/btc/actions/shared/tokenUtils.ts +0 -68
- package/src/chains/btc/actions/shared/validation.ts +0 -180
- package/src/chains/btc/actions/stake/BtcStake.ts +0 -433
- package/src/chains/btc/actions/stake/__tests__/BtcStake.test.ts +0 -247
- package/src/chains/btc/actions/stake/config/evm.ts +0 -183
- package/src/chains/btc/actions/stake/config/index.ts +0 -122
- package/src/chains/btc/actions/stake/config/solana.ts +0 -96
- package/src/chains/btc/actions/stake/config/starknet.ts +0 -66
- package/src/chains/btc/actions/stake/config/sui.ts +0 -61
- package/src/chains/btc/actions/stake/config/types.ts +0 -165
- package/src/chains/btc/actions/stake/factory.ts +0 -53
- package/src/chains/btc/actions/stake/index.ts +0 -22
- package/src/chains/btc/actions/stake/types.ts +0 -175
- package/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts +0 -415
- package/src/chains/btc/actions/stakeAndDeploy/config/evm.ts +0 -135
- package/src/chains/btc/actions/stakeAndDeploy/config/index.ts +0 -119
- package/src/chains/btc/actions/stakeAndDeploy/config/types.ts +0 -93
- package/src/chains/btc/actions/stakeAndDeploy/factory.ts +0 -54
- package/src/chains/btc/actions/stakeAndDeploy/index.ts +0 -26
- package/src/chains/btc/actions/stakeAndDeploy/types.ts +0 -118
- package/src/chains/btc/client/getCurrentBlockHeight.ts +0 -28
- package/src/chains/btc/client/mempool/error.ts +0 -24
- package/src/chains/btc/client/mempool/mempool.ts +0 -23
- package/src/chains/btc/index.ts +0 -71
- package/src/chains/evm/EvmActions.ts +0 -185
- package/src/chains/evm/actions/deploy/EvmDeploy.ts +0 -256
- package/src/chains/evm/actions/deploy/config/evm.ts +0 -80
- package/src/chains/evm/actions/deploy/config/index.ts +0 -8
- package/src/chains/evm/actions/deploy/config/types.ts +0 -43
- package/src/chains/evm/actions/deploy/factory.ts +0 -44
- package/src/chains/evm/actions/deploy/index.ts +0 -17
- package/src/chains/evm/actions/deploy/types.ts +0 -74
- package/src/chains/evm/actions/deposit/EvmDeposit.ts +0 -159
- package/src/chains/evm/actions/deposit/config/evm.ts +0 -100
- package/src/chains/evm/actions/deposit/config/index.ts +0 -8
- package/src/chains/evm/actions/deposit/config/types.ts +0 -39
- package/src/chains/evm/actions/deposit/factory.ts +0 -44
- package/src/chains/evm/actions/deposit/index.ts +0 -17
- package/src/chains/evm/actions/deposit/types.ts +0 -87
- package/src/chains/evm/actions/index.ts +0 -67
- package/src/chains/evm/actions/redeem/EvmRedeem.ts +0 -263
- package/src/chains/evm/actions/redeem/config/evm.ts +0 -85
- package/src/chains/evm/actions/redeem/config/index.ts +0 -8
- package/src/chains/evm/actions/redeem/config/types.ts +0 -39
- package/src/chains/evm/actions/redeem/factory.ts +0 -43
- package/src/chains/evm/actions/redeem/index.ts +0 -17
- package/src/chains/evm/actions/redeem/types.ts +0 -93
- package/src/chains/evm/actions/stake/EvmStake.ts +0 -339
- package/src/chains/evm/actions/stake/config/evm.ts +0 -89
- package/src/chains/evm/actions/stake/config/index.ts +0 -8
- package/src/chains/evm/actions/stake/config/types.ts +0 -89
- package/src/chains/evm/actions/stake/factory.ts +0 -52
- package/src/chains/evm/actions/stake/index.ts +0 -30
- package/src/chains/evm/actions/stake/types.ts +0 -104
- package/src/chains/evm/actions/unstake/EvmUnstake.ts +0 -258
- package/src/chains/evm/actions/unstake/config/evm.ts +0 -123
- package/src/chains/evm/actions/unstake/config/index.ts +0 -13
- package/src/chains/evm/actions/unstake/config/types.ts +0 -37
- package/src/chains/evm/actions/unstake/factory.ts +0 -44
- package/src/chains/evm/actions/unstake/index.ts +0 -22
- package/src/chains/evm/actions/unstake/types.ts +0 -87
- package/src/chains/evm/index.ts +0 -16
- package/src/chains/evm/shared/feeAuth.ts +0 -198
- package/src/chains/evm/shared/index.ts +0 -7
- package/src/chains/solana/SolanaActions.ts +0 -85
- package/src/chains/solana/actions/index.ts +0 -7
- package/src/chains/solana/actions/unstake/SolanaUnstake.ts +0 -151
- package/src/chains/solana/actions/unstake/config/btc.ts +0 -47
- package/src/chains/solana/actions/unstake/config/index.ts +0 -8
- package/src/chains/solana/actions/unstake/config/solana.ts +0 -47
- package/src/chains/solana/actions/unstake/config/types.ts +0 -35
- package/src/chains/solana/actions/unstake/factory.ts +0 -34
- package/src/chains/solana/actions/unstake/index.ts +0 -14
- package/src/chains/solana/actions/unstake/types.ts +0 -58
- package/src/chains/solana/index.ts +0 -8
- package/src/chains/starknet/StarknetActions.ts +0 -85
- package/src/chains/starknet/actions/index.ts +0 -7
- package/src/chains/starknet/actions/unstake/StarknetUnstake.ts +0 -128
- package/src/chains/starknet/actions/unstake/config/btc.ts +0 -43
- package/src/chains/starknet/actions/unstake/config/index.ts +0 -8
- package/src/chains/starknet/actions/unstake/config/starknet.ts +0 -43
- package/src/chains/starknet/actions/unstake/config/types.ts +0 -27
- package/src/chains/starknet/actions/unstake/factory.ts +0 -32
- package/src/chains/starknet/actions/unstake/index.ts +0 -14
- package/src/chains/starknet/actions/unstake/types.ts +0 -57
- package/src/chains/starknet/index.ts +0 -8
- package/src/chains/sui/SuiActions.ts +0 -82
- package/src/chains/sui/actions/index.ts +0 -7
- package/src/chains/sui/actions/unstake/SuiUnstake.ts +0 -146
- package/src/chains/sui/actions/unstake/config/btc.ts +0 -43
- package/src/chains/sui/actions/unstake/config/index.ts +0 -8
- package/src/chains/sui/actions/unstake/config/sui.ts +0 -43
- package/src/chains/sui/actions/unstake/config/types.ts +0 -27
- package/src/chains/sui/actions/unstake/factory.ts +0 -32
- package/src/chains/sui/actions/unstake/index.ts +0 -14
- package/src/chains/sui/actions/unstake/types.ts +0 -57
- package/src/chains/sui/index.ts +0 -8
- package/src/client/ApiNamespace.ts +0 -302
- package/src/client/AssetNamespace.ts +0 -112
- package/src/client/LombardSDK.ts +0 -212
- package/src/client/PartnerConfiguration.ts +0 -50
- package/src/client/createConfig.ts +0 -90
- package/src/client/createLombardSDK.ts +0 -130
- package/src/clients/evm-signer-adapter.ts +0 -313
- package/src/clients/public-client.ts +0 -49
- package/src/clients/rpc-url-config.ts +0 -64
- package/src/clients/wallet-client.ts +0 -34
- package/src/common/api-config.ts +0 -48
- package/src/common/blockchain-identifier.ts +0 -217
- package/src/common/chains.stories.tsx +0 -68
- package/src/common/chains.ts +0 -449
- package/src/common/constants.ts +0 -1
- package/src/common/contract-info.ts +0 -9
- package/src/common/feature-config.ts +0 -79
- package/src/common/fee-requirements.ts +0 -34
- package/src/common/parameters.ts +0 -89
- package/src/config/defaults.ts +0 -49
- package/src/config/index.ts +0 -12
- package/src/config/providers.ts +0 -81
- package/src/config/types.ts +0 -216
- package/src/config/validation.ts +0 -69
- package/src/contract-functions/approveLBTC/approveLBTC.stories.tsx +0 -79
- package/src/contract-functions/approveLBTC/approveLBTC.ts +0 -66
- package/src/contract-functions/approveLBTC/index.ts +0 -1
- package/src/contract-functions/approveToken/approveToken.ts +0 -126
- package/src/contract-functions/approveToken/index.ts +0 -1
- package/src/contract-functions/claimLBTC/claimLBTC.stories.tsx +0 -82
- package/src/contract-functions/claimLBTC/claimLBTC.ts +0 -159
- package/src/contract-functions/claimLBTC/index.ts +0 -1
- package/src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts +0 -95
- package/src/contract-functions/claimUnstakeRedeem/index.ts +0 -1
- package/src/contract-functions/deposit/depositToken.stories.tsx +0 -83
- package/src/contract-functions/deposit/depositToken.ts +0 -214
- package/src/contract-functions/deposit/index.ts +0 -1
- package/src/contract-functions/getBasculeDepositStatus/decodeBasculeDepositStatus.ts +0 -170
- package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +0 -62
- package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.ts +0 -211
- package/src/contract-functions/getBasculeDepositStatus/index.ts +0 -2
- package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.tsx +0 -61
- package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.ts +0 -193
- package/src/contract-functions/getLBTCMintingFee/index.ts +0 -1
- package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.tsx +0 -51
- package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts +0 -40
- package/src/contract-functions/getLBTCTotalSupply/index.ts +0 -1
- package/src/contract-functions/getPermitNonce/getPermitNonce.stories.tsx +0 -56
- package/src/contract-functions/getPermitNonce/getPermitNonce.ts +0 -50
- package/src/contract-functions/getPermitNonce/index.ts +0 -1
- package/src/contract-functions/getShareValue/getShareValue.stories.tsx +0 -58
- package/src/contract-functions/getShareValue/getShareValue.ts +0 -59
- package/src/contract-functions/getShareValue/index.ts +0 -1
- package/src/contract-functions/getSharesByAddress/getSharesByAddress.stories.tsx +0 -65
- package/src/contract-functions/getSharesByAddress/getSharesByAddress.ts +0 -86
- package/src/contract-functions/getSharesByAddress/index.ts +0 -4
- package/src/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.ts +0 -167
- package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.tsx +0 -180
- package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.tsx +0 -101
- package/src/contract-functions/getStakeAndBakeFee/index.ts +0 -1
- package/src/contract-functions/index.ts +0 -21
- package/src/contract-functions/signLbtcDestionationAddr/index.ts +0 -1
- package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.ts +0 -32
- package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.tsx +0 -64
- package/src/contract-functions/signNetworkFee/getTypedData.ts +0 -41
- package/src/contract-functions/signNetworkFee/index.ts +0 -1
- package/src/contract-functions/signNetworkFee/signNetworkFee.stories.tsx +0 -94
- package/src/contract-functions/signNetworkFee/signNetworkFee.ts +0 -106
- package/src/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.ts +0 -888
- package/src/contract-functions/signStakeAndBake/handleApprove.ts +0 -81
- package/src/contract-functions/signStakeAndBake/handlePermit.ts +0 -28
- package/src/contract-functions/signStakeAndBake/index.ts +0 -2
- package/src/contract-functions/signStakeAndBake/signStakeAndBake.stories.tsx +0 -202
- package/src/contract-functions/signStakeAndBake/signStakeAndBake.ts +0 -160
- package/src/contract-functions/signStakeAndBake/typed-data-builder.ts +0 -137
- package/src/contract-functions/signStakeAndBake/utils.ts +0 -61
- package/src/contract-functions/signStakeAndBake/validation.ts +0 -124
- package/src/contract-functions/unstakeLBTC/index.ts +0 -1
- package/src/contract-functions/unstakeLBTC/unstakeLBTC.stories.tsx +0 -92
- package/src/contract-functions/unstakeLBTC/unstakeLBTC.ts +0 -396
- package/src/contracts/abis/index.ts +0 -29
- package/src/contracts/index.ts +0 -63
- package/src/contracts/types.ts +0 -143
- package/src/contracts/utils.ts +0 -288
- package/src/core/assets/catalog.ts +0 -343
- package/src/core/assets/index.ts +0 -40
- package/src/core/assets/types.ts +0 -142
- package/src/core/assets/utils.ts +0 -287
- package/src/core/chains/catalog.ts +0 -396
- package/src/core/chains/index.ts +0 -39
- package/src/core/chains/types.ts +0 -193
- package/src/core/chains/utils.ts +0 -245
- package/src/core/index.ts +0 -72
- package/src/core/types.ts +0 -126
- package/src/debug-api/btc-script-to-address.ts +0 -20
- package/src/debug-api/btc-tx-info.ts +0 -32
- package/src/debug-api/evm-by-btc-address.ts +0 -26
- package/src/debug-api/index.ts +0 -3
- package/src/defi/README.md +0 -517
- package/src/defi/defi-registry.stories.tsx +0 -527
- package/src/defi/defi-registry.ts +0 -295
- package/src/defi/index.ts +0 -17
- package/src/index.ts +0 -336
- package/src/metrics/get-additional-rewards.ts +0 -69
- package/src/metrics/get-lbtc-apy.ts +0 -74
- package/src/metrics/get-lbtc-stats.stories.tsx +0 -57
- package/src/metrics/get-lbtc-stats.ts +0 -59
- package/src/metrics/get-positions-summary.stories.tsx +0 -58
- package/src/metrics/get-positions-summary.ts +0 -132
- package/src/modules/CapabilityRegistry.ts +0 -125
- package/src/modules/apiModule.ts +0 -51
- package/src/modules/btcModule.ts +0 -43
- package/src/modules/evmModule.ts +0 -48
- package/src/modules/index.ts +0 -60
- package/src/referrals/ReferralsClient.ts +0 -34
- package/src/referrals/index.ts +0 -1
- package/src/services/ApiService.ts +0 -152
- package/src/services/BtcService.ts +0 -29
- package/src/services/EvmService.ts +0 -127
- package/src/services/index.ts +0 -43
- package/src/shared/__tests__/errors.test.ts +0 -185
- package/src/shared/__tests__/events.test.ts +0 -120
- package/src/shared/__tests__/types.test.ts +0 -155
- package/src/shared/actions/BaseAction.ts +0 -497
- package/src/shared/actions/__tests__/BaseAction.test.ts +0 -292
- package/src/shared/actions/index.ts +0 -9
- package/src/shared/constants/statusConstants.ts +0 -108
- package/src/shared/context/ContextBuilder.ts +0 -149
- package/src/shared/context/index.ts +0 -8
- package/src/shared/context/types.ts +0 -156
- package/src/shared/deposits/depositStatus.ts +0 -402
- package/src/shared/deposits/index.ts +0 -29
- package/src/shared/errors.ts +0 -405
- package/src/shared/events.ts +0 -260
- package/src/shared/evm/switchChain.ts +0 -109
- package/src/shared/index.ts +0 -54
- package/src/shared/monitoring/__tests__/createEventEmitter.test.ts +0 -150
- package/src/shared/monitoring/createEventEmitter.ts +0 -160
- package/src/shared/monitoring/createProgressEmitter.ts +0 -46
- package/src/shared/monitoring/depositMonitor.ts +0 -211
- package/src/shared/monitoring/index.ts +0 -25
- package/src/shared/validation/index.ts +0 -411
- package/src/stories/arg-types.ts +0 -38
- package/src/stories/components/Badge.tsx +0 -27
- package/src/stories/components/Button/Button.css +0 -10
- package/src/stories/components/Button/Button.tsx +0 -52
- package/src/stories/components/Button/index.ts +0 -1
- package/src/stories/components/Card.tsx +0 -18
- package/src/stories/components/CodeBlock/CodeBlock.tsx +0 -27
- package/src/stories/components/CodeBlock/CodeBlockStyles.css +0 -3
- package/src/stories/components/CodeBlock/index.ts +0 -1
- package/src/stories/components/ConnectButton/connect-button.tsx +0 -248
- package/src/stories/components/ConnectButton/index.ts +0 -1
- package/src/stories/components/JsonPreview.tsx +0 -84
- package/src/stories/components/Spinner/Spinner.tsx +0 -27
- package/src/stories/components/Spinner/index.ts +0 -1
- package/src/stories/components/StatsCard.tsx +0 -30
- package/src/stories/components/StatusIndicator.tsx +0 -37
- package/src/stories/components/TreeNode.tsx +0 -47
- package/src/stories/components/decorators/function-type.tsx +0 -63
- package/src/stories/components/decorators/index.ts +0 -2
- package/src/stories/components/decorators/wagmi-decorator.tsx +0 -92
- package/src/stories/components/error-block.tsx +0 -21
- package/src/stories/components/index.ts +0 -11
- package/src/stories/constants.ts +0 -3
- package/src/stories/hooks/useConnection.ts +0 -63
- package/src/stories/hooks/useQuery.ts +0 -57
- package/src/tokens/__tests__/token-addresses.test.ts +0 -551
- package/src/tokens/abi/ASSET_ROUTER_ABI.ts +0 -1966
- package/src/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.ts +0 -1405
- package/src/tokens/abi/BTCK_ABI.ts +0 -1092
- package/src/tokens/abi/KATANA_BASCULE_ABI.ts +0 -653
- package/src/tokens/abi/LBTC_ABI.json +0 -1761
- package/src/tokens/abi/LBTC_ABI.ts +0 -1761
- package/src/tokens/abi/LBTC_BASCULE_ABI.json +0 -850
- package/src/tokens/abi/NATIVE_LBTC_ABI.ts +0 -1147
- package/src/tokens/abi/STLBTC_ABI.ts +0 -1062
- package/src/tokens/cross-chain-addresses.stories.tsx +0 -236
- package/src/tokens/denomination-utils.stories.tsx +0 -176
- package/src/tokens/getLbtcContractAddresses.stories.tsx +0 -158
- package/src/tokens/getTokenByAddress.stories.tsx +0 -172
- package/src/tokens/getTokenContractInfo.stories.tsx +0 -148
- package/src/tokens/getTokenInfo.stories.tsx +0 -133
- package/src/tokens/isUpgradedContract.stories.tsx +0 -124
- package/src/tokens/lbtc-addresses.ts +0 -18
- package/src/tokens/token-addresses.ts +0 -477
- package/src/tokens/tokens.ts +0 -249
- package/src/tokens/types.ts +0 -80
- package/src/utils/array.ts +0 -31
- package/src/utils/block.ts +0 -23
- package/src/utils/chain.ts +0 -152
- package/src/utils/consoleLogger.ts +0 -140
- package/src/utils/ensureNotSanctionedAddress.ts +0 -11
- package/src/utils/env.ts +0 -20
- package/src/utils/err.ts +0 -83
- package/src/utils/evmAccount.ts +0 -47
- package/src/utils/gas.ts +0 -36
- package/src/utils/hex.ts +0 -9
- package/src/utils/http.ts +0 -224
- package/src/utils/numbers.ts +0 -37
- package/src/utils/pagination.ts +0 -70
- package/src/utils/satoshi.ts +0 -41
- package/src/utils/time.ts +0 -12
- package/src/utils/transaction-executor.ts +0 -299
- package/src/vaults/abi/SILO_VAULT_SPENDER_ABI.json +0 -793
- package/src/vaults/abi/VEDA_VAULT_ABI.json +0 -452
- package/src/vaults/abi/VEDA_VAULT_ACCOUNTANT_ABI.json +0 -591
- package/src/vaults/abi/VEDA_VAULT_BASE_ASSET_ABI.json +0 -296
- package/src/vaults/abi/VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI.json +0 -502
- package/src/vaults/abi/VEDA_VAULT_LENS_ABI.json +0 -175
- package/src/vaults/abi/VEDA_VAULT_SPENDER_ABI.json +0 -408
- package/src/vaults/abi/VEDA_VAULT_TELLER_ABI.json +0 -700
- package/src/vaults/abi/index.ts +0 -4
- package/src/vaults/index.ts +0 -46
- package/src/vaults/lib/config.ts +0 -184
- package/src/vaults/lib/metrics/get-vault-apy.stories.tsx +0 -58
- package/src/vaults/lib/metrics/get-vault-apy.ts +0 -176
- package/src/vaults/lib/metrics/get-vault-points.stories.tsx +0 -60
- package/src/vaults/lib/metrics/get-vault-points.ts +0 -74
- package/src/vaults/lib/metrics/get-vault-tvl.stories.tsx +0 -58
- package/src/vaults/lib/metrics/get-vault-tvl.ts +0 -121
- package/src/vaults/lib/ops/cancel-withdraw.stories.tsx +0 -80
- package/src/vaults/lib/ops/deposit.stories.tsx +0 -82
- package/src/vaults/lib/ops/deposit.ts +0 -152
- package/src/vaults/lib/ops/get-vault-deposits.stories.tsx +0 -65
- package/src/vaults/lib/ops/get-vault-deposits.ts +0 -209
- package/src/vaults/lib/ops/get-vault-withdrawals.stories.tsx +0 -67
- package/src/vaults/lib/ops/get-vault-withdrawals.ts +0 -349
- package/src/vaults/lib/ops/withdraw.stories.tsx +0 -82
- package/src/vaults/lib/ops/withdraw.ts +0 -225
- package/src/version.ts +0 -56
- package/src/vite-env.d.ts +0 -1
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Existing Signature Handling Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for Bug #3 (BTC Stake active signature error) and
|
|
5
|
-
* Bug #7 (Stake & Bake signature check).
|
|
6
|
-
*
|
|
7
|
-
* These tests verify the SDK handles existing deposits/signatures gracefully:
|
|
8
|
-
* 1. Resuming from existing deposit addresses
|
|
9
|
-
* 2. Handling API errors for duplicate signatures
|
|
10
|
-
* 3. Proper error messages for users
|
|
11
|
-
*
|
|
12
|
-
* @module __tests__/unit/btc/ExistingSignatureHandling.test.ts
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
16
|
-
|
|
17
|
-
import { BaseBtcAction, type StatusConfig, type StepDefinition } from '../../../chains/btc/actions/shared/BaseBtcAction';
|
|
18
|
-
import { PartnerConfiguration } from '../../../client/PartnerConfiguration';
|
|
19
|
-
import { ChainId } from '../../../common/chains';
|
|
20
|
-
import { Chain, Env, StepStatus } from '../../../core';
|
|
21
|
-
import type { BtcCoreContext } from '../../../shared/context';
|
|
22
|
-
import { evmAddressSchema } from '../../../shared/validation';
|
|
23
|
-
|
|
24
|
-
// Mock context factory
|
|
25
|
-
const createMockContext = (overrides: Partial<BtcCoreContext> = {}): BtcCoreContext => ({
|
|
26
|
-
env: Env.testnet,
|
|
27
|
-
btc: {} as BtcCoreContext['btc'],
|
|
28
|
-
api: {
|
|
29
|
-
generateDepositAddress: vi.fn().mockResolvedValue('tb1qexampleaddress'),
|
|
30
|
-
getDepositAddress: vi.fn().mockResolvedValue(null),
|
|
31
|
-
getFeeSignature: vi.fn(),
|
|
32
|
-
storeFeeSignature: vi.fn(),
|
|
33
|
-
getStakeAndBakeSignature: vi.fn(),
|
|
34
|
-
storeStakeAndBakeSignature: vi.fn(),
|
|
35
|
-
getDeposits: vi.fn(),
|
|
36
|
-
} as BtcCoreContext['api'],
|
|
37
|
-
partner: new PartnerConfiguration({ partnerId: 'test-partner' }),
|
|
38
|
-
capabilities: {
|
|
39
|
-
require: vi.fn(),
|
|
40
|
-
get: vi.fn(),
|
|
41
|
-
services: new Map(),
|
|
42
|
-
registerModule: vi.fn(),
|
|
43
|
-
hasModule: vi.fn().mockReturnValue(true),
|
|
44
|
-
modules: [],
|
|
45
|
-
shared: [],
|
|
46
|
-
config: {},
|
|
47
|
-
optional: [],
|
|
48
|
-
createContext: vi.fn(),
|
|
49
|
-
} as unknown as BtcCoreContext['capabilities'],
|
|
50
|
-
getProvider: vi.fn().mockResolvedValue({
|
|
51
|
-
on: vi.fn(),
|
|
52
|
-
removeListener: vi.fn(),
|
|
53
|
-
request: vi.fn().mockResolvedValue('0x1'),
|
|
54
|
-
}),
|
|
55
|
-
...overrides,
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// Test implementation of BaseBtcAction
|
|
59
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Test mock with generic step definition
|
|
60
|
-
class TestBtcAction extends BaseBtcAction<any, string, { destChain: Chain }> {
|
|
61
|
-
private chainId: ChainId = ChainId.sepolia;
|
|
62
|
-
|
|
63
|
-
constructor(ctx: BtcCoreContext, params: { destChain: Chain }, initialStatus: string = 'idle') {
|
|
64
|
-
super(ctx, params, initialStatus);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
protected getAddressSchema() {
|
|
68
|
-
return evmAddressSchema;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
protected getStatusConfig(): StatusConfig<string> {
|
|
72
|
-
return {
|
|
73
|
-
idle: 'idle',
|
|
74
|
-
ready: 'ready',
|
|
75
|
-
addressReady: 'address_ready',
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
protected getInitialSteps(): StepDefinition {
|
|
80
|
-
return {
|
|
81
|
-
created: StepStatus.IDLE,
|
|
82
|
-
verifying: StepStatus.IDLE,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
protected isAuthorized(): boolean {
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
protected getChainId(): ChainId {
|
|
91
|
-
return this.chainId;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
protected getDepositAddressParams() {
|
|
95
|
-
return {
|
|
96
|
-
address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
97
|
-
chainId: this.chainId,
|
|
98
|
-
signature: '0xsignature',
|
|
99
|
-
token: 'LBTC',
|
|
100
|
-
partnerId: 'test-partner',
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
protected getExpectedToken(): string {
|
|
105
|
-
return 'LBTC';
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
protected getAuthRequiredMessage(): string {
|
|
109
|
-
return 'Authorization required';
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Expose protected method for testing
|
|
113
|
-
public async testResumeFromExisting(recipient: string): Promise<boolean> {
|
|
114
|
-
return this.resumeFromExistingDeposit(recipient);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Expose deposit address for assertions
|
|
118
|
-
public getDepositAddr(): string | undefined {
|
|
119
|
-
return this._depositAddress;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
describe('Existing Signature/Deposit Handling (Bug #3 & #7)', () => {
|
|
124
|
-
let mockCtx: BtcCoreContext;
|
|
125
|
-
|
|
126
|
-
beforeEach(() => {
|
|
127
|
-
vi.clearAllMocks();
|
|
128
|
-
mockCtx = createMockContext();
|
|
129
|
-
});
|
|
130
|
-
|
|
131
|
-
describe('Resume from existing deposit (Bug #3 - partial fix)', () => {
|
|
132
|
-
it('should resume when existing deposit address found', async () => {
|
|
133
|
-
// Mock API to return existing deposit address
|
|
134
|
-
const existingAddress = 'tb1qexistingdeposit';
|
|
135
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue(existingAddress);
|
|
136
|
-
|
|
137
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
138
|
-
const recipient = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
|
|
139
|
-
|
|
140
|
-
const resumed = await action.testResumeFromExisting(recipient);
|
|
141
|
-
|
|
142
|
-
expect(resumed).toBe(true);
|
|
143
|
-
expect(action.getDepositAddr()).toBe(existingAddress);
|
|
144
|
-
// Note: resumeFromExistingDeposit no longer updates status
|
|
145
|
-
// The caller (prepare()) is responsible for setting status after fee auth check
|
|
146
|
-
expect(action.status).toBe('idle');
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
it('should NOT resume when no existing deposit', async () => {
|
|
150
|
-
// Mock API to return null (no existing deposit)
|
|
151
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue(null);
|
|
152
|
-
|
|
153
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
154
|
-
const recipient = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
|
|
155
|
-
|
|
156
|
-
const resumed = await action.testResumeFromExisting(recipient);
|
|
157
|
-
|
|
158
|
-
expect(resumed).toBe(false);
|
|
159
|
-
expect(action.getDepositAddr()).toBeUndefined();
|
|
160
|
-
expect(action.status).toBe('idle'); // Status unchanged
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it('should NOT resume when API throws error', async () => {
|
|
164
|
-
// Mock API to throw (e.g., network error)
|
|
165
|
-
mockCtx.api.getDepositAddress = vi.fn().mockRejectedValue(new Error('Network error'));
|
|
166
|
-
|
|
167
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
168
|
-
const recipient = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
|
|
169
|
-
|
|
170
|
-
const resumed = await action.testResumeFromExisting(recipient);
|
|
171
|
-
|
|
172
|
-
expect(resumed).toBe(false);
|
|
173
|
-
expect(action.status).toBe('idle'); // Status unchanged, error swallowed
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it('should call API with correct parameters', async () => {
|
|
177
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue(null);
|
|
178
|
-
|
|
179
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
180
|
-
const recipient = '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0';
|
|
181
|
-
|
|
182
|
-
await action.testResumeFromExisting(recipient);
|
|
183
|
-
|
|
184
|
-
expect(mockCtx.api.getDepositAddress).toHaveBeenCalledWith({
|
|
185
|
-
address: recipient,
|
|
186
|
-
chainId: 11155111, // Sepolia chain ID
|
|
187
|
-
token: 'LBTC',
|
|
188
|
-
partnerId: 'test-partner',
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
describe('API Error Messages (for user-facing errors)', () => {
|
|
194
|
-
/**
|
|
195
|
-
* These tests document expected API error messages that the SDK
|
|
196
|
-
* should handle gracefully or provide helpful error messages for.
|
|
197
|
-
*/
|
|
198
|
-
|
|
199
|
-
it('should identify "active signature" errors', () => {
|
|
200
|
-
const errorPatterns = [
|
|
201
|
-
'active signature already exists for this user',
|
|
202
|
-
'signature already exists',
|
|
203
|
-
'existing stake found',
|
|
204
|
-
'pending stake already exists',
|
|
205
|
-
];
|
|
206
|
-
|
|
207
|
-
// Helper to check if an error message matches expected patterns
|
|
208
|
-
const isActiveSignatureError = (message: string): boolean => {
|
|
209
|
-
const normalized = message.toLowerCase();
|
|
210
|
-
return errorPatterns.some(pattern => normalized.includes(pattern.toLowerCase()));
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
expect(isActiveSignatureError('Active signature already exists for this user')).toBe(true);
|
|
214
|
-
expect(isActiveSignatureError('Signature already exists for address 0x123')).toBe(true);
|
|
215
|
-
expect(isActiveSignatureError('Network timeout')).toBe(false);
|
|
216
|
-
expect(isActiveSignatureError('Invalid address')).toBe(false);
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
it('should provide enhanced error message for duplicate signature errors', () => {
|
|
220
|
-
// This tests the error enhancement logic that should be implemented
|
|
221
|
-
// in the SDK Demo or SDK itself
|
|
222
|
-
|
|
223
|
-
const enhanceErrorMessage = (error: Error): string => {
|
|
224
|
-
const message = error.message.toLowerCase();
|
|
225
|
-
|
|
226
|
-
if (message.includes('active signature') || message.includes('signature already exists')) {
|
|
227
|
-
return `You already have a pending stake. Please complete the existing flow using your deposit address, or wait for it to expire. You can check your pending stakes in the Deposit Addresses section.`;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
if (message.includes('stake and bake signature already exists')) {
|
|
231
|
-
return `You already have a pending stake-and-deploy signature. Please complete that flow first or wait for expiration.`;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return error.message;
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
const originalError = new Error('Active signature already exists for this user');
|
|
238
|
-
const enhanced = enhanceErrorMessage(originalError);
|
|
239
|
-
|
|
240
|
-
expect(enhanced).toContain('pending stake');
|
|
241
|
-
expect(enhanced).toContain('deposit address');
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
describe('Status transitions during resume', () => {
|
|
246
|
-
it('should NOT transition status when resuming (caller sets status after fee auth check)', async () => {
|
|
247
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue('tb1qexisting');
|
|
248
|
-
|
|
249
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
250
|
-
const statusHistory: string[] = [];
|
|
251
|
-
|
|
252
|
-
action.on('status-change', (status: string) => {
|
|
253
|
-
statusHistory.push(status);
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
await action.testResumeFromExisting('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
|
|
257
|
-
|
|
258
|
-
// resumeFromExistingDeposit no longer emits status changes
|
|
259
|
-
// The caller (prepare()) sets status after validating fee auth
|
|
260
|
-
expect(statusHistory).not.toContain('address_ready');
|
|
261
|
-
expect(statusHistory).toHaveLength(0);
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
it('should NOT change status when no existing deposit', async () => {
|
|
265
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue(null);
|
|
266
|
-
|
|
267
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
268
|
-
const statusHistory: string[] = [];
|
|
269
|
-
|
|
270
|
-
action.on('status-change', (status: string) => {
|
|
271
|
-
statusHistory.push(status);
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
await action.testResumeFromExisting('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
|
|
275
|
-
|
|
276
|
-
expect(statusHistory).toEqual([]); // No status changes
|
|
277
|
-
});
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
describe('Edge cases', () => {
|
|
281
|
-
it('should handle undefined/null address from API', async () => {
|
|
282
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue(undefined);
|
|
283
|
-
|
|
284
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
285
|
-
const resumed = await action.testResumeFromExisting('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
|
|
286
|
-
|
|
287
|
-
expect(resumed).toBe(false);
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
it('should handle empty string address from API', async () => {
|
|
291
|
-
mockCtx.api.getDepositAddress = vi.fn().mockResolvedValue('');
|
|
292
|
-
|
|
293
|
-
const action = new TestBtcAction(mockCtx, { destChain: Chain.SEPOLIA }, 'idle');
|
|
294
|
-
const resumed = await action.testResumeFromExisting('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
|
|
295
|
-
|
|
296
|
-
// Empty string is falsy, so should not resume
|
|
297
|
-
expect(resumed).toBe(false);
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
});
|
|
301
|
-
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stake and Bake Ratio Conversion Tests
|
|
3
|
-
*
|
|
4
|
-
* Verifies that BtcStakeAndDeploy correctly passes 'BTC' as the token
|
|
5
|
-
* to trigger the btcToLbtc ratio conversion in signStakeAndBake.
|
|
6
|
-
*
|
|
7
|
-
* Bug Reference: APP-1993
|
|
8
|
-
* Problem: Signature contained raw BTC amount (20000) instead of
|
|
9
|
-
* ratio-adjusted LBTC amount (19947), causing backend to reject deposit.
|
|
10
|
-
*
|
|
11
|
-
* Root Cause: BtcStakeAndDeploy passed `token: AssetId.LBTC` instead of
|
|
12
|
-
* `token: 'BTC'`, which triggered 'identity' strategy instead of 'btcToLbtc'.
|
|
13
|
-
*
|
|
14
|
-
* @module __tests__/unit/btc/StakeAndBakeRatioConversion.test.ts
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import BigNumber from 'bignumber.js';
|
|
18
|
-
import { afterEach,beforeEach, describe, expect, it, vi } from 'vitest';
|
|
19
|
-
|
|
20
|
-
import { DEFI_REGISTRY,DefiProtocol } from '../../../defi/defi-registry';
|
|
21
|
-
import { Token } from '../../../tokens/token-addresses';
|
|
22
|
-
|
|
23
|
-
// Mock the exchange ratio API
|
|
24
|
-
vi.mock(
|
|
25
|
-
'../../../api-functions/getLBTCExchangeRate/get-exchange-ratio',
|
|
26
|
-
() => ({
|
|
27
|
-
getExchangeRatio: vi.fn().mockResolvedValue({
|
|
28
|
-
LBTC: {
|
|
29
|
-
tokenBTCRatio: new BigNumber('0.99736'),
|
|
30
|
-
BTCTokenRatio: new BigNumber('1.00265'),
|
|
31
|
-
},
|
|
32
|
-
}),
|
|
33
|
-
}),
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
describe('Stake and Bake Ratio Conversion', () => {
|
|
37
|
-
beforeEach(() => {
|
|
38
|
-
vi.clearAllMocks();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
afterEach(() => {
|
|
42
|
-
vi.restoreAllMocks();
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
describe('DEFI_REGISTRY Configuration', () => {
|
|
46
|
-
it('should have btcToLbtc strategy for BTC token in Veda protocol', () => {
|
|
47
|
-
// This ensures that when 'BTC' is passed as token, ratio conversion happens
|
|
48
|
-
const vedaRegistry = DEFI_REGISTRY[DefiProtocol.Veda];
|
|
49
|
-
expect(vedaRegistry).toBeDefined();
|
|
50
|
-
|
|
51
|
-
const btcStrategy = vedaRegistry['BTC'];
|
|
52
|
-
expect(btcStrategy).toBeDefined();
|
|
53
|
-
if (!btcStrategy) return;
|
|
54
|
-
|
|
55
|
-
// Check that at least one environment has btcToLbtc strategy
|
|
56
|
-
const envs = Object.values(btcStrategy);
|
|
57
|
-
const hasConversion = envs.some(envMap =>
|
|
58
|
-
envMap ? Object.values(envMap).some(
|
|
59
|
-
chainConfig => chainConfig?.amountStrategy === 'btcToLbtc',
|
|
60
|
-
) : false,
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
expect(hasConversion).toBe(true);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it('should have identity strategy for LBTC token in Veda protocol', () => {
|
|
67
|
-
// This shows that passing LBTC as token does NOT trigger conversion
|
|
68
|
-
const vedaRegistry = DEFI_REGISTRY[DefiProtocol.Veda];
|
|
69
|
-
expect(vedaRegistry).toBeDefined();
|
|
70
|
-
|
|
71
|
-
const lbtcStrategy = vedaRegistry[Token.LBTC];
|
|
72
|
-
expect(lbtcStrategy).toBeDefined();
|
|
73
|
-
if (!lbtcStrategy) return;
|
|
74
|
-
|
|
75
|
-
// Check that LBTC uses identity strategy (no conversion)
|
|
76
|
-
const envs = Object.values(lbtcStrategy);
|
|
77
|
-
const hasIdentity = envs.some(envMap =>
|
|
78
|
-
envMap ? Object.values(envMap).some(
|
|
79
|
-
chainConfig => chainConfig?.amountStrategy === 'identity',
|
|
80
|
-
) : false,
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
expect(hasIdentity).toBe(true);
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
it('should have identity strategy for BTCb token in Silo protocol', () => {
|
|
87
|
-
// BTCb in Silo uses identity - no conversion needed
|
|
88
|
-
const siloRegistry = DEFI_REGISTRY[DefiProtocol.Silo];
|
|
89
|
-
expect(siloRegistry).toBeDefined();
|
|
90
|
-
|
|
91
|
-
const btcbStrategy = siloRegistry[Token.BTCb];
|
|
92
|
-
expect(btcbStrategy).toBeDefined();
|
|
93
|
-
if (!btcbStrategy) return;
|
|
94
|
-
|
|
95
|
-
// Check that BTCb uses identity strategy
|
|
96
|
-
const envs = Object.values(btcbStrategy);
|
|
97
|
-
const hasIdentity = envs.some(envMap =>
|
|
98
|
-
envMap ? Object.values(envMap).some(
|
|
99
|
-
chainConfig => chainConfig?.amountStrategy === 'identity',
|
|
100
|
-
) : false,
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
expect(hasIdentity).toBe(true);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('Ratio Conversion Logic', () => {
|
|
108
|
-
it('should calculate correct LBTC amount from BTC using ratio', async () => {
|
|
109
|
-
// Import the actual function to test the conversion logic
|
|
110
|
-
const { calculateStakeAndBakeLBTCAmount } = await import(
|
|
111
|
-
'../../../contract-functions/signStakeAndBake/utils'
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
// Test with example values from the bug report:
|
|
115
|
-
// User sends 20000 satoshis, ratio is ~1.00265
|
|
116
|
-
// Expected LBTC amount: 20000 / 1.00265 ≈ 19947
|
|
117
|
-
const btcAmount = new BigNumber(20000); // satoshis
|
|
118
|
-
const result = await calculateStakeAndBakeLBTCAmount(btcAmount);
|
|
119
|
-
|
|
120
|
-
// The result should be less than the input (due to ratio > 1)
|
|
121
|
-
expect(result.isLessThan(btcAmount)).toBe(true);
|
|
122
|
-
|
|
123
|
-
// With ratio 1.00265, 20000 / 1.00265 ≈ 19947.12
|
|
124
|
-
// Allow for small precision differences
|
|
125
|
-
expect(result.toFixed(0)).toBe('19947');
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
it('should return same amount when ratio is 1', async () => {
|
|
129
|
-
// Reset the mock to return ratio of 1
|
|
130
|
-
const { getExchangeRatio } = await import(
|
|
131
|
-
'../../../api-functions/getLBTCExchangeRate/get-exchange-ratio'
|
|
132
|
-
);
|
|
133
|
-
vi.mocked(getExchangeRatio).mockResolvedValueOnce({
|
|
134
|
-
LBTC: {
|
|
135
|
-
tokenBTCRatio: new BigNumber(1),
|
|
136
|
-
BTCTokenRatio: new BigNumber(1),
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
const { calculateStakeAndBakeLBTCAmount } = await import(
|
|
141
|
-
'../../../contract-functions/signStakeAndBake/utils'
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
const btcAmount = new BigNumber(20000);
|
|
145
|
-
const result = await calculateStakeAndBakeLBTCAmount(btcAmount);
|
|
146
|
-
|
|
147
|
-
expect(result.isEqualTo(btcAmount)).toBe(true);
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
describe('Token Parameter Selection', () => {
|
|
152
|
-
it('BtcStakeAndDeploy should use BTC token for authorizeStakeAndBake', () => {
|
|
153
|
-
/**
|
|
154
|
-
* This test documents the expected behavior:
|
|
155
|
-
*
|
|
156
|
-
* BtcStakeAndDeploy.authorizeDeposit() should call:
|
|
157
|
-
* authorizeStakeAndBake({ ..., token: 'BTC' })
|
|
158
|
-
*
|
|
159
|
-
* NOT:
|
|
160
|
-
* authorizeStakeAndBake({ ..., token: AssetId.LBTC })
|
|
161
|
-
*
|
|
162
|
-
* The 'BTC' token triggers 'btcToLbtc' amountStrategy which applies
|
|
163
|
-
* the ratio conversion before signing.
|
|
164
|
-
*
|
|
165
|
-
* This is critical because the backend expects the signature to contain
|
|
166
|
-
* the ratio-adjusted LBTC amount, not the raw BTC amount.
|
|
167
|
-
*/
|
|
168
|
-
|
|
169
|
-
// Verify the registry is configured correctly for this use case
|
|
170
|
-
const vedaBtcConfig = DEFI_REGISTRY[DefiProtocol.Veda]?.['BTC'];
|
|
171
|
-
expect(vedaBtcConfig).toBeDefined();
|
|
172
|
-
|
|
173
|
-
// The fix ensures BtcStakeAndDeploy passes 'BTC' which hits this config
|
|
174
|
-
if (!vedaBtcConfig) return;
|
|
175
|
-
const firstEnv = Object.values(vedaBtcConfig)[0];
|
|
176
|
-
if (!firstEnv) return;
|
|
177
|
-
const firstChain = Object.values(firstEnv)[0];
|
|
178
|
-
|
|
179
|
-
expect(firstChain?.amountStrategy).toBe('btcToLbtc');
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
it('BtcDepositAndDeploy should use BTCb token (no conversion)', () => {
|
|
183
|
-
/**
|
|
184
|
-
* BtcDepositAndDeploy correctly uses Token.BTCb which has 'identity'
|
|
185
|
-
* strategy - no ratio conversion is needed for BTC.b deposits.
|
|
186
|
-
*
|
|
187
|
-
* This is correct because 1 BTC = 1 BTC.b (no exchange rate).
|
|
188
|
-
*/
|
|
189
|
-
const siloBtcbConfig = DEFI_REGISTRY[DefiProtocol.Silo]?.[Token.BTCb];
|
|
190
|
-
expect(siloBtcbConfig).toBeDefined();
|
|
191
|
-
if (!siloBtcbConfig) return;
|
|
192
|
-
|
|
193
|
-
const firstEnv = Object.values(siloBtcbConfig)[0];
|
|
194
|
-
if (!firstEnv) return;
|
|
195
|
-
const firstChain = Object.values(firstEnv)[0];
|
|
196
|
-
|
|
197
|
-
expect(firstChain?.amountStrategy).toBe('identity');
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
});
|