@lombard.finance/sdk 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/index2.cjs +6 -6
- package/dist/index2.js +762 -754
- 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,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* StakeAndBake Signature Restoration Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests the logic for checking existing stake and bake signatures
|
|
5
|
-
* before prompting the user to sign.
|
|
6
|
-
*
|
|
7
|
-
* Bug #7: Stake & Bake always asks user to sign even if valid signature exists
|
|
8
|
-
*
|
|
9
|
-
* @module __tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { describe, expect, it } from 'vitest';
|
|
13
|
-
|
|
14
|
-
describe('StakeAndBake Signature Restoration Logic', () => {
|
|
15
|
-
describe('Expiration Check', () => {
|
|
16
|
-
it('should reject expired signatures', () => {
|
|
17
|
-
// Simulate expiration check logic from restoreStakeAndBakeSignature
|
|
18
|
-
const checkExpiration = (expirationDate: string): boolean => {
|
|
19
|
-
const expirationMs = Number(expirationDate) * 1000;
|
|
20
|
-
return expirationMs >= Date.now();
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
// Expired signature (1 hour ago)
|
|
24
|
-
const expiredTimestamp = String(Math.floor(Date.now() / 1000) - 3600);
|
|
25
|
-
expect(checkExpiration(expiredTimestamp)).toBe(false);
|
|
26
|
-
|
|
27
|
-
// Valid signature (expires in 24 hours)
|
|
28
|
-
const validTimestamp = String(Math.floor(Date.now() / 1000) + 86400);
|
|
29
|
-
expect(checkExpiration(validTimestamp)).toBe(true);
|
|
30
|
-
|
|
31
|
-
// Valid signature (expires in 1 minute)
|
|
32
|
-
const almostExpiredTimestamp = String(Math.floor(Date.now() / 1000) + 60);
|
|
33
|
-
expect(checkExpiration(almostExpiredTimestamp)).toBe(true);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should handle edge case of exactly now (within tolerance)', () => {
|
|
37
|
-
// Note: The actual implementation uses `< Date.now()` which means
|
|
38
|
-
// a signature expiring at the current second is considered expired.
|
|
39
|
-
// This is the safer behavior to avoid race conditions.
|
|
40
|
-
const checkExpiration = (expirationDate: string): boolean => {
|
|
41
|
-
const expirationMs = Number(expirationDate) * 1000;
|
|
42
|
-
return expirationMs >= Date.now();
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
// Edge case: expires 2 seconds from now (to avoid timing issues in test)
|
|
46
|
-
const soonTimestamp = String(Math.floor(Date.now() / 1000) + 2);
|
|
47
|
-
expect(checkExpiration(soonTimestamp)).toBe(true);
|
|
48
|
-
|
|
49
|
-
// Edge case: expired 2 seconds ago
|
|
50
|
-
const justExpiredTimestamp = String(Math.floor(Date.now() / 1000) - 2);
|
|
51
|
-
expect(checkExpiration(justExpiredTimestamp)).toBe(false);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
describe('Signature Restoration Result Handling', () => {
|
|
56
|
-
interface StakeAndBakeRestoreResult {
|
|
57
|
-
hasSignature: boolean;
|
|
58
|
-
signature?: string;
|
|
59
|
-
depositAmount?: string;
|
|
60
|
-
expirationDate?: string;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const shouldSkipAuthorization = (
|
|
64
|
-
result: StakeAndBakeRestoreResult | null,
|
|
65
|
-
): boolean => {
|
|
66
|
-
return result?.hasSignature === true;
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
it('should skip authorization when valid signature exists', () => {
|
|
70
|
-
const validResult: StakeAndBakeRestoreResult = {
|
|
71
|
-
hasSignature: true,
|
|
72
|
-
signature: '0xabc123',
|
|
73
|
-
depositAmount: '20000',
|
|
74
|
-
expirationDate: String(Math.floor(Date.now() / 1000) + 86400),
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
expect(shouldSkipAuthorization(validResult)).toBe(true);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it('should require authorization when result is null', () => {
|
|
81
|
-
expect(shouldSkipAuthorization(null)).toBe(false);
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it('should require authorization when hasSignature is false', () => {
|
|
85
|
-
const noSignatureResult: StakeAndBakeRestoreResult = {
|
|
86
|
-
hasSignature: false,
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
expect(shouldSkipAuthorization(noSignatureResult)).toBe(false);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('should skip authorization even if signature string is undefined (server has it)', () => {
|
|
93
|
-
// In some cases, the API may not return the actual signature string
|
|
94
|
-
// but still indicate that a valid signature exists
|
|
95
|
-
const hasSignatureNoString: StakeAndBakeRestoreResult = {
|
|
96
|
-
hasSignature: true,
|
|
97
|
-
depositAmount: '20000',
|
|
98
|
-
expirationDate: String(Math.floor(Date.now() / 1000) + 86400),
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
expect(shouldSkipAuthorization(hasSignatureNoString)).toBe(true);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe('Status Flow Documentation', () => {
|
|
106
|
-
/**
|
|
107
|
-
* Documents the expected status transitions for BtcStakeAndDeploy.prepare()
|
|
108
|
-
*
|
|
109
|
-
* Scenario 1: No existing deposit, no existing signature
|
|
110
|
-
* IDLE → prepare() → NEEDS_DEPLOY_AUTHORIZATION
|
|
111
|
-
*
|
|
112
|
-
* Scenario 2: No existing deposit, valid signature exists
|
|
113
|
-
* IDLE → prepare() → READY (skip authorization)
|
|
114
|
-
*
|
|
115
|
-
* Scenario 3: Existing deposit, valid signature exists
|
|
116
|
-
* IDLE → prepare() → ADDRESS_READY (skip authorization)
|
|
117
|
-
*
|
|
118
|
-
* Scenario 4: Existing deposit, signature expired/missing
|
|
119
|
-
* IDLE → prepare() → NEEDS_DEPLOY_AUTHORIZATION (re-auth needed)
|
|
120
|
-
*/
|
|
121
|
-
|
|
122
|
-
it('should document scenario 1: fresh start requires authorization', () => {
|
|
123
|
-
const hasDeposit = false;
|
|
124
|
-
const hasValidSignature = false;
|
|
125
|
-
|
|
126
|
-
const expectedStatus = !hasDeposit && !hasValidSignature
|
|
127
|
-
? 'NEEDS_DEPLOY_AUTHORIZATION'
|
|
128
|
-
: 'READY';
|
|
129
|
-
|
|
130
|
-
expect(expectedStatus).toBe('NEEDS_DEPLOY_AUTHORIZATION');
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
it('should document scenario 2: existing signature skips to READY', () => {
|
|
134
|
-
const _hasDeposit = false; // Not used in this scenario - signature alone determines status
|
|
135
|
-
const hasValidSignature = true;
|
|
136
|
-
|
|
137
|
-
const expectedStatus = hasValidSignature ? 'READY' : 'NEEDS_DEPLOY_AUTHORIZATION';
|
|
138
|
-
|
|
139
|
-
expect(expectedStatus).toBe('READY');
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it('should document scenario 3: existing deposit + signature → ADDRESS_READY', () => {
|
|
143
|
-
const hasDeposit = true;
|
|
144
|
-
const hasValidSignature = true;
|
|
145
|
-
|
|
146
|
-
const expectedStatus = hasDeposit && hasValidSignature
|
|
147
|
-
? 'ADDRESS_READY'
|
|
148
|
-
: 'NEEDS_DEPLOY_AUTHORIZATION';
|
|
149
|
-
|
|
150
|
-
expect(expectedStatus).toBe('ADDRESS_READY');
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
it('should document scenario 4: deposit exists but signature expired → re-auth', () => {
|
|
154
|
-
const hasDeposit = true;
|
|
155
|
-
const hasValidSignature = false;
|
|
156
|
-
|
|
157
|
-
const expectedStatus = hasDeposit && !hasValidSignature
|
|
158
|
-
? 'NEEDS_DEPLOY_AUTHORIZATION'
|
|
159
|
-
: 'ADDRESS_READY';
|
|
160
|
-
|
|
161
|
-
expect(expectedStatus).toBe('NEEDS_DEPLOY_AUTHORIZATION');
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
describe('Error Handling', () => {
|
|
166
|
-
it('should treat API errors as no-signature-found', async () => {
|
|
167
|
-
// Simulate the error handling in restoreStakeAndBakeSignature
|
|
168
|
-
const restoreWithErrorHandling = async (): Promise<null> => {
|
|
169
|
-
try {
|
|
170
|
-
throw new Error('Network error');
|
|
171
|
-
} catch {
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
const result = await restoreWithErrorHandling();
|
|
177
|
-
expect(result).toBeNull();
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
describe('getUserStakeAndBakeSignature API Response Parsing', () => {
|
|
183
|
-
interface ApiResponse {
|
|
184
|
-
user_destination_address: string;
|
|
185
|
-
signature: string;
|
|
186
|
-
expiration_date: string;
|
|
187
|
-
deposit_amount: string;
|
|
188
|
-
chain_id: string;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const parseApiResponse = (data: ApiResponse) => ({
|
|
192
|
-
userDestinationAddress: data.user_destination_address,
|
|
193
|
-
signature: data.signature,
|
|
194
|
-
expirationDate: data.expiration_date,
|
|
195
|
-
depositAmount: data.deposit_amount,
|
|
196
|
-
chainId: data.chain_id,
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it('should correctly parse snake_case API response to camelCase', () => {
|
|
200
|
-
const apiResponse: ApiResponse = {
|
|
201
|
-
user_destination_address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
202
|
-
signature: '0xabc123def456',
|
|
203
|
-
expiration_date: '1704067200', // Unix timestamp
|
|
204
|
-
deposit_amount: '20000',
|
|
205
|
-
chain_id: '1',
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
const parsed = parseApiResponse(apiResponse);
|
|
209
|
-
|
|
210
|
-
expect(parsed.userDestinationAddress).toBe('0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0');
|
|
211
|
-
expect(parsed.signature).toBe('0xabc123def456');
|
|
212
|
-
expect(parsed.expirationDate).toBe('1704067200');
|
|
213
|
-
expect(parsed.depositAmount).toBe('20000');
|
|
214
|
-
expect(parsed.chainId).toBe('1');
|
|
215
|
-
});
|
|
216
|
-
});
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Token Parameter Consistency Tests
|
|
3
|
-
*
|
|
4
|
-
* Ensures all BTC actions pass the correct token parameter to their
|
|
5
|
-
* authorization functions, which is critical for:
|
|
6
|
-
* - Correct ratio conversion (BTC → LBTC)
|
|
7
|
-
* - Correct signature storage (token address)
|
|
8
|
-
* - Backend matching signatures to deposits
|
|
9
|
-
*
|
|
10
|
-
* This test file documents the expected token parameter for each action
|
|
11
|
-
* to prevent regressions like APP-1993.
|
|
12
|
-
*
|
|
13
|
-
* @module __tests__/unit/btc/TokenParameterConsistency.test.ts
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { describe, expect, it } from 'vitest';
|
|
17
|
-
|
|
18
|
-
import { DEFI_REGISTRY,DefiProtocol } from '../../../defi/defi-registry';
|
|
19
|
-
import { Token } from '../../../tokens/token-addresses';
|
|
20
|
-
|
|
21
|
-
describe('Token Parameter Consistency', () => {
|
|
22
|
-
/**
|
|
23
|
-
* This test suite documents and verifies the expected token parameters
|
|
24
|
-
* for each BTC action type.
|
|
25
|
-
*
|
|
26
|
-
* Token Parameter Mapping:
|
|
27
|
-
* ┌─────────────────────────┬────────────────┬─────────────────────┬─────────────────┐
|
|
28
|
-
* │ Action │ Source → Dest │ Token Param │ Amount Strategy │
|
|
29
|
-
* ├─────────────────────────┼────────────────┼─────────────────────┼─────────────────┤
|
|
30
|
-
* │ BtcStake │ BTC → LBTC │ Token.LBTC │ N/A (fee only) │
|
|
31
|
-
* │ BtcDeposit │ BTC → BTC.b │ Token.BTCb │ N/A (fee only) │
|
|
32
|
-
* │ BtcStakeAndDeploy │ BTC → LBTC │ 'BTC' │ btcToLbtc │
|
|
33
|
-
* │ BtcDepositAndDeploy │ BTC → BTC.b │ Token.BTCb │ identity │
|
|
34
|
-
* └─────────────────────────┴────────────────┴─────────────────────┴─────────────────┘
|
|
35
|
-
*
|
|
36
|
-
* Key Insight:
|
|
37
|
-
* - BtcStake and BtcDeposit use token for fee authorization (signNetworkFee)
|
|
38
|
-
* - BtcStakeAndDeploy and BtcDepositAndDeploy use token for vault permit (signStakeAndBake)
|
|
39
|
-
* - Only BtcStakeAndDeploy needs ratio conversion because it creates LBTC from BTC
|
|
40
|
-
*/
|
|
41
|
-
|
|
42
|
-
describe('BtcStake Action', () => {
|
|
43
|
-
it('uses Token.LBTC for network fee authorization', () => {
|
|
44
|
-
/**
|
|
45
|
-
* BtcStake authorizes network fee using Token.LBTC.
|
|
46
|
-
* This is for the fee signature, not the deposit amount.
|
|
47
|
-
*
|
|
48
|
-
* Code location: packages/sdk/src/chains/btc/actions/stake/config/evm.ts
|
|
49
|
-
* Line: token: Token.LBTC
|
|
50
|
-
*/
|
|
51
|
-
expect(Token.LBTC).toBe('LBTC');
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
describe('BtcDeposit Action', () => {
|
|
56
|
-
it('uses Token.BTCb for network fee authorization', () => {
|
|
57
|
-
/**
|
|
58
|
-
* BtcDeposit authorizes network fee using Token.BTCb.
|
|
59
|
-
* This distinguishes BTC.b fee signatures from LBTC fee signatures.
|
|
60
|
-
*
|
|
61
|
-
* Code location: packages/sdk/src/chains/btc/actions/deposit/config/evm.ts
|
|
62
|
-
* Line: token: Token.BTCb
|
|
63
|
-
*/
|
|
64
|
-
expect(Token.BTCb).toBe('BTC.b');
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
describe('BtcStakeAndDeploy Action', () => {
|
|
69
|
-
it('uses "BTC" token for stake and bake permit (triggers ratio conversion)', () => {
|
|
70
|
-
/**
|
|
71
|
-
* BtcStakeAndDeploy uses 'BTC' as token parameter to trigger ratio conversion.
|
|
72
|
-
*
|
|
73
|
-
* This is CRITICAL because:
|
|
74
|
-
* 1. User deposits BTC (e.g., 20000 satoshis)
|
|
75
|
-
* 2. They receive LBTC (e.g., 19947 satoshis after ratio)
|
|
76
|
-
* 3. The permit signature must contain the LBTC amount (19947)
|
|
77
|
-
* 4. Backend matches signature by this adjusted amount
|
|
78
|
-
*
|
|
79
|
-
* Using 'BTC' hits DEFI_REGISTRY[Veda]['BTC'] which has:
|
|
80
|
-
* amountStrategy: 'btcToLbtc' → applies ratio conversion
|
|
81
|
-
*
|
|
82
|
-
* Code location: packages/sdk/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts
|
|
83
|
-
* Line: token: 'BTC'
|
|
84
|
-
*/
|
|
85
|
-
const vedaBtcConfig = DEFI_REGISTRY[DefiProtocol.Veda]?.['BTC'];
|
|
86
|
-
expect(vedaBtcConfig).toBeDefined();
|
|
87
|
-
if (!vedaBtcConfig) return;
|
|
88
|
-
|
|
89
|
-
// Verify btcToLbtc strategy exists in at least one env/chain
|
|
90
|
-
const hasConversion = Object.values(vedaBtcConfig).some(envMap =>
|
|
91
|
-
envMap ? Object.values(envMap).some(
|
|
92
|
-
chainConfig => chainConfig?.amountStrategy === 'btcToLbtc',
|
|
93
|
-
) : false,
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
expect(hasConversion).toBe(true);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
it('should NOT use AssetId.LBTC (would skip ratio conversion)', () => {
|
|
100
|
-
/**
|
|
101
|
-
* If BtcStakeAndDeploy used AssetId.LBTC (or Token.LBTC) as token,
|
|
102
|
-
* it would hit DEFI_REGISTRY[Veda][Token.LBTC] which has:
|
|
103
|
-
* amountStrategy: 'identity' → NO ratio conversion
|
|
104
|
-
*
|
|
105
|
-
* This was the bug in APP-1993:
|
|
106
|
-
* - Signature had raw amount (20000)
|
|
107
|
-
* - Backend expected adjusted amount (19947)
|
|
108
|
-
* - Result: "signature not found" / deposit not claimed
|
|
109
|
-
*/
|
|
110
|
-
const vedaLbtcConfig = DEFI_REGISTRY[DefiProtocol.Veda]?.[Token.LBTC];
|
|
111
|
-
expect(vedaLbtcConfig).toBeDefined();
|
|
112
|
-
if (!vedaLbtcConfig) return;
|
|
113
|
-
|
|
114
|
-
// Verify identity strategy (no conversion) for LBTC token
|
|
115
|
-
const hasIdentity = Object.values(vedaLbtcConfig).some(envMap =>
|
|
116
|
-
envMap ? Object.values(envMap).some(
|
|
117
|
-
chainConfig => chainConfig?.amountStrategy === 'identity',
|
|
118
|
-
) : false,
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
expect(hasIdentity).toBe(true);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
describe('BtcDepositAndDeploy Action', () => {
|
|
126
|
-
it('uses Token.BTCb for deposit and deploy permit (no ratio conversion needed)', () => {
|
|
127
|
-
/**
|
|
128
|
-
* BtcDepositAndDeploy uses Token.BTCb which has:
|
|
129
|
-
* amountStrategy: 'identity' → no conversion
|
|
130
|
-
*
|
|
131
|
-
* This is correct because 1 BTC = 1 BTC.b (no exchange rate).
|
|
132
|
-
*
|
|
133
|
-
* Code location: packages/sdk/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts
|
|
134
|
-
* Line: token: Token.BTCb
|
|
135
|
-
*/
|
|
136
|
-
const siloBtcbConfig = DEFI_REGISTRY[DefiProtocol.Silo]?.[Token.BTCb];
|
|
137
|
-
expect(siloBtcbConfig).toBeDefined();
|
|
138
|
-
|
|
139
|
-
// Verify identity strategy for BTCb
|
|
140
|
-
const hasIdentity = Object.values(siloBtcbConfig!).some(envMap =>
|
|
141
|
-
Object.values(envMap!).some(
|
|
142
|
-
chainConfig => chainConfig?.amountStrategy === 'identity',
|
|
143
|
-
),
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
expect(hasIdentity).toBe(true);
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
describe('Amount Strategy Summary', () => {
|
|
151
|
-
it('documents all amount strategies in DEFI_REGISTRY', () => {
|
|
152
|
-
/**
|
|
153
|
-
* Amount Strategy Reference:
|
|
154
|
-
*
|
|
155
|
-
* - 'identity': No conversion, use amount as-is
|
|
156
|
-
* → Used for: LBTC permits, BTCb permits
|
|
157
|
-
*
|
|
158
|
-
* - 'btcToLbtc': Divide amount by BTCTokenRatio
|
|
159
|
-
* → Used for: BTC → LBTC stake and bake
|
|
160
|
-
* → Formula: lbtcAmount = btcAmount / ratio
|
|
161
|
-
* → Example: 20000 / 1.00265 = 19947
|
|
162
|
-
*/
|
|
163
|
-
|
|
164
|
-
const strategies = new Set<string>();
|
|
165
|
-
|
|
166
|
-
// Collect all strategies from registry
|
|
167
|
-
for (const protocolMap of Object.values(DEFI_REGISTRY)) {
|
|
168
|
-
for (const tokenMap of Object.values(protocolMap)) {
|
|
169
|
-
for (const envMap of Object.values(tokenMap!)) {
|
|
170
|
-
for (const chainConfig of Object.values(envMap!)) {
|
|
171
|
-
if (chainConfig?.amountStrategy) {
|
|
172
|
-
strategies.add(chainConfig.amountStrategy);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
expect(strategies.has('identity')).toBe(true);
|
|
180
|
-
expect(strategies.has('btcToLbtc')).toBe(true);
|
|
181
|
-
expect(strategies.size).toBe(2); // Only these two strategies exist
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
});
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC Deposit Token Parameter Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests to verify that the correct token (BTCb vs LBTC) is used
|
|
5
|
-
* when generating deposit addresses.
|
|
6
|
-
*
|
|
7
|
-
* Related Issue: APP-1974
|
|
8
|
-
* - BTC.b deposit was incorrectly generating LBTC deposit addresses
|
|
9
|
-
* - The root cause was token parameter not being properly derived from assetOut
|
|
10
|
-
*
|
|
11
|
-
* @module __tests__/unit/btc/btc-deposit-token.test.ts
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import { describe, expect, it } from 'vitest';
|
|
15
|
-
|
|
16
|
-
import { assetIdToToken } from '../../../chains/btc/actions/shared/tokenUtils';
|
|
17
|
-
import { AssetId } from '../../../core';
|
|
18
|
-
import { Token } from '../../../tokens/token-addresses';
|
|
19
|
-
|
|
20
|
-
describe('BTC Deposit Token Resolution (APP-1974)', () => {
|
|
21
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
22
|
-
// assetIdToToken
|
|
23
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
24
|
-
|
|
25
|
-
describe('assetIdToToken', () => {
|
|
26
|
-
describe('should map AssetId to correct Token', () => {
|
|
27
|
-
it('should return Token.BTCb for AssetId.BTCb', () => {
|
|
28
|
-
const token = assetIdToToken(AssetId.BTCb);
|
|
29
|
-
expect(token).toBe(Token.BTCb);
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('should return Token.LBTC for AssetId.LBTC', () => {
|
|
33
|
-
const token = assetIdToToken(AssetId.LBTC);
|
|
34
|
-
expect(token).toBe(Token.LBTC);
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
it('should return default token for unknown AssetId', () => {
|
|
38
|
-
// Using BTC as an example of an input-only asset
|
|
39
|
-
const token = assetIdToToken(AssetId.BTC);
|
|
40
|
-
expect(token).toBe(Token.LBTC); // Default is LBTC
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should use provided default for unknown AssetId', () => {
|
|
44
|
-
const token = assetIdToToken(AssetId.BTC, Token.BTCb);
|
|
45
|
-
expect(token).toBe(Token.BTCb);
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
describe('BTC Deposit specific behavior', () => {
|
|
50
|
-
/**
|
|
51
|
-
* APP-1974 Root Cause:
|
|
52
|
-
* The BtcDeposit.getExpectedToken() method correctly calls
|
|
53
|
-
* assetIdToToken(this.params.assetOut, Token.BTCb)
|
|
54
|
-
*
|
|
55
|
-
* However, if assetOut is not properly passed (e.g., undefined or wrong value),
|
|
56
|
-
* it could default to LBTC, causing the wrong deposit address to be generated.
|
|
57
|
-
*/
|
|
58
|
-
|
|
59
|
-
it('should return BTCb when assetOut is BTCb (BTC Deposit)', () => {
|
|
60
|
-
// This simulates what BtcDeposit.getExpectedToken() does
|
|
61
|
-
const assetOut = AssetId.BTCb;
|
|
62
|
-
const defaultToken = Token.BTCb;
|
|
63
|
-
|
|
64
|
-
const token = assetIdToToken(assetOut, defaultToken);
|
|
65
|
-
expect(token).toBe(Token.BTCb);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it('should still return BTCb as default even for non-mapped assets in deposit', () => {
|
|
69
|
-
// BtcDeposit uses Token.BTCb as default
|
|
70
|
-
const defaultToken = Token.BTCb;
|
|
71
|
-
|
|
72
|
-
// Even if assetOut is somehow invalid, it should fall back to BTCb for deposit
|
|
73
|
-
const token = assetIdToToken(AssetId.BTC, defaultToken);
|
|
74
|
-
expect(token).toBe(Token.BTCb);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
describe('BTC Stake specific behavior', () => {
|
|
79
|
-
it('should return LBTC when assetOut is LBTC (BTC Stake)', () => {
|
|
80
|
-
// This simulates what BtcStake.getExpectedToken() does
|
|
81
|
-
const assetOut = AssetId.LBTC;
|
|
82
|
-
const defaultToken = Token.LBTC;
|
|
83
|
-
|
|
84
|
-
const token = assetIdToToken(assetOut, defaultToken);
|
|
85
|
-
expect(token).toBe(Token.LBTC);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
describe('Token/AssetId mapping', () => {
|
|
90
|
-
/**
|
|
91
|
-
* Token and AssetId share the same string values for common assets:
|
|
92
|
-
* - Token.BTCb = 'BTC.b'
|
|
93
|
-
* - AssetId.BTCb = 'BTC.b'
|
|
94
|
-
*
|
|
95
|
-
* This ensures consistency between API calls and action parameters.
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
it('Token and AssetId values are defined correctly', () => {
|
|
99
|
-
// Both use 'BTC.b' for BTCb
|
|
100
|
-
expect(Token.BTCb).toBe('BTC.b');
|
|
101
|
-
expect(AssetId.BTCb).toBe('BTC.b');
|
|
102
|
-
|
|
103
|
-
// Both use 'LBTC' for LBTC
|
|
104
|
-
expect(Token.LBTC).toBe('LBTC');
|
|
105
|
-
expect(AssetId.LBTC).toBe('LBTC');
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
it('assetIdToToken correctly maps AssetId.BTCb to Token.BTCb', () => {
|
|
109
|
-
const token = assetIdToToken(AssetId.BTCb);
|
|
110
|
-
expect(token).toBe(Token.BTCb); // 'BTC.b'
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('assetIdToToken correctly maps AssetId.LBTC to Token.LBTC', () => {
|
|
114
|
-
const token = assetIdToToken(AssetId.LBTC);
|
|
115
|
-
expect(token).toBe(Token.LBTC); // 'LBTC'
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
121
|
-
// Integration with getDepositBtcAddress
|
|
122
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
123
|
-
|
|
124
|
-
describe('Token parameter flow', () => {
|
|
125
|
-
/**
|
|
126
|
-
* The getDepositBtcAddress function has this signature:
|
|
127
|
-
*
|
|
128
|
-
* token: tokenParam = Token.LBTC // Default is LBTC!
|
|
129
|
-
*
|
|
130
|
-
* This means if token is not explicitly passed, it defaults to LBTC.
|
|
131
|
-
*
|
|
132
|
-
* The BtcDeposit and BtcStake actions must always pass the token explicitly.
|
|
133
|
-
*/
|
|
134
|
-
|
|
135
|
-
it('should use BTCb token for BTC Deposit actions', () => {
|
|
136
|
-
// Simulates the full flow from action to API call
|
|
137
|
-
const actionAssetOut = AssetId.BTCb;
|
|
138
|
-
const actionDefault = Token.BTCb;
|
|
139
|
-
|
|
140
|
-
// Action calls getExpectedToken() which does this:
|
|
141
|
-
const tokenForApi = assetIdToToken(actionAssetOut, actionDefault);
|
|
142
|
-
|
|
143
|
-
// This token should be BTCb, not LBTC
|
|
144
|
-
expect(tokenForApi).toBe(Token.BTCb);
|
|
145
|
-
expect(tokenForApi).not.toBe(Token.LBTC);
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it('should use LBTC token for BTC Stake actions', () => {
|
|
149
|
-
const actionAssetOut = AssetId.LBTC;
|
|
150
|
-
const actionDefault = Token.LBTC;
|
|
151
|
-
|
|
152
|
-
const tokenForApi = assetIdToToken(actionAssetOut, actionDefault);
|
|
153
|
-
|
|
154
|
-
expect(tokenForApi).toBe(Token.LBTC);
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
it('should never allow BTCb deposit to use LBTC token', () => {
|
|
158
|
-
// This is the core test for APP-1974
|
|
159
|
-
// If assetOut is BTCb, the token MUST be BTCb
|
|
160
|
-
const actionAssetOut = AssetId.BTCb;
|
|
161
|
-
const tokenForApi = assetIdToToken(actionAssetOut, Token.BTCb);
|
|
162
|
-
|
|
163
|
-
// CRITICAL: This must not be LBTC
|
|
164
|
-
expect(tokenForApi).not.toBe(Token.LBTC);
|
|
165
|
-
expect(tokenForApi).toBe(Token.BTCb);
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
170
|
-
// Edge Cases
|
|
171
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
172
|
-
|
|
173
|
-
describe('Edge cases', () => {
|
|
174
|
-
it('should handle BTCK token if supported', () => {
|
|
175
|
-
// BTCK is used in some test environments
|
|
176
|
-
if ('BTCK' in AssetId) {
|
|
177
|
-
const assetId = 'BTCK' as AssetId;
|
|
178
|
-
const token = assetIdToToken(assetId);
|
|
179
|
-
// Should not throw, returns default
|
|
180
|
-
expect(token).toBeDefined();
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
it('should handle undefined-like inputs gracefully', () => {
|
|
185
|
-
// TypeScript prevents this, but runtime safety is important
|
|
186
|
-
const token = assetIdToToken(undefined as unknown as AssetId, Token.BTCb);
|
|
187
|
-
expect(token).toBe(Token.BTCb);
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
|