@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,465 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FAQ Patterns Integration Tests
|
|
3
|
-
*
|
|
4
|
-
* Verifies that the patterns documented in SDK_DEVELOPER_FAQ.md work correctly.
|
|
5
|
-
* These tests ensure the FAQ remains accurate as the SDK evolves.
|
|
6
|
-
*
|
|
7
|
-
* @see SDK_DEVELOPER_FAQ.md sections 13, 14, 15, 16
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { Env } from '@lombard.finance/sdk-common';
|
|
11
|
-
import type { EIP1193Provider } from 'viem';
|
|
12
|
-
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
13
|
-
|
|
14
|
-
import { btcStake } from '../../chains/btc/actions/stake';
|
|
15
|
-
import { AssetId, Chain } from '../../core';
|
|
16
|
-
import { BtcActionStatus } from '../../shared/constants/statusConstants';
|
|
17
|
-
import { createTestConfig as createConfig } from '../helpers/createTestConfig';
|
|
18
|
-
|
|
19
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
20
|
-
// Mock Provider Setup (FAQ Section 17)
|
|
21
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
22
|
-
|
|
23
|
-
function createMockEvmProvider(): EIP1193Provider {
|
|
24
|
-
const mockProvider = {
|
|
25
|
-
request: vi.fn(),
|
|
26
|
-
on: vi.fn(),
|
|
27
|
-
removeListener: vi.fn(),
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
// Default implementation for common methods
|
|
31
|
-
mockProvider.request.mockImplementation(async ({ method }) => {
|
|
32
|
-
switch (method) {
|
|
33
|
-
case 'eth_requestAccounts':
|
|
34
|
-
return ['0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0'];
|
|
35
|
-
case 'eth_accounts':
|
|
36
|
-
return ['0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0'];
|
|
37
|
-
case 'eth_chainId':
|
|
38
|
-
return '0xaa36a7'; // Sepolia chain ID (11155111 in hex)
|
|
39
|
-
case 'wallet_switchEthereumChain':
|
|
40
|
-
return null;
|
|
41
|
-
case 'eth_signTypedData_v4':
|
|
42
|
-
// Return a mock signature
|
|
43
|
-
return '0x' + '00'.repeat(65);
|
|
44
|
-
default:
|
|
45
|
-
console.warn(`Unhandled provider method: ${method}`);
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
return mockProvider as unknown as EIP1193Provider;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
54
|
-
// Section 13: Using Actions - Lifecycle Tests
|
|
55
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
56
|
-
|
|
57
|
-
describe('FAQ Section 13: Using Actions', () => {
|
|
58
|
-
let mockProvider: EIP1193Provider;
|
|
59
|
-
|
|
60
|
-
beforeEach(() => {
|
|
61
|
-
mockProvider = createMockEvmProvider();
|
|
62
|
-
vi.clearAllMocks();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
describe('Action Lifecycle', () => {
|
|
66
|
-
it('should start in IDLE status', () => {
|
|
67
|
-
const config = createConfig({
|
|
68
|
-
env: Env.testnet,
|
|
69
|
-
providers: { evm: () => mockProvider },
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
const stake = btcStake(config, {
|
|
73
|
-
assetOut: AssetId.LBTC,
|
|
74
|
-
destChain: Chain.SEPOLIA,
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
// FAQ documents: actions start in 'idle' status
|
|
78
|
-
expect(stake.status).toBe(BtcActionStatus.IDLE);
|
|
79
|
-
expect(stake.isLoading).toBe(false);
|
|
80
|
-
expect(stake.isFailed).toBe(false);
|
|
81
|
-
expect(stake.error).toBeNull();
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it('should transition through statuses during prepare', async () => {
|
|
85
|
-
const config = createConfig({
|
|
86
|
-
env: Env.testnet,
|
|
87
|
-
providers: { evm: () => mockProvider },
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
const stake = btcStake(config, {
|
|
91
|
-
assetOut: AssetId.LBTC,
|
|
92
|
-
destChain: Chain.SEPOLIA, // Testnet - no fee auth needed
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const statusChanges: string[] = [];
|
|
96
|
-
stake.on('status-change', status => statusChanges.push(status));
|
|
97
|
-
|
|
98
|
-
// Mock API response for deposit address check
|
|
99
|
-
vi.spyOn(global, 'fetch').mockResolvedValueOnce({
|
|
100
|
-
ok: true,
|
|
101
|
-
json: () =>
|
|
102
|
-
Promise.resolve({
|
|
103
|
-
has_signature: false,
|
|
104
|
-
}),
|
|
105
|
-
} as Response);
|
|
106
|
-
|
|
107
|
-
await stake.prepare({
|
|
108
|
-
amount: '0.001',
|
|
109
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
// Fee authorization is required for all chains (including testnet)
|
|
113
|
-
expect(stake.status).toBe(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
|
|
114
|
-
expect(statusChanges).toContain(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('should validate minimum BTC amount (0.0002)', async () => {
|
|
118
|
-
const config = createConfig({
|
|
119
|
-
env: Env.testnet,
|
|
120
|
-
providers: { evm: () => mockProvider },
|
|
121
|
-
});
|
|
122
|
-
|
|
123
|
-
const stake = btcStake(config, {
|
|
124
|
-
assetOut: AssetId.LBTC,
|
|
125
|
-
destChain: Chain.SEPOLIA,
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
// FAQ documents: minimum stake is 0.0002 BTC
|
|
129
|
-
await expect(
|
|
130
|
-
stake.prepare({
|
|
131
|
-
amount: '0.0001', // Below minimum
|
|
132
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
133
|
-
}),
|
|
134
|
-
).rejects.toThrow(/at least 0.0002/i);
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
140
|
-
// Section 14: Loading States Tests
|
|
141
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
142
|
-
|
|
143
|
-
describe('FAQ Section 14: Loading States', () => {
|
|
144
|
-
let mockProvider: EIP1193Provider;
|
|
145
|
-
|
|
146
|
-
beforeEach(() => {
|
|
147
|
-
mockProvider = createMockEvmProvider();
|
|
148
|
-
vi.clearAllMocks();
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it('should emit loading events during operations', async () => {
|
|
152
|
-
const config = createConfig({
|
|
153
|
-
env: Env.testnet,
|
|
154
|
-
providers: { evm: () => mockProvider },
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
const stake = btcStake(config, {
|
|
158
|
-
assetOut: AssetId.LBTC,
|
|
159
|
-
destChain: Chain.SEPOLIA,
|
|
160
|
-
});
|
|
161
|
-
|
|
162
|
-
const loadingStates: boolean[] = [];
|
|
163
|
-
stake.on('loading', isLoading => loadingStates.push(isLoading));
|
|
164
|
-
|
|
165
|
-
// Mock API
|
|
166
|
-
vi.spyOn(global, 'fetch').mockResolvedValueOnce({
|
|
167
|
-
ok: true,
|
|
168
|
-
json: () => Promise.resolve({ has_signature: false }),
|
|
169
|
-
} as Response);
|
|
170
|
-
|
|
171
|
-
await stake.prepare({
|
|
172
|
-
amount: '0.001',
|
|
173
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
// FAQ documents: loading is true during operation, false after
|
|
177
|
-
expect(loadingStates).toContain(true);
|
|
178
|
-
expect(loadingStates[loadingStates.length - 1]).toBe(false);
|
|
179
|
-
expect(stake.isLoading).toBe(false);
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
it('should allow combining status + isLoading for context-aware UI', async () => {
|
|
183
|
-
const config = createConfig({
|
|
184
|
-
env: Env.testnet,
|
|
185
|
-
providers: { evm: () => mockProvider },
|
|
186
|
-
});
|
|
187
|
-
|
|
188
|
-
const stake = btcStake(config, {
|
|
189
|
-
assetOut: AssetId.LBTC,
|
|
190
|
-
destChain: Chain.SEPOLIA,
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
// FAQ pattern: derive loading message from status + isLoading
|
|
194
|
-
const getLoadingMessage = (status: string, isLoading: boolean): string => {
|
|
195
|
-
if (!isLoading) return '';
|
|
196
|
-
|
|
197
|
-
switch (status) {
|
|
198
|
-
case 'idle':
|
|
199
|
-
return 'Preparing...';
|
|
200
|
-
case 'needs_fee_authorization':
|
|
201
|
-
return 'Waiting for signature...';
|
|
202
|
-
case 'ready':
|
|
203
|
-
return 'Generating deposit address...';
|
|
204
|
-
default:
|
|
205
|
-
return 'Processing...';
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
stake.on('loading', isLoading => {
|
|
210
|
-
// Use loading message for UI updates
|
|
211
|
-
getLoadingMessage(stake.status, isLoading);
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
// Mock API
|
|
215
|
-
vi.spyOn(global, 'fetch').mockResolvedValueOnce({
|
|
216
|
-
ok: true,
|
|
217
|
-
json: () => Promise.resolve({ has_signature: false }),
|
|
218
|
-
} as Response);
|
|
219
|
-
|
|
220
|
-
await stake.prepare({
|
|
221
|
-
amount: '0.001',
|
|
222
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
// Message should have been set during loading
|
|
226
|
-
// (captured message will be empty after loading completes)
|
|
227
|
-
expect(stake.isLoading).toBe(false);
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
232
|
-
// Section 15: Error Handling Tests
|
|
233
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
234
|
-
|
|
235
|
-
describe('FAQ Section 15: Error Handling', () => {
|
|
236
|
-
let mockProvider: EIP1193Provider;
|
|
237
|
-
|
|
238
|
-
beforeEach(() => {
|
|
239
|
-
mockProvider = createMockEvmProvider();
|
|
240
|
-
vi.clearAllMocks();
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
it('should preserve status on error (no FAILED status)', async () => {
|
|
244
|
-
const config = createConfig({
|
|
245
|
-
env: Env.testnet,
|
|
246
|
-
providers: { evm: () => mockProvider },
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
const stake = btcStake(config, {
|
|
250
|
-
assetOut: AssetId.LBTC,
|
|
251
|
-
destChain: Chain.SEPOLIA,
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
// FAQ documents: status should not change to FAILED on error
|
|
255
|
-
const initialStatus = stake.status;
|
|
256
|
-
|
|
257
|
-
await expect(
|
|
258
|
-
stake.prepare({
|
|
259
|
-
amount: '0.0001', // Invalid amount
|
|
260
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
261
|
-
}),
|
|
262
|
-
).rejects.toThrow();
|
|
263
|
-
|
|
264
|
-
// Status should revert to previous (unchanged because prepare failed)
|
|
265
|
-
expect(stake.status).toBe(initialStatus);
|
|
266
|
-
expect(stake.isFailed).toBe(true);
|
|
267
|
-
expect(stake.error).not.toBeNull();
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
it('should allow retry after error without re-initialization', async () => {
|
|
271
|
-
const config = createConfig({
|
|
272
|
-
env: Env.testnet,
|
|
273
|
-
providers: { evm: () => mockProvider },
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
const stake = btcStake(config, {
|
|
277
|
-
assetOut: AssetId.LBTC,
|
|
278
|
-
destChain: Chain.SEPOLIA, // Testnet - no fee auth, goes to address confirmation
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
// First attempt fails
|
|
282
|
-
await expect(
|
|
283
|
-
stake.prepare({
|
|
284
|
-
amount: '0.0001', // Invalid
|
|
285
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
286
|
-
}),
|
|
287
|
-
).rejects.toThrow();
|
|
288
|
-
|
|
289
|
-
expect(stake.isFailed).toBe(true);
|
|
290
|
-
|
|
291
|
-
// Mock successful API call
|
|
292
|
-
vi.spyOn(global, 'fetch').mockResolvedValueOnce({
|
|
293
|
-
ok: true,
|
|
294
|
-
json: () => Promise.resolve({ has_signature: false }),
|
|
295
|
-
} as Response);
|
|
296
|
-
|
|
297
|
-
// Retry with valid amount - should work without creating new action
|
|
298
|
-
await stake.prepare({
|
|
299
|
-
amount: '0.001', // Valid
|
|
300
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
// FAQ documents: error should be cleared on successful retry
|
|
304
|
-
expect(stake.isFailed).toBe(false);
|
|
305
|
-
expect(stake.error).toBeNull();
|
|
306
|
-
// Fee authorization is required for all chains (including testnet)
|
|
307
|
-
expect(stake.status).toBe(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
it('should emit error events', async () => {
|
|
311
|
-
const config = createConfig({
|
|
312
|
-
env: Env.testnet,
|
|
313
|
-
providers: { evm: () => mockProvider },
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
const stake = btcStake(config, {
|
|
317
|
-
assetOut: AssetId.LBTC,
|
|
318
|
-
destChain: Chain.SEPOLIA,
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
const errors: Error[] = [];
|
|
322
|
-
const failedEvents: number[] = [];
|
|
323
|
-
|
|
324
|
-
stake.on('error', error => errors.push(error));
|
|
325
|
-
stake.on('failed', () => failedEvents.push(1));
|
|
326
|
-
|
|
327
|
-
await expect(
|
|
328
|
-
stake.prepare({
|
|
329
|
-
amount: '0.0001',
|
|
330
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
331
|
-
}),
|
|
332
|
-
).rejects.toThrow();
|
|
333
|
-
|
|
334
|
-
// FAQ documents: both error and failed events should be emitted
|
|
335
|
-
expect(errors.length).toBe(1);
|
|
336
|
-
expect(failedEvents.length).toBe(1);
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
|
-
|
|
340
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
341
|
-
// Section 16: Events & Progress Monitoring Tests
|
|
342
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
343
|
-
|
|
344
|
-
describe('FAQ Section 16: Events & Progress Monitoring', () => {
|
|
345
|
-
let mockProvider: EIP1193Provider;
|
|
346
|
-
|
|
347
|
-
beforeEach(() => {
|
|
348
|
-
mockProvider = createMockEvmProvider();
|
|
349
|
-
vi.clearAllMocks();
|
|
350
|
-
});
|
|
351
|
-
|
|
352
|
-
it('should emit progress events with step information', async () => {
|
|
353
|
-
const config = createConfig({
|
|
354
|
-
env: Env.testnet,
|
|
355
|
-
providers: { evm: () => mockProvider },
|
|
356
|
-
});
|
|
357
|
-
|
|
358
|
-
const stake = btcStake(config, {
|
|
359
|
-
assetOut: AssetId.LBTC,
|
|
360
|
-
destChain: Chain.SEPOLIA,
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
interface ProgressEvent {
|
|
364
|
-
status: string;
|
|
365
|
-
steps?: Record<string, string>;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
const progressEvents: ProgressEvent[] = [];
|
|
369
|
-
stake.on('progress', (progress: ProgressEvent) =>
|
|
370
|
-
progressEvents.push(progress),
|
|
371
|
-
);
|
|
372
|
-
|
|
373
|
-
// Mock API
|
|
374
|
-
vi.spyOn(global, 'fetch').mockResolvedValueOnce({
|
|
375
|
-
ok: true,
|
|
376
|
-
json: () => Promise.resolve({ has_signature: false }),
|
|
377
|
-
} as Response);
|
|
378
|
-
|
|
379
|
-
await stake.prepare({
|
|
380
|
-
amount: '0.001',
|
|
381
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0',
|
|
382
|
-
});
|
|
383
|
-
|
|
384
|
-
// FAQ documents: progress events contain status and steps
|
|
385
|
-
expect(progressEvents.length).toBeGreaterThan(0);
|
|
386
|
-
const lastProgress = progressEvents[progressEvents.length - 1];
|
|
387
|
-
expect(lastProgress.status).toBeDefined();
|
|
388
|
-
});
|
|
389
|
-
|
|
390
|
-
it('should return unsubscribe function from on()', () => {
|
|
391
|
-
const config = createConfig({
|
|
392
|
-
env: Env.testnet,
|
|
393
|
-
providers: { evm: () => mockProvider },
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
const stake = btcStake(config, {
|
|
397
|
-
assetOut: AssetId.LBTC,
|
|
398
|
-
destChain: Chain.SEPOLIA,
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
const handler = vi.fn();
|
|
402
|
-
const unsubscribe = stake.on('status-change', handler);
|
|
403
|
-
|
|
404
|
-
// FAQ documents: on() returns unsubscribe function
|
|
405
|
-
expect(typeof unsubscribe).toBe('function');
|
|
406
|
-
|
|
407
|
-
// Should be callable without error
|
|
408
|
-
unsubscribe();
|
|
409
|
-
});
|
|
410
|
-
});
|
|
411
|
-
|
|
412
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
413
|
-
// Design Decisions Tests (FAQ Section 10)
|
|
414
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
415
|
-
|
|
416
|
-
describe('FAQ Section 10: Design Decisions', () => {
|
|
417
|
-
let mockProvider: EIP1193Provider;
|
|
418
|
-
|
|
419
|
-
beforeEach(() => {
|
|
420
|
-
mockProvider = createMockEvmProvider();
|
|
421
|
-
vi.clearAllMocks();
|
|
422
|
-
});
|
|
423
|
-
|
|
424
|
-
it('should use unified BtcActionStatus for all BTC actions', () => {
|
|
425
|
-
const config = createConfig({
|
|
426
|
-
env: Env.testnet,
|
|
427
|
-
providers: { evm: () => mockProvider },
|
|
428
|
-
});
|
|
429
|
-
|
|
430
|
-
// FAQ documents: all BTC actions use BtcActionStatus
|
|
431
|
-
const stake = btcStake(config, {
|
|
432
|
-
assetOut: AssetId.LBTC,
|
|
433
|
-
destChain: Chain.SEPOLIA,
|
|
434
|
-
});
|
|
435
|
-
|
|
436
|
-
// Verify status is from unified enum
|
|
437
|
-
expect(Object.values(BtcActionStatus)).toContain(stake.status);
|
|
438
|
-
});
|
|
439
|
-
|
|
440
|
-
it('should have separate status, error, and loading concerns', () => {
|
|
441
|
-
const config = createConfig({
|
|
442
|
-
env: Env.testnet,
|
|
443
|
-
providers: { evm: () => mockProvider },
|
|
444
|
-
});
|
|
445
|
-
|
|
446
|
-
const stake = btcStake(config, {
|
|
447
|
-
assetOut: AssetId.LBTC,
|
|
448
|
-
destChain: Chain.SEPOLIA,
|
|
449
|
-
});
|
|
450
|
-
|
|
451
|
-
// FAQ documents: orthogonal concerns
|
|
452
|
-
// - status = What step are you at?
|
|
453
|
-
// - error = Did something go wrong?
|
|
454
|
-
// - isLoading = Is an operation in progress?
|
|
455
|
-
|
|
456
|
-
expect(typeof stake.status).toBe('string');
|
|
457
|
-
expect(stake.error === null || stake.error instanceof Error).toBe(true);
|
|
458
|
-
expect(typeof stake.isLoading).toBe('boolean');
|
|
459
|
-
expect(typeof stake.isFailed).toBe('boolean');
|
|
460
|
-
|
|
461
|
-
// isFailed should be derived from error
|
|
462
|
-
expect(stake.isFailed).toBe(stake.error !== null);
|
|
463
|
-
});
|
|
464
|
-
});
|
|
465
|
-
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration Tests for getLBTCMintingFee
|
|
3
|
-
*
|
|
4
|
-
* These tests query actual on-chain contracts to verify minting fee values.
|
|
5
|
-
* Run with: yarn test:integration or npx vitest run --config vitest.integration.config.ts
|
|
6
|
-
*
|
|
7
|
-
* The minting fee (auto-mint commission) is denominated in satoshis and is
|
|
8
|
-
* deducted from the minted LBTC to compensate for EVM gas costs.
|
|
9
|
-
*
|
|
10
|
-
* Non-subsidized chains (Ethereum, Sepolia): Should return non-zero fees
|
|
11
|
-
* Subsidized chains (Base, BSC): Return 0 (Lombard absorbs gas costs)
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import { Env } from '@lombard.finance/sdk-common';
|
|
15
|
-
import { describe, expect, it } from 'vitest';
|
|
16
|
-
|
|
17
|
-
import { ChainId } from '../../common/chains';
|
|
18
|
-
import {
|
|
19
|
-
getLBTCMintingFee,
|
|
20
|
-
getMintingFee,
|
|
21
|
-
} from '../../contract-functions/getLBTCMintingFee/getLBTCMintingFee';
|
|
22
|
-
import { Token, TOKEN_ADDRESSES } from '../../tokens/token-addresses';
|
|
23
|
-
import { isUpgradedContract } from '../../tokens/tokens';
|
|
24
|
-
|
|
25
|
-
describe('getLBTCMintingFee Integration Tests', () => {
|
|
26
|
-
// Increase timeout for RPC calls
|
|
27
|
-
const TIMEOUT = 30000;
|
|
28
|
-
|
|
29
|
-
describe('Contract Status Checks', () => {
|
|
30
|
-
it(
|
|
31
|
-
'should check if Sepolia LBTC contract is upgraded (testnet env)',
|
|
32
|
-
async () => {
|
|
33
|
-
const isUpgraded = await isUpgradedContract(
|
|
34
|
-
Token.LBTC,
|
|
35
|
-
ChainId.sepolia,
|
|
36
|
-
Env.testnet,
|
|
37
|
-
);
|
|
38
|
-
console.log(`Sepolia (testnet) LBTC contract upgraded: ${isUpgraded}`);
|
|
39
|
-
console.log(
|
|
40
|
-
`Sepolia (testnet) LBTC address: ${TOKEN_ADDRESSES[Token.LBTC]?.[Env.testnet]?.[ChainId.sepolia]}`,
|
|
41
|
-
);
|
|
42
|
-
expect(typeof isUpgraded).toBe('boolean');
|
|
43
|
-
},
|
|
44
|
-
TIMEOUT,
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
it(
|
|
48
|
-
'should check if Sepolia LBTC contract is upgraded (stage env)',
|
|
49
|
-
async () => {
|
|
50
|
-
const isUpgraded = await isUpgradedContract(
|
|
51
|
-
Token.LBTC,
|
|
52
|
-
ChainId.sepolia,
|
|
53
|
-
Env.stage,
|
|
54
|
-
);
|
|
55
|
-
console.log(`Sepolia (stage) LBTC contract upgraded: ${isUpgraded}`);
|
|
56
|
-
console.log(
|
|
57
|
-
`Sepolia (stage) LBTC address: ${TOKEN_ADDRESSES[Token.LBTC]?.[Env.stage]?.[ChainId.sepolia]}`,
|
|
58
|
-
);
|
|
59
|
-
expect(typeof isUpgraded).toBe('boolean');
|
|
60
|
-
},
|
|
61
|
-
TIMEOUT,
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
it(
|
|
65
|
-
'should check if Ethereum mainnet LBTC contract is upgraded',
|
|
66
|
-
async () => {
|
|
67
|
-
const isUpgraded = await isUpgradedContract(
|
|
68
|
-
Token.LBTC,
|
|
69
|
-
ChainId.ethereum,
|
|
70
|
-
Env.prod,
|
|
71
|
-
);
|
|
72
|
-
console.log(`Ethereum mainnet LBTC contract upgraded: ${isUpgraded}`);
|
|
73
|
-
console.log(
|
|
74
|
-
`Ethereum mainnet LBTC address: ${TOKEN_ADDRESSES[Token.LBTC]?.[Env.prod]?.[ChainId.ethereum]}`,
|
|
75
|
-
);
|
|
76
|
-
expect(typeof isUpgraded).toBe('boolean');
|
|
77
|
-
},
|
|
78
|
-
TIMEOUT,
|
|
79
|
-
);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
describe('Fee Value Checks', () => {
|
|
83
|
-
it(
|
|
84
|
-
'should get minting fee from Sepolia (testnet env)',
|
|
85
|
-
async () => {
|
|
86
|
-
const fee = await getLBTCMintingFee({
|
|
87
|
-
chainId: ChainId.sepolia,
|
|
88
|
-
env: Env.testnet,
|
|
89
|
-
});
|
|
90
|
-
console.log(
|
|
91
|
-
`Sepolia (testnet) LBTC minting fee: ${fee.toString()} BTC (${fee.times(1e8).toString()} satoshis)`,
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
// Sepolia should have a non-zero fee
|
|
95
|
-
// If this fails, it means the contract is returning 0
|
|
96
|
-
if (fee.isZero()) {
|
|
97
|
-
console.warn(
|
|
98
|
-
'⚠️ WARNING: Fee is 0 on Sepolia - investigate contract configuration',
|
|
99
|
-
);
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
TIMEOUT,
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
it(
|
|
106
|
-
'should get minting fee from Sepolia (stage env)',
|
|
107
|
-
async () => {
|
|
108
|
-
const fee = await getLBTCMintingFee({
|
|
109
|
-
chainId: ChainId.sepolia,
|
|
110
|
-
env: Env.stage,
|
|
111
|
-
});
|
|
112
|
-
console.log(
|
|
113
|
-
`Sepolia (stage) LBTC minting fee: ${fee.toString()} BTC (${fee.times(1e8).toString()} satoshis)`,
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
if (fee.isZero()) {
|
|
117
|
-
console.warn(
|
|
118
|
-
'⚠️ WARNING: Fee is 0 on Sepolia (stage) - investigate contract configuration',
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
TIMEOUT,
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
it(
|
|
126
|
-
'should get minting fee from Ethereum mainnet',
|
|
127
|
-
async () => {
|
|
128
|
-
const fee = await getLBTCMintingFee({
|
|
129
|
-
chainId: ChainId.ethereum,
|
|
130
|
-
env: Env.prod,
|
|
131
|
-
});
|
|
132
|
-
console.log(
|
|
133
|
-
`Ethereum mainnet LBTC minting fee: ${fee.toString()} BTC (${fee.times(1e8).toString()} satoshis)`,
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
// Ethereum mainnet should definitely have a non-zero fee
|
|
137
|
-
expect(fee.isGreaterThan(0)).toBe(true);
|
|
138
|
-
},
|
|
139
|
-
TIMEOUT,
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
it(
|
|
143
|
-
'should compare fees across environments',
|
|
144
|
-
async () => {
|
|
145
|
-
// Collect fees from different chains/envs
|
|
146
|
-
const fees: Record<string, string> = {};
|
|
147
|
-
|
|
148
|
-
try {
|
|
149
|
-
const ethereumFee = await getLBTCMintingFee({
|
|
150
|
-
chainId: ChainId.ethereum,
|
|
151
|
-
env: Env.prod,
|
|
152
|
-
});
|
|
153
|
-
fees['Ethereum (prod)'] = `${ethereumFee.toString()} BTC`;
|
|
154
|
-
} catch (e) {
|
|
155
|
-
fees['Ethereum (prod)'] = `Error: ${e}`;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
try {
|
|
159
|
-
const sepoliaTestnetFee = await getLBTCMintingFee({
|
|
160
|
-
chainId: ChainId.sepolia,
|
|
161
|
-
env: Env.testnet,
|
|
162
|
-
});
|
|
163
|
-
fees['Sepolia (testnet)'] = `${sepoliaTestnetFee.toString()} BTC`;
|
|
164
|
-
} catch (e) {
|
|
165
|
-
fees['Sepolia (testnet)'] = `Error: ${e}`;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
try {
|
|
169
|
-
const sepoliaStageFee = await getLBTCMintingFee({
|
|
170
|
-
chainId: ChainId.sepolia,
|
|
171
|
-
env: Env.stage,
|
|
172
|
-
});
|
|
173
|
-
fees['Sepolia (stage)'] = `${sepoliaStageFee.toString()} BTC`;
|
|
174
|
-
} catch (e) {
|
|
175
|
-
fees['Sepolia (stage)'] = `Error: ${e}`;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
try {
|
|
179
|
-
const baseFee = await getMintingFee({
|
|
180
|
-
token: Token.LBTC,
|
|
181
|
-
chainId: ChainId.base,
|
|
182
|
-
env: Env.prod,
|
|
183
|
-
});
|
|
184
|
-
fees['Base (prod)'] = `${baseFee.toString()} BTC`;
|
|
185
|
-
} catch (e) {
|
|
186
|
-
fees['Base (prod)'] = `Error: ${e}`;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
console.log('\n=== Fee Comparison ===');
|
|
190
|
-
console.table(fees);
|
|
191
|
-
},
|
|
192
|
-
TIMEOUT * 3,
|
|
193
|
-
);
|
|
194
|
-
});
|
|
195
|
-
});
|