@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,366 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC DepositAndDeploy Action
|
|
3
|
-
*
|
|
4
|
-
* Handles BTC → BTC.b → Vault deposit in a single atomic operation.
|
|
5
|
-
* Similar to StakeAndDeploy but produces BTC.b instead of LBTC.
|
|
6
|
-
* Used for protocols like Silo on Avalanche that accept BTC.b.
|
|
7
|
-
*
|
|
8
|
-
* @module chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import type { z } from 'zod';
|
|
12
|
-
|
|
13
|
-
import type { ChainId } from '../../../../common/chains';
|
|
14
|
-
import { isValidChain } from '../../../../common/chains';
|
|
15
|
-
import { Chain, parseChainIdentifier,StepStatus } from '../../../../core';
|
|
16
|
-
import type { BtcCoreContext } from '../../../../shared/context';
|
|
17
|
-
import { LombardError, ValidationErrorCode } from '../../../../shared/errors';
|
|
18
|
-
import type { DepositAndDeployEventMap } from '../../../../shared/events';
|
|
19
|
-
import {
|
|
20
|
-
monitorDeposit,
|
|
21
|
-
type MonitorProgress,
|
|
22
|
-
} from '../../../../shared/monitoring';
|
|
23
|
-
import { Token } from '../../../../tokens/token-addresses';
|
|
24
|
-
import { ensureNotSanctionedAddress } from '../../../../utils/ensureNotSanctionedAddress';
|
|
25
|
-
import { toSatoshi } from '../../../../utils/satoshi';
|
|
26
|
-
import {
|
|
27
|
-
assetIdToToken,
|
|
28
|
-
BaseBtcAction,
|
|
29
|
-
type StatusConfig,
|
|
30
|
-
type StepDefinition,
|
|
31
|
-
} from '../shared';
|
|
32
|
-
import {
|
|
33
|
-
depositAndDeployConfig,
|
|
34
|
-
getVaultKey,
|
|
35
|
-
isAssetOutSupported,
|
|
36
|
-
isDestChainSupported,
|
|
37
|
-
isProtocolSupported,
|
|
38
|
-
isRouteAvailable,
|
|
39
|
-
} from './config';
|
|
40
|
-
import {
|
|
41
|
-
BtcActionStatus,
|
|
42
|
-
type BtcDepositAndDeploy as IBtcDepositAndDeploy,
|
|
43
|
-
type BtcDepositAndDeployParams,
|
|
44
|
-
type BtcDepositAndDeployPrepareParams,
|
|
45
|
-
} from './types';
|
|
46
|
-
|
|
47
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
48
|
-
// Types
|
|
49
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
50
|
-
|
|
51
|
-
interface AuthState {
|
|
52
|
-
fee?: string;
|
|
53
|
-
signature?: string;
|
|
54
|
-
typedData?: string;
|
|
55
|
-
approvalTxHash?: string;
|
|
56
|
-
authorized: boolean;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
60
|
-
// BtcDepositAndDeploy Implementation
|
|
61
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* BTC DepositAndDeploy Action
|
|
65
|
-
*
|
|
66
|
-
* Combines deposit (BTC → BTC.b) and vault deployment in a single atomic operation.
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```typescript
|
|
70
|
-
* const depositAndDeploy = new BtcDepositAndDeploy(ctx, {
|
|
71
|
-
* assetOut: AssetId.BTCb,
|
|
72
|
-
* destChain: Chain.AVALANCHE,
|
|
73
|
-
* protocol: DeployProtocol.Silo,
|
|
74
|
-
* });
|
|
75
|
-
*
|
|
76
|
-
* await depositAndDeploy.prepare({ amount: '0.1', recipient: '0x...' });
|
|
77
|
-
* await depositAndDeploy.authorizeDeposit();
|
|
78
|
-
* const address = await depositAndDeploy.generateDepositAddress();
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export class BtcDepositAndDeploy
|
|
82
|
-
extends BaseBtcAction<
|
|
83
|
-
DepositAndDeployEventMap,
|
|
84
|
-
BtcActionStatus,
|
|
85
|
-
BtcDepositAndDeployParams
|
|
86
|
-
>
|
|
87
|
-
implements IBtcDepositAndDeploy
|
|
88
|
-
{
|
|
89
|
-
private readonly chainId: ChainId;
|
|
90
|
-
private readonly authState: AuthState = { authorized: false };
|
|
91
|
-
|
|
92
|
-
constructor(ctx: BtcCoreContext, params: BtcDepositAndDeployParams) {
|
|
93
|
-
super(ctx, params, BtcActionStatus.IDLE);
|
|
94
|
-
|
|
95
|
-
// Validate assetOut - DepositAndDeploy should only produce BTC.b
|
|
96
|
-
if (!isAssetOutSupported(params.assetOut)) {
|
|
97
|
-
throw new LombardError(
|
|
98
|
-
ValidationErrorCode.INVALID_ASSET,
|
|
99
|
-
`Asset ${params.assetOut} is not supported for deposit and deploy. ` +
|
|
100
|
-
`DepositAndDeploy produces BTC.b which is then deployed to a vault like Silo.`,
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (!isDestChainSupported(params.destChain)) {
|
|
105
|
-
throw new LombardError(
|
|
106
|
-
ValidationErrorCode.INVALID_CHAIN,
|
|
107
|
-
`Destination chain ${params.destChain} is not supported for deposit and deploy. ` +
|
|
108
|
-
`Supported chains: Avalanche, Avalanche Fuji`,
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (!isProtocolSupported(params.protocol)) {
|
|
113
|
-
throw new LombardError(
|
|
114
|
-
ValidationErrorCode.INVALID_PARAMETER,
|
|
115
|
-
`Protocol ${params.protocol} is not supported for deposit and deploy. ` +
|
|
116
|
-
`DepositAndDeploy with BTC.b only supports Silo protocol.`,
|
|
117
|
-
);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const sourceChain = params.sourceChain ?? Chain.BITCOIN_MAINNET;
|
|
121
|
-
if (!isRouteAvailable(sourceChain, ctx.env)) {
|
|
122
|
-
throw LombardError.routeNotFound({
|
|
123
|
-
assetOut: params.assetOut,
|
|
124
|
-
sourceChain,
|
|
125
|
-
destChain: params.destChain,
|
|
126
|
-
env: ctx.env,
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const parsed = parseChainIdentifier(params.destChain);
|
|
131
|
-
if (typeof parsed !== 'number' || !isValidChain(parsed)) {
|
|
132
|
-
throw new LombardError(
|
|
133
|
-
ValidationErrorCode.INVALID_CHAIN,
|
|
134
|
-
`Unsupported EVM chain: ${params.destChain}`,
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
this.chainId = parsed as ChainId;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
142
|
-
// Abstract Method Implementations
|
|
143
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
144
|
-
|
|
145
|
-
protected getAddressSchema(): z.ZodType<string> {
|
|
146
|
-
return depositAndDeployConfig.addressSchema;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
protected getStatusConfig(): StatusConfig<BtcActionStatus> {
|
|
150
|
-
return {
|
|
151
|
-
idle: BtcActionStatus.IDLE,
|
|
152
|
-
ready: BtcActionStatus.READY,
|
|
153
|
-
addressReady: BtcActionStatus.ADDRESS_READY,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
protected getInitialSteps(): StepDefinition {
|
|
158
|
-
return {
|
|
159
|
-
created: StepStatus.IDLE,
|
|
160
|
-
verifying: StepStatus.IDLE,
|
|
161
|
-
wrapping: StepStatus.IDLE,
|
|
162
|
-
depositing: StepStatus.IDLE,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
protected isAuthorized(): boolean {
|
|
167
|
-
return this.authState.authorized;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
protected getChainId(): ChainId {
|
|
171
|
-
return this.chainId;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
protected getDepositAddressParams() {
|
|
175
|
-
const recipient = this.ensureRecipient();
|
|
176
|
-
return {
|
|
177
|
-
address: recipient,
|
|
178
|
-
chainId: this.chainId,
|
|
179
|
-
signature: this.authState.signature!,
|
|
180
|
-
token: this.getExpectedToken(),
|
|
181
|
-
eip712Data: this.authState.typedData,
|
|
182
|
-
partnerId: this.ctx.partner.getPartnerId(),
|
|
183
|
-
referrerCode: this._referralCode,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Get expected token for this action (BTCb by default for DepositAndDeploy)
|
|
189
|
-
*/
|
|
190
|
-
protected getExpectedToken(): string {
|
|
191
|
-
return assetIdToToken(this.params.assetOut, Token.BTCb);
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
protected getAuthRequiredMessage(): string {
|
|
195
|
-
return 'Deposit authorization required. Call authorizeDeposit() first.';
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
199
|
-
// Public Getters
|
|
200
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
201
|
-
|
|
202
|
-
/** Get deposit and deploy fee (available after prepare()) */
|
|
203
|
-
get fee(): string | undefined {
|
|
204
|
-
return this.authState.fee;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
208
|
-
// Public Methods
|
|
209
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
210
|
-
|
|
211
|
-
async prepare(params: BtcDepositAndDeployPrepareParams): Promise<void> {
|
|
212
|
-
this.assertStatus(BtcActionStatus.IDLE, 'prepare');
|
|
213
|
-
|
|
214
|
-
return this.act(async () => {
|
|
215
|
-
const validated = this.validatePrepareParams(params);
|
|
216
|
-
|
|
217
|
-
this._amount = validated.amount;
|
|
218
|
-
this._recipient = validated.recipient;
|
|
219
|
-
this._referralCode = validated.referralCode;
|
|
220
|
-
|
|
221
|
-
// Get fee for deposit and deploy (uses config's getVaultKey for validation)
|
|
222
|
-
this.authState.fee = await depositAndDeployConfig.getDepositAndDeployFee(
|
|
223
|
-
this.ctx,
|
|
224
|
-
this.chainId,
|
|
225
|
-
getVaultKey(this.params.protocol),
|
|
226
|
-
);
|
|
227
|
-
|
|
228
|
-
this.updateStatus(BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION);
|
|
229
|
-
this.emitInitialProgress();
|
|
230
|
-
}, BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
async authorizeDeposit(): Promise<void> {
|
|
234
|
-
this.assertStatus(
|
|
235
|
-
[BtcActionStatus.NEEDS_DEPLOY_AUTHORIZATION, BtcActionStatus.READY],
|
|
236
|
-
'authorizeDeposit',
|
|
237
|
-
);
|
|
238
|
-
|
|
239
|
-
if (this.status === BtcActionStatus.READY) return;
|
|
240
|
-
|
|
241
|
-
const recipient = this.ensureRecipient();
|
|
242
|
-
const amount = this.ensureAmount();
|
|
243
|
-
|
|
244
|
-
return this.act(async () => {
|
|
245
|
-
const amountSats = toSatoshi(amount);
|
|
246
|
-
|
|
247
|
-
// For BTC → BTC.b deposit and deploy, use the output token (BTCb).
|
|
248
|
-
// Unlike LBTC which has a variable ratio with BTC, BTC.b is 1:1 with BTC
|
|
249
|
-
// so no ratio conversion is needed (amountStrategy: 'identity').
|
|
250
|
-
// Using assetIdToToken ensures we use the correct token for the permit.
|
|
251
|
-
const outputToken = assetIdToToken(this.params.assetOut, Token.BTCb);
|
|
252
|
-
|
|
253
|
-
const result = await depositAndDeployConfig.authorizeDepositAndDeploy(
|
|
254
|
-
this.ctx,
|
|
255
|
-
{
|
|
256
|
-
chainId: this.chainId,
|
|
257
|
-
recipient,
|
|
258
|
-
amount: amountSats.toString(),
|
|
259
|
-
vaultKey: getVaultKey(this.params.protocol),
|
|
260
|
-
token: outputToken,
|
|
261
|
-
},
|
|
262
|
-
);
|
|
263
|
-
|
|
264
|
-
this.authState.signature = result.signature;
|
|
265
|
-
this.authState.typedData = result.typedData;
|
|
266
|
-
this.authState.authorized = true;
|
|
267
|
-
}, BtcActionStatus.READY);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
async generateDepositAddress(): Promise<string> {
|
|
271
|
-
this.assertStatus(BtcActionStatus.READY, 'generateDepositAddress');
|
|
272
|
-
this.ensureAuthorized();
|
|
273
|
-
|
|
274
|
-
if (this._depositAddress) {
|
|
275
|
-
return this._depositAddress;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
return this.act(async () => {
|
|
279
|
-
const apiParams = this.getDepositAddressParams();
|
|
280
|
-
const depositAddress =
|
|
281
|
-
await this.ctx.api.generateDepositAddress(apiParams);
|
|
282
|
-
|
|
283
|
-
ensureNotSanctionedAddress(depositAddress);
|
|
284
|
-
this._depositAddress = depositAddress;
|
|
285
|
-
|
|
286
|
-
this.emitProgress({
|
|
287
|
-
status: BtcActionStatus.ADDRESS_READY,
|
|
288
|
-
steps: {
|
|
289
|
-
created: StepStatus.COMPLETE,
|
|
290
|
-
verifying: StepStatus.IDLE,
|
|
291
|
-
wrapping: StepStatus.IDLE,
|
|
292
|
-
depositing: StepStatus.IDLE,
|
|
293
|
-
},
|
|
294
|
-
metadata: { depositAddress },
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
return depositAddress;
|
|
298
|
-
}, BtcActionStatus.ADDRESS_READY);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
async execute(): Promise<{ depositAddress: string; txHash?: string }> {
|
|
302
|
-
return this.act(async () => {
|
|
303
|
-
this.assertStatus(BtcActionStatus.ADDRESS_READY, 'execute');
|
|
304
|
-
|
|
305
|
-
if (!this._depositAddress) {
|
|
306
|
-
await this.generateDepositAddress();
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
const depositAddress = this.ensureDepositAddress();
|
|
310
|
-
const txHash = await this.trySendBitcoin(depositAddress);
|
|
311
|
-
|
|
312
|
-
return txHash ? { depositAddress, txHash } : { depositAddress };
|
|
313
|
-
});
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
// Custom monitorDeposit with different step names
|
|
317
|
-
async monitorDeposit(): Promise<MonitorProgress | undefined> {
|
|
318
|
-
const depositAddress = this._depositAddress;
|
|
319
|
-
const recipient = this._recipient;
|
|
320
|
-
|
|
321
|
-
if (!depositAddress || !recipient) {
|
|
322
|
-
throw LombardError.missingParameter('depositAddress or recipient');
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
const progress = await monitorDeposit({
|
|
326
|
-
network: this.bitcoinNetwork,
|
|
327
|
-
btcService: this.ctx.btc,
|
|
328
|
-
fetchDeposit: async () => {
|
|
329
|
-
const deposits = await this.ctx.api.getDeposits(recipient);
|
|
330
|
-
const ourDeposit = deposits.find(
|
|
331
|
-
deposit => deposit.depositAddress === depositAddress,
|
|
332
|
-
);
|
|
333
|
-
|
|
334
|
-
if (!ourDeposit) {
|
|
335
|
-
return undefined;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
return {
|
|
339
|
-
blockHeight: ourDeposit.blockHeight,
|
|
340
|
-
isClaimed: ourDeposit.isClaimed,
|
|
341
|
-
};
|
|
342
|
-
},
|
|
343
|
-
onProgress: p => {
|
|
344
|
-
this.emitProgress({
|
|
345
|
-
status: this.status,
|
|
346
|
-
steps: {
|
|
347
|
-
created: StepStatus.COMPLETE,
|
|
348
|
-
verifying: p.hasEnoughConfirmations
|
|
349
|
-
? StepStatus.COMPLETE
|
|
350
|
-
: StepStatus.PENDING,
|
|
351
|
-
wrapping: p.isClaimed ? StepStatus.COMPLETE : StepStatus.PENDING,
|
|
352
|
-
depositing: StepStatus.PENDING,
|
|
353
|
-
},
|
|
354
|
-
confirmations: p.confirmations,
|
|
355
|
-
requiredConfirmations: p.requiredConfirmations,
|
|
356
|
-
metadata: { isClaimed: p.isClaimed },
|
|
357
|
-
});
|
|
358
|
-
},
|
|
359
|
-
onComplete: () => {
|
|
360
|
-
this.emitCompleted();
|
|
361
|
-
},
|
|
362
|
-
});
|
|
363
|
-
|
|
364
|
-
return progress;
|
|
365
|
-
}
|
|
366
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Chain Configuration for BTC DepositAndDeploy
|
|
3
|
-
*
|
|
4
|
-
* BTC DepositAndDeploy: BTC → BTC.b → DeFi vault (Silo)
|
|
5
|
-
*
|
|
6
|
-
* Note: DepositAndDeploy is for protocols that accept BTC.b (wrapped BTC)
|
|
7
|
-
* rather than LBTC. Currently, this is Silo on Avalanche.
|
|
8
|
-
*
|
|
9
|
-
* @module chains/btc/actions/depositAndDeploy/config/evm
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import type { EvmService } from '@lombard.finance/sdk-common';
|
|
13
|
-
import type { EIP1193Provider } from 'viem';
|
|
14
|
-
|
|
15
|
-
import type { ChainId } from '../../../../../common/chains';
|
|
16
|
-
import { AssetId, Chain, Env } from '../../../../../core';
|
|
17
|
-
import { LombardError } from '../../../../../shared/errors';
|
|
18
|
-
import { ensureCorrectChain } from '../../../../../shared/evm/switchChain';
|
|
19
|
-
import { evmAddressSchema } from '../../../../../shared/validation';
|
|
20
|
-
import { getSupportedProtocols } from '../../stakeAndDeploy/config';
|
|
21
|
-
import type { DepositAndDeployChainConfig } from './types';
|
|
22
|
-
|
|
23
|
-
// DepositAndDeploy requires BTC.b + Silo vault support
|
|
24
|
-
// Currently only Avalanche is supported
|
|
25
|
-
const DEPOSIT_AND_DEPLOY_CHAINS = {
|
|
26
|
-
mainnet: [Chain.AVALANCHE],
|
|
27
|
-
testnet: [Chain.AVALANCHE_FUJI],
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* EVM deposit and deploy configuration
|
|
32
|
-
*
|
|
33
|
-
* DepositAndDeploy produces BTC.b then deploys to a vault.
|
|
34
|
-
* Currently limited to Silo on Avalanche.
|
|
35
|
-
*/
|
|
36
|
-
export const evmDepositAndDeployConfig: DepositAndDeployChainConfig = {
|
|
37
|
-
chainType: 'evm',
|
|
38
|
-
|
|
39
|
-
routes: [
|
|
40
|
-
{
|
|
41
|
-
sourceChains: [Chain.BITCOIN_MAINNET],
|
|
42
|
-
envs: [Env.prod],
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
sourceChains: [Chain.BITCOIN_SIGNET],
|
|
46
|
-
envs: [Env.stage, Env.dev, Env.testnet, Env.ibc],
|
|
47
|
-
},
|
|
48
|
-
],
|
|
49
|
-
|
|
50
|
-
// DepositAndDeploy with BTC.b is available on Avalanche
|
|
51
|
-
destChains: [
|
|
52
|
-
...DEPOSIT_AND_DEPLOY_CHAINS.mainnet,
|
|
53
|
-
...DEPOSIT_AND_DEPLOY_CHAINS.testnet,
|
|
54
|
-
],
|
|
55
|
-
|
|
56
|
-
// DepositAndDeploy produces BTC.b (then deposits to vault)
|
|
57
|
-
supportedAssetsOut: [AssetId.BTCb],
|
|
58
|
-
|
|
59
|
-
supportedProtocols: getSupportedProtocols(AssetId.BTCb),
|
|
60
|
-
|
|
61
|
-
addressSchema: evmAddressSchema,
|
|
62
|
-
|
|
63
|
-
async getDepositAndDeployFee(ctx, chainId, vaultKey) {
|
|
64
|
-
const evm = ctx.capabilities.require('evm') as EvmService;
|
|
65
|
-
// Silo uses the same fee mechanism as stake and bake
|
|
66
|
-
return evm.getStakeAndBakeFee(chainId as ChainId, vaultKey);
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
async authorizeDepositAndDeploy(
|
|
70
|
-
ctx,
|
|
71
|
-
{ chainId, recipient, amount, vaultKey, token },
|
|
72
|
-
) {
|
|
73
|
-
const evm = ctx.capabilities.require('evm') as EvmService;
|
|
74
|
-
const provider = await ctx.getProvider('evm');
|
|
75
|
-
if (!provider) {
|
|
76
|
-
throw LombardError.providerMissing(String(chainId), 'evm');
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Ensure wallet is on the correct chain before signing
|
|
80
|
-
await ensureCorrectChain(provider as EIP1193Provider, chainId as ChainId);
|
|
81
|
-
|
|
82
|
-
// Silo uses the approve flow (on-chain approval), not permit
|
|
83
|
-
const result = await evm.signStakeAndBake({
|
|
84
|
-
value: amount,
|
|
85
|
-
account: recipient,
|
|
86
|
-
chainId: chainId as ChainId,
|
|
87
|
-
provider: provider as EIP1193Provider,
|
|
88
|
-
vaultKey,
|
|
89
|
-
token,
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
// Store signature via API (even for approve flow, we need to track it)
|
|
93
|
-
await ctx.api.storeStakeAndBakeSignature({
|
|
94
|
-
signature: result.signature,
|
|
95
|
-
typedData: result.typedData,
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
return {
|
|
99
|
-
signature: result.signature,
|
|
100
|
-
typedData: result.typedData,
|
|
101
|
-
// approvalTxHash may not be present in the result for all flows
|
|
102
|
-
approvalTxHash: (result as { approvalTxHash?: string }).approvalTxHash,
|
|
103
|
-
};
|
|
104
|
-
},
|
|
105
|
-
};
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC DepositAndDeploy Configuration
|
|
3
|
-
*
|
|
4
|
-
* Exports configuration for BTC → BTC.b → Vault operations.
|
|
5
|
-
* Uses DEFI_REGISTRY as the single source of truth for protocol validation.
|
|
6
|
-
*
|
|
7
|
-
* @module chains/btc/actions/depositAndDeploy/config
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import type { AssetId, Chain, Env } from '../../../../../core';
|
|
11
|
-
import { DEFI_REGISTRY,DefiProtocol } from '../../../../../defi';
|
|
12
|
-
import { evmDepositAndDeployConfig } from './evm';
|
|
13
|
-
import type { DepositAndDeployChainConfig } from './types';
|
|
14
|
-
|
|
15
|
-
export type {
|
|
16
|
-
DepositAndDeployAuthResult,
|
|
17
|
-
DepositAndDeployChainConfig,
|
|
18
|
-
DepositAndDeployRouteDefinition,
|
|
19
|
-
} from './types';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* The default config for DepositAndDeploy
|
|
23
|
-
* Currently only EVM (Avalanche + Silo) is supported
|
|
24
|
-
*/
|
|
25
|
-
export const depositAndDeployConfig: DepositAndDeployChainConfig =
|
|
26
|
-
evmDepositAndDeployConfig;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Check if a destination chain is supported for deposit and deploy
|
|
30
|
-
*/
|
|
31
|
-
export function isDestChainSupported(destChain: Chain): boolean {
|
|
32
|
-
return depositAndDeployConfig.destChains.includes(destChain);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Check if assetOut is supported for DepositAndDeploy
|
|
37
|
-
* DepositAndDeploy should only produce BTC.b
|
|
38
|
-
*/
|
|
39
|
-
export function isAssetOutSupported(assetOut: AssetId): boolean {
|
|
40
|
-
return depositAndDeployConfig.supportedAssetsOut.includes(assetOut);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Check if a protocol is supported for deposit and deploy
|
|
45
|
-
* Uses DEFI_REGISTRY as the single source of truth
|
|
46
|
-
*/
|
|
47
|
-
export function isProtocolSupported(protocol: string): boolean {
|
|
48
|
-
// Check if protocol exists in DEFI_REGISTRY
|
|
49
|
-
return protocol in DEFI_REGISTRY;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get the vault key for a protocol
|
|
54
|
-
* Returns the protocol key if valid, throws if not supported
|
|
55
|
-
*
|
|
56
|
-
* @param protocol - Protocol identifier from DefiProtocol
|
|
57
|
-
* @returns The vault key for API calls
|
|
58
|
-
* @throws If protocol is not in DEFI_REGISTRY
|
|
59
|
-
*/
|
|
60
|
-
export function getVaultKey(protocol: string): string {
|
|
61
|
-
if (!isProtocolSupported(protocol)) {
|
|
62
|
-
const supportedProtocols = Object.keys(DEFI_REGISTRY).join(', ');
|
|
63
|
-
throw new Error(
|
|
64
|
-
`Unsupported protocol: ${protocol}. ` +
|
|
65
|
-
`Supported protocols: ${supportedProtocols}`,
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
// Protocol keys in DEFI_REGISTRY match DefiProtocol values
|
|
69
|
-
return protocol;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Get list of supported protocols for DepositAndDeploy
|
|
74
|
-
* This returns protocols that support BTC.b (for DepositAndDeploy)
|
|
75
|
-
*/
|
|
76
|
-
export function getSupportedProtocols(assetId: AssetId): DefiProtocol[] {
|
|
77
|
-
return Object.entries(DEFI_REGISTRY)
|
|
78
|
-
.filter(([_, tokenMap]) => assetId in tokenMap)
|
|
79
|
-
.map(([protocol]) => protocol as DefiProtocol);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Check if a route is available for a given source chain and environment
|
|
83
|
-
*/
|
|
84
|
-
export function isRouteAvailable(sourceChain: Chain, env: Env): boolean {
|
|
85
|
-
return depositAndDeployConfig.routes.some(
|
|
86
|
-
route =>
|
|
87
|
-
route.sourceChains.includes(sourceChain) && route.envs.includes(env),
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Check if a protocol supports a specific chain for deposit and deploy
|
|
93
|
-
*/
|
|
94
|
-
export function isProtocolChainSupported(
|
|
95
|
-
protocol: string,
|
|
96
|
-
chainId: number,
|
|
97
|
-
env: Env,
|
|
98
|
-
): boolean {
|
|
99
|
-
const protocolRegistry = DEFI_REGISTRY[protocol as DefiProtocol];
|
|
100
|
-
if (!protocolRegistry) return false;
|
|
101
|
-
|
|
102
|
-
// Check BTCb token (used by DepositAndDeploy)
|
|
103
|
-
const btcbRegistry =
|
|
104
|
-
protocolRegistry['BTCb' as keyof typeof protocolRegistry];
|
|
105
|
-
if (!btcbRegistry) return false;
|
|
106
|
-
|
|
107
|
-
const envRegistry = btcbRegistry[env];
|
|
108
|
-
if (!envRegistry) return false;
|
|
109
|
-
|
|
110
|
-
return chainId in envRegistry;
|
|
111
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC DepositAndDeploy Chain Configuration Types
|
|
3
|
-
*
|
|
4
|
-
* BTC DepositAndDeploy: BTC → BTC.b → DeFi vault (Silo)
|
|
5
|
-
*
|
|
6
|
-
* @module chains/btc/actions/depositAndDeploy/config/types
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { z } from 'zod';
|
|
10
|
-
|
|
11
|
-
import type { AssetId, Chain, DeployProtocol, Env } from '../../../../../core';
|
|
12
|
-
import type { BtcCoreContext } from '../../../../../shared/context';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Route definition
|
|
16
|
-
*/
|
|
17
|
-
export interface DepositAndDeployRouteDefinition {
|
|
18
|
-
sourceChains: Chain[];
|
|
19
|
-
envs: Env[];
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Authorization result
|
|
24
|
-
*/
|
|
25
|
-
export interface DepositAndDeployAuthResult {
|
|
26
|
-
signature: string;
|
|
27
|
-
typedData?: string;
|
|
28
|
-
approvalTxHash?: string;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* DepositAndDeploy chain configuration
|
|
33
|
-
*
|
|
34
|
-
* DepositAndDeploy produces BTC.b then deploys to a vault (e.g., Silo on Avalanche).
|
|
35
|
-
*/
|
|
36
|
-
export interface DepositAndDeployChainConfig {
|
|
37
|
-
chainType: 'evm';
|
|
38
|
-
routes: DepositAndDeployRouteDefinition[];
|
|
39
|
-
destChains: Chain[];
|
|
40
|
-
/** Supported output assets - DepositAndDeploy produces BTC.b */
|
|
41
|
-
supportedAssetsOut: AssetId[];
|
|
42
|
-
supportedProtocols: DeployProtocol[];
|
|
43
|
-
addressSchema: z.ZodString;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Get deposit and deploy fee for a protocol
|
|
47
|
-
*/
|
|
48
|
-
getDepositAndDeployFee: (
|
|
49
|
-
ctx: BtcCoreContext,
|
|
50
|
-
chainId: unknown,
|
|
51
|
-
vaultKey: string,
|
|
52
|
-
) => Promise<string>;
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Authorize deposit and deploy (approve flow for BTC.b)
|
|
56
|
-
*/
|
|
57
|
-
authorizeDepositAndDeploy: (
|
|
58
|
-
ctx: BtcCoreContext,
|
|
59
|
-
params: {
|
|
60
|
-
chainId: unknown;
|
|
61
|
-
recipient: string;
|
|
62
|
-
amount: string;
|
|
63
|
-
vaultKey: string;
|
|
64
|
-
token: string;
|
|
65
|
-
},
|
|
66
|
-
) => Promise<DepositAndDeployAuthResult>;
|
|
67
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC DepositAndDeploy Factory Functions
|
|
3
|
-
*
|
|
4
|
-
* Factory functions for creating BTC DepositAndDeploy actions.
|
|
5
|
-
*
|
|
6
|
-
* @module chains/btc/actions/depositAndDeploy/factory
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { BtcCoreContext } from '../../../../shared/context';
|
|
10
|
-
import { BtcDepositAndDeploy } from './BtcDepositAndDeploy';
|
|
11
|
-
import type { BtcDepositAndDeployParams } from './types';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Create a BTC DepositAndDeploy action
|
|
15
|
-
*
|
|
16
|
-
* Convenience factory function for creating BTC → BTC.b → Vault operations.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* import { createBtcDepositAndDeploy, Chain, AssetId, DeployProtocol } from '@lombard.finance/sdk';
|
|
21
|
-
*
|
|
22
|
-
* const depositAndDeploy = createBtcDepositAndDeploy(ctx, {
|
|
23
|
-
* assetOut: AssetId.BTCb,
|
|
24
|
-
* destChain: Chain.AVALANCHE,
|
|
25
|
-
* protocol: DeployProtocol.Silo,
|
|
26
|
-
* });
|
|
27
|
-
*
|
|
28
|
-
* await depositAndDeploy.prepare({ amount: '0.1', recipient: '0x...' });
|
|
29
|
-
* await depositAndDeploy.authorizeDeposit();
|
|
30
|
-
* const address = await depositAndDeploy.generateDepositAddress();
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export function createBtcDepositAndDeploy(
|
|
34
|
-
ctx: BtcCoreContext,
|
|
35
|
-
params: BtcDepositAndDeployParams,
|
|
36
|
-
): BtcDepositAndDeploy {
|
|
37
|
-
return new BtcDepositAndDeploy(ctx, params);
|
|
38
|
-
}
|