@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,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Chain Configuration for Stake
|
|
3
|
-
*
|
|
4
|
-
* Handles staking LBTC to DeFi protocols on EVM chains.
|
|
5
|
-
*
|
|
6
|
-
* Protocol availability:
|
|
7
|
-
* - Veda: Ethereum, Base, BSC, Corn (prod only)
|
|
8
|
-
* - Silo: Avalanche (prod only)
|
|
9
|
-
*
|
|
10
|
-
* @module chains/evm/actions/stake/config/evm
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { Chain, DeployProtocol, Env } from '../../../../../core';
|
|
14
|
-
import { evmAddressSchema } from '../../../../../shared/validation';
|
|
15
|
-
import type { ChainConfig } from './types';
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* EVM chain configuration for stake operations
|
|
19
|
-
*
|
|
20
|
-
* Supports staking LBTC to Veda and Silo protocols.
|
|
21
|
-
*/
|
|
22
|
-
export const evmConfig: ChainConfig = {
|
|
23
|
-
chainType: 'evm',
|
|
24
|
-
|
|
25
|
-
routes: [
|
|
26
|
-
// Veda - Ethereum
|
|
27
|
-
{
|
|
28
|
-
sourceChains: [Chain.ETHEREUM],
|
|
29
|
-
destChains: [Chain.ETHEREUM],
|
|
30
|
-
protocols: [DeployProtocol.Veda],
|
|
31
|
-
envs: [Env.prod],
|
|
32
|
-
},
|
|
33
|
-
// Veda - Base
|
|
34
|
-
{
|
|
35
|
-
sourceChains: [Chain.BASE],
|
|
36
|
-
destChains: [Chain.BASE],
|
|
37
|
-
protocols: [DeployProtocol.Veda],
|
|
38
|
-
envs: [Env.prod],
|
|
39
|
-
},
|
|
40
|
-
// Veda - BSC
|
|
41
|
-
{
|
|
42
|
-
sourceChains: [Chain.BSC],
|
|
43
|
-
destChains: [Chain.BSC],
|
|
44
|
-
protocols: [DeployProtocol.Veda],
|
|
45
|
-
envs: [Env.prod],
|
|
46
|
-
},
|
|
47
|
-
// Veda - Corn
|
|
48
|
-
{
|
|
49
|
-
sourceChains: [Chain.CORN],
|
|
50
|
-
destChains: [Chain.CORN],
|
|
51
|
-
protocols: [DeployProtocol.Veda],
|
|
52
|
-
envs: [Env.prod],
|
|
53
|
-
},
|
|
54
|
-
// Silo - Avalanche
|
|
55
|
-
{
|
|
56
|
-
sourceChains: [Chain.AVALANCHE],
|
|
57
|
-
destChains: [Chain.AVALANCHE],
|
|
58
|
-
protocols: [DeployProtocol.Silo],
|
|
59
|
-
envs: [Env.prod],
|
|
60
|
-
},
|
|
61
|
-
],
|
|
62
|
-
|
|
63
|
-
addressSchema: evmAddressSchema,
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Check if a source chain is supported for stake
|
|
68
|
-
*/
|
|
69
|
-
export function isSourceChainSupported(chain: Chain, env: Env): boolean {
|
|
70
|
-
return evmConfig.routes.some(
|
|
71
|
-
route => route.sourceChains.includes(chain) && route.envs.includes(env),
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Check if a protocol is supported for a given chain
|
|
77
|
-
*/
|
|
78
|
-
export function isProtocolSupported(
|
|
79
|
-
chain: Chain,
|
|
80
|
-
protocol: DeployProtocol,
|
|
81
|
-
env: Env,
|
|
82
|
-
): boolean {
|
|
83
|
-
return evmConfig.routes.some(
|
|
84
|
-
route =>
|
|
85
|
-
route.sourceChains.includes(chain) &&
|
|
86
|
-
route.protocols.includes(protocol) &&
|
|
87
|
-
route.envs.includes(env),
|
|
88
|
-
);
|
|
89
|
-
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Stake Chain Configuration Types
|
|
3
|
-
*
|
|
4
|
-
* Defines the interface for source chain configurations.
|
|
5
|
-
* Each supported chain implements this interface to provide
|
|
6
|
-
* chain-specific behavior for EVM stake operations.
|
|
7
|
-
*
|
|
8
|
-
* @module chains/evm/actions/stake/config/types
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import type { z } from 'zod';
|
|
12
|
-
|
|
13
|
-
import type {
|
|
14
|
-
Chain,
|
|
15
|
-
ChainType,
|
|
16
|
-
DeployProtocol,
|
|
17
|
-
Env,
|
|
18
|
-
} from '../../../../../core';
|
|
19
|
-
import type { EvmCoreContext } from '../../../../../shared/context';
|
|
20
|
-
|
|
21
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
22
|
-
// Route Definition
|
|
23
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Route definition for EVM stake operations
|
|
27
|
-
*
|
|
28
|
-
* Defines which source chains, protocols, and environments are supported.
|
|
29
|
-
*/
|
|
30
|
-
export interface RouteDefinition {
|
|
31
|
-
/** Supported source chains */
|
|
32
|
-
sourceChains: Chain[];
|
|
33
|
-
/** Supported destination chains */
|
|
34
|
-
destChains: Chain[];
|
|
35
|
-
/** Supported DeFi protocols */
|
|
36
|
-
protocols: DeployProtocol[];
|
|
37
|
-
/** Supported environments */
|
|
38
|
-
envs: Env[];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
42
|
-
// Chain Configuration
|
|
43
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Chain-specific configuration for EVM stake operations
|
|
47
|
-
*
|
|
48
|
-
* EVM stake deposits already-owned LBTC to DeFi vaults (Veda, Silo).
|
|
49
|
-
*/
|
|
50
|
-
export interface ChainConfig {
|
|
51
|
-
/** Chain type identifier */
|
|
52
|
-
chainType: ChainType;
|
|
53
|
-
|
|
54
|
-
/** Supported routes for this chain type */
|
|
55
|
-
routes: RouteDefinition[];
|
|
56
|
-
|
|
57
|
-
/** Address validation Zod schema */
|
|
58
|
-
addressSchema: z.ZodString;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Check if user has sufficient LBTC balance
|
|
62
|
-
*
|
|
63
|
-
* @param ctx - EVM core context
|
|
64
|
-
* @param address - User address
|
|
65
|
-
* @param amount - Amount to stake
|
|
66
|
-
* @returns true if balance is sufficient
|
|
67
|
-
*/
|
|
68
|
-
checkBalance?: (
|
|
69
|
-
ctx: EvmCoreContext,
|
|
70
|
-
address: string,
|
|
71
|
-
amount: string,
|
|
72
|
-
) => Promise<boolean>;
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get required approval amount
|
|
76
|
-
*
|
|
77
|
-
* @param ctx - EVM core context
|
|
78
|
-
* @param address - User address
|
|
79
|
-
* @param spender - Vault/protocol address
|
|
80
|
-
* @param amount - Amount to stake
|
|
81
|
-
* @returns Approval amount needed (0 if already approved)
|
|
82
|
-
*/
|
|
83
|
-
getApprovalNeeded?: (
|
|
84
|
-
ctx: EvmCoreContext,
|
|
85
|
-
address: string,
|
|
86
|
-
spender: string,
|
|
87
|
-
amount: string,
|
|
88
|
-
) => Promise<string>;
|
|
89
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Stake Factory Functions
|
|
3
|
-
*
|
|
4
|
-
* Provides factory functions for creating EvmStake instances.
|
|
5
|
-
*
|
|
6
|
-
* @module chains/evm/actions/stake/factory
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import type { LombardConfig } from '../../../../config/types';
|
|
10
|
-
import type { EvmCoreContext } from '../../../../shared/context';
|
|
11
|
-
import { createEvmCoreContext } from '../../../../shared/context';
|
|
12
|
-
import { EvmStake } from './EvmStake';
|
|
13
|
-
import type { EvmStakeParams } from './types';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Create EvmStake action from config
|
|
17
|
-
*
|
|
18
|
-
* @internal This factory is for internal use. Use createLombardSDK() instead:
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const sdk = await createLombardSDK({ env: Env.prod, providers: { evm: () => window.ethereum } });
|
|
23
|
-
* const stake = sdk.chain.evm.stake({
|
|
24
|
-
* sourceChain: Chain.ETHEREUM,
|
|
25
|
-
* destChain: Chain.ETHEREUM,
|
|
26
|
-
* });
|
|
27
|
-
* await stake.prepare({ amount: '0.1' });
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export function evmStake(
|
|
31
|
-
config: LombardConfig,
|
|
32
|
-
params: EvmStakeParams,
|
|
33
|
-
): EvmStake {
|
|
34
|
-
const ctx = createEvmCoreContext(config);
|
|
35
|
-
return new EvmStake(ctx, params);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Create EvmStake action from context
|
|
40
|
-
*
|
|
41
|
-
* Use this when you already have an EvmCoreContext (e.g., in EvmActions).
|
|
42
|
-
*
|
|
43
|
-
* @param ctx - EvmCoreContext
|
|
44
|
-
* @param params - Stake parameters
|
|
45
|
-
* @returns EvmStake instance
|
|
46
|
-
*/
|
|
47
|
-
export function createEvmStake(
|
|
48
|
-
ctx: EvmCoreContext,
|
|
49
|
-
params: EvmStakeParams,
|
|
50
|
-
): EvmStake {
|
|
51
|
-
return new EvmStake(ctx, params);
|
|
52
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Stake Action
|
|
3
|
-
*
|
|
4
|
-
* Exports for the EVM stake action.
|
|
5
|
-
*
|
|
6
|
-
* @module chains/evm/actions/stake
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
// Main action
|
|
10
|
-
export { EvmStake } from './EvmStake';
|
|
11
|
-
|
|
12
|
-
// Factory functions
|
|
13
|
-
export { createEvmStake,evmStake } from './factory';
|
|
14
|
-
|
|
15
|
-
// Types
|
|
16
|
-
export {
|
|
17
|
-
type EvmStakeParams,
|
|
18
|
-
type EvmStakePrepareParams,
|
|
19
|
-
type EvmStakeProgress,
|
|
20
|
-
EvmStakeStatus,
|
|
21
|
-
type IEvmStake,
|
|
22
|
-
} from './types';
|
|
23
|
-
|
|
24
|
-
// Config (for advanced usage)
|
|
25
|
-
export type { ChainConfig, RouteDefinition } from './config';
|
|
26
|
-
export {
|
|
27
|
-
evmConfig,
|
|
28
|
-
isProtocolSupported,
|
|
29
|
-
isSourceChainSupported,
|
|
30
|
-
} from './config';
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Stake Action Types
|
|
3
|
-
*
|
|
4
|
-
* Stake BTC.b to receive LBTC via Asset Router.
|
|
5
|
-
*
|
|
6
|
-
* ## Approval (Avalanche only)
|
|
7
|
-
*
|
|
8
|
-
* On Avalanche, users must approve the Adapter contract to spend their BTC.b.
|
|
9
|
-
*
|
|
10
|
-
* ## Fee Authorization (Ethereum/Sepolia only)
|
|
11
|
-
*
|
|
12
|
-
* Fee authorization is required on unsubsidized chains (Ethereum, Sepolia).
|
|
13
|
-
* On subsidized chains (Avalanche, Base, BSC), no fee auth is required.
|
|
14
|
-
*
|
|
15
|
-
* ## Flow Examples
|
|
16
|
-
*
|
|
17
|
-
* **Avalanche (needs approval):**
|
|
18
|
-
* IDLE → NEEDS_APPROVAL → READY → COMPLETED
|
|
19
|
-
*
|
|
20
|
-
* **Ethereum/Sepolia (needs fee auth):**
|
|
21
|
-
* IDLE → NEEDS_FEE_AUTHORIZATION → READY → COMPLETED
|
|
22
|
-
*
|
|
23
|
-
* **Base/BSC (neither):**
|
|
24
|
-
* IDLE → READY → COMPLETED
|
|
25
|
-
*
|
|
26
|
-
* @module chains/evm/actions/stake/types
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
import type {
|
|
30
|
-
AssetId,
|
|
31
|
-
Chain,
|
|
32
|
-
StepStatus,
|
|
33
|
-
StrategyProgress,
|
|
34
|
-
} from '../../../../core';
|
|
35
|
-
import type { MonitorableAction } from '../../../../shared/actions/BaseAction';
|
|
36
|
-
import type { EvmOperationStatus } from '../../../../shared/constants/statusConstants';
|
|
37
|
-
import type { LombardError } from '../../../../shared/errors';
|
|
38
|
-
import type { FeeAuthState } from '../../shared/feeAuth';
|
|
39
|
-
|
|
40
|
-
// Re-export status for convenience
|
|
41
|
-
export { EvmOperationStatus as EvmStakeStatus } from '../../../../shared/constants/statusConstants';
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* EVM Stake parameters
|
|
45
|
-
*
|
|
46
|
-
* Stakes BTC.b to receive LBTC.
|
|
47
|
-
*/
|
|
48
|
-
export interface EvmStakeParams {
|
|
49
|
-
/** Input asset (BTC.b) */
|
|
50
|
-
assetIn: AssetId;
|
|
51
|
-
/** Output asset (LBTC) */
|
|
52
|
-
assetOut: AssetId;
|
|
53
|
-
/** Source chain (where BTC.b is held) */
|
|
54
|
-
sourceChain: Chain;
|
|
55
|
-
/** Destination chain (same as source) */
|
|
56
|
-
destChain: Chain;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* EVM Stake prepare parameters
|
|
61
|
-
*/
|
|
62
|
-
export interface EvmStakePrepareParams {
|
|
63
|
-
/** Amount of BTC.b to stake */
|
|
64
|
-
amount: string;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* EVM Stake progress
|
|
69
|
-
*/
|
|
70
|
-
export interface EvmStakeProgress extends StrategyProgress<EvmOperationStatus> {
|
|
71
|
-
status: EvmOperationStatus;
|
|
72
|
-
steps: {
|
|
73
|
-
approval?: StepStatus;
|
|
74
|
-
staking: StepStatus;
|
|
75
|
-
};
|
|
76
|
-
txHash?: string;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* EVM Stake interface
|
|
81
|
-
*/
|
|
82
|
-
export interface IEvmStake extends MonitorableAction {
|
|
83
|
-
readonly status: EvmOperationStatus;
|
|
84
|
-
readonly error: LombardError | null;
|
|
85
|
-
readonly amount?: string;
|
|
86
|
-
readonly txHash?: string;
|
|
87
|
-
/** Fee authorization state (for UI display) */
|
|
88
|
-
readonly feeAuth: FeeAuthState;
|
|
89
|
-
/** Whether approval is needed (Avalanche only) */
|
|
90
|
-
readonly needsApproval: boolean;
|
|
91
|
-
|
|
92
|
-
prepare(params: EvmStakePrepareParams): Promise<void>;
|
|
93
|
-
/**
|
|
94
|
-
* Approve BTC.b spending (Avalanche only)
|
|
95
|
-
* Only needed when status is NEEDS_APPROVAL.
|
|
96
|
-
*/
|
|
97
|
-
approve(): Promise<void>;
|
|
98
|
-
/**
|
|
99
|
-
* Authorize fee (EIP-712 signing)
|
|
100
|
-
* Only needed on unsubsidized chains (Ethereum/Sepolia).
|
|
101
|
-
*/
|
|
102
|
-
authorizeFee(): Promise<void>;
|
|
103
|
-
execute(): Promise<{ txHash: string }>;
|
|
104
|
-
}
|
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Unstake Action
|
|
3
|
-
*
|
|
4
|
-
* Burns LBTC on EVM chains and releases BTC (cross-chain) or BTC.b (same-chain).
|
|
5
|
-
*
|
|
6
|
-
* ## Fee Authorization
|
|
7
|
-
*
|
|
8
|
-
* Fee authorization is required when:
|
|
9
|
-
* - Output asset is BTC.b (LBTC → BTC.b conversion)
|
|
10
|
-
* - Source chain is Ethereum/Sepolia (unsubsidized chains)
|
|
11
|
-
*
|
|
12
|
-
* **Flow with fee auth (LBTC → BTC.b on Ethereum/Sepolia):**
|
|
13
|
-
* IDLE → NEEDS_FEE_AUTHORIZATION → READY → COMPLETED
|
|
14
|
-
*
|
|
15
|
-
* **Flow without fee auth (LBTC → BTC, or BTC.b on Base/BSC):**
|
|
16
|
-
* IDLE → READY → COMPLETED
|
|
17
|
-
*
|
|
18
|
-
* @module chains/evm/actions/unstake/EvmUnstake
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
import type { EIP1193Provider } from 'viem';
|
|
22
|
-
import { z } from 'zod';
|
|
23
|
-
|
|
24
|
-
import type { ChainId } from '../../../../common/chains';
|
|
25
|
-
import { redeemToken } from '../../../../contract-functions';
|
|
26
|
-
import { AssetId, parseChainIdentifier, StepStatus } from '../../../../core';
|
|
27
|
-
import { BaseAction } from '../../../../shared/actions/BaseAction';
|
|
28
|
-
import { EvmOperationStatus } from '../../../../shared/constants/statusConstants';
|
|
29
|
-
import type { EvmCoreContext } from '../../../../shared/context';
|
|
30
|
-
import { LombardError } from '../../../../shared/errors';
|
|
31
|
-
import type { UnstakeEventMap } from '../../../../shared/events';
|
|
32
|
-
import {
|
|
33
|
-
evmAmountSchema,
|
|
34
|
-
validatePrepareParams,
|
|
35
|
-
} from '../../../../shared/validation';
|
|
36
|
-
import { Token } from '../../../../tokens/token-addresses';
|
|
37
|
-
import {
|
|
38
|
-
authorizeFee as authorizeFeeShared,
|
|
39
|
-
checkFeeAuthorization,
|
|
40
|
-
createInitialFeeAuthState,
|
|
41
|
-
type FeeAuthState,
|
|
42
|
-
} from '../../shared/feeAuth';
|
|
43
|
-
import { evmToBtcbConfig, evmToBtcConfig } from './config';
|
|
44
|
-
import type {
|
|
45
|
-
EvmUnstakeParams,
|
|
46
|
-
EvmUnstakePrepareParams,
|
|
47
|
-
IEvmUnstake,
|
|
48
|
-
} from './types';
|
|
49
|
-
|
|
50
|
-
export class EvmUnstake
|
|
51
|
-
extends BaseAction<UnstakeEventMap, EvmOperationStatus>
|
|
52
|
-
implements IEvmUnstake
|
|
53
|
-
{
|
|
54
|
-
private _amount?: string;
|
|
55
|
-
private _recipient?: string;
|
|
56
|
-
private _txHash?: string;
|
|
57
|
-
private _feeAuth: FeeAuthState = createInitialFeeAuthState();
|
|
58
|
-
|
|
59
|
-
constructor(
|
|
60
|
-
private readonly ctx: EvmCoreContext,
|
|
61
|
-
private readonly params: EvmUnstakeParams,
|
|
62
|
-
) {
|
|
63
|
-
super(EvmOperationStatus.IDLE);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
get amount(): string | undefined {
|
|
67
|
-
return this._amount;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
get recipient(): string | undefined {
|
|
71
|
-
return this._recipient;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
get txHash(): string | undefined {
|
|
75
|
-
return this._txHash;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/** Fee authorization state (for UI display) */
|
|
79
|
-
get feeAuth(): FeeAuthState {
|
|
80
|
-
return this._feeAuth;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/** Whether output is BTC.b (requires fee auth on unsubsidized chains) */
|
|
84
|
-
private get isBtcbOutput(): boolean {
|
|
85
|
-
return this.params.assetOut === AssetId.BTCb;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async prepare(params: EvmUnstakePrepareParams): Promise<void> {
|
|
89
|
-
this.assertStatus(EvmOperationStatus.IDLE, 'prepare');
|
|
90
|
-
|
|
91
|
-
return this.act(async () => {
|
|
92
|
-
const validated = validatePrepareParams(this.prepareSchema, params, {
|
|
93
|
-
destChain: this.params.destChain,
|
|
94
|
-
});
|
|
95
|
-
this._amount = validated.amount;
|
|
96
|
-
this._recipient = validated.recipient;
|
|
97
|
-
|
|
98
|
-
const chainId = parseChainIdentifier(this.params.sourceChain) as ChainId;
|
|
99
|
-
|
|
100
|
-
// Fee auth is only required for BTC.b output on unsubsidized chains
|
|
101
|
-
if (this.isBtcbOutput) {
|
|
102
|
-
// Get EVM account for fee auth check
|
|
103
|
-
const provider = await this.ctx.getProvider('evm');
|
|
104
|
-
if (!provider) {
|
|
105
|
-
throw LombardError.providerMissing(this.params.sourceChain, 'evm');
|
|
106
|
-
}
|
|
107
|
-
const accounts = await (provider as EIP1193Provider).request({
|
|
108
|
-
method: 'eth_accounts',
|
|
109
|
-
});
|
|
110
|
-
const account = accounts[0] as `0x${string}`;
|
|
111
|
-
|
|
112
|
-
// Check fee authorization status (use Token.BTCb for LBTC → BTC.b)
|
|
113
|
-
const feeAuthResult = await checkFeeAuthorization(
|
|
114
|
-
chainId,
|
|
115
|
-
account,
|
|
116
|
-
this.ctx.env,
|
|
117
|
-
Token.BTCb,
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
// Update fee auth state
|
|
121
|
-
this._feeAuth = {
|
|
122
|
-
requiresAuth: feeAuthResult.requiresAuth,
|
|
123
|
-
isAuthorized: feeAuthResult.hasValidSignature,
|
|
124
|
-
feeInSatoshis: feeAuthResult.feeInSatoshis,
|
|
125
|
-
feeFormatted: feeAuthResult.feeFormatted,
|
|
126
|
-
expirationDate: feeAuthResult.expirationDate,
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
// If fee auth required and not authorized, transition to NEEDS_FEE_AUTHORIZATION
|
|
130
|
-
if (feeAuthResult.requiresAuth && !feeAuthResult.hasValidSignature) {
|
|
131
|
-
this.emitProgress({
|
|
132
|
-
status: EvmOperationStatus.NEEDS_FEE_AUTHORIZATION,
|
|
133
|
-
steps: { burning: StepStatus.IDLE, releasing: StepStatus.IDLE },
|
|
134
|
-
});
|
|
135
|
-
return; // Don't transition to READY yet
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// No fee auth required or already authorized
|
|
140
|
-
this.emitProgress({
|
|
141
|
-
status: EvmOperationStatus.READY,
|
|
142
|
-
steps: { burning: StepStatus.IDLE, releasing: StepStatus.IDLE },
|
|
143
|
-
});
|
|
144
|
-
}, this._feeAuth.requiresAuth && !this._feeAuth.isAuthorized
|
|
145
|
-
? EvmOperationStatus.NEEDS_FEE_AUTHORIZATION
|
|
146
|
-
: EvmOperationStatus.READY);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Authorize the network fee
|
|
151
|
-
*
|
|
152
|
-
* Must be called when status is NEEDS_FEE_AUTHORIZATION.
|
|
153
|
-
* Signs the fee authorization and stores it on the server.
|
|
154
|
-
*/
|
|
155
|
-
async authorizeFee(): Promise<void> {
|
|
156
|
-
this.assertStatus(EvmOperationStatus.NEEDS_FEE_AUTHORIZATION, 'authorizeFee');
|
|
157
|
-
|
|
158
|
-
if (!this._feeAuth.feeInSatoshis) {
|
|
159
|
-
throw LombardError.missingParameter('feeInSatoshis');
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
return this.act(async () => {
|
|
163
|
-
const chainId = parseChainIdentifier(this.params.sourceChain) as ChainId;
|
|
164
|
-
|
|
165
|
-
const provider = await this.ctx.getProvider('evm');
|
|
166
|
-
if (!provider) {
|
|
167
|
-
throw LombardError.providerMissing(this.params.sourceChain, 'evm');
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
const accounts = await (provider as EIP1193Provider).request({
|
|
171
|
-
method: 'eth_accounts',
|
|
172
|
-
});
|
|
173
|
-
const account = accounts[0] as `0x${string}`;
|
|
174
|
-
|
|
175
|
-
// Sign and store fee authorization (use Token.BTCb for LBTC → BTC.b)
|
|
176
|
-
await authorizeFeeShared({
|
|
177
|
-
chainId,
|
|
178
|
-
account,
|
|
179
|
-
feeInSatoshis: this._feeAuth.feeInSatoshis!,
|
|
180
|
-
provider: provider as EIP1193Provider,
|
|
181
|
-
env: this.ctx.env,
|
|
182
|
-
token: Token.BTCb,
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
// Update state
|
|
186
|
-
this._feeAuth.isAuthorized = true;
|
|
187
|
-
|
|
188
|
-
this.emitProgress({
|
|
189
|
-
status: EvmOperationStatus.READY,
|
|
190
|
-
steps: { burning: StepStatus.IDLE, releasing: StepStatus.IDLE },
|
|
191
|
-
});
|
|
192
|
-
}, EvmOperationStatus.READY);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
async execute(): Promise<{ txHash: string }> {
|
|
196
|
-
this.assertStatus(EvmOperationStatus.READY, 'execute');
|
|
197
|
-
|
|
198
|
-
return this.act(async () => {
|
|
199
|
-
const provider = await this.ctx.getProvider('evm');
|
|
200
|
-
if (!provider) {
|
|
201
|
-
throw LombardError.providerMissing(this.params.sourceChain, 'evm');
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Get the connected EVM account address from the provider
|
|
205
|
-
const accounts = await (provider as EIP1193Provider).request({
|
|
206
|
-
method: 'eth_accounts',
|
|
207
|
-
});
|
|
208
|
-
const evmAccount = accounts[0] as `0x${string}`;
|
|
209
|
-
if (!evmAccount) {
|
|
210
|
-
throw LombardError.providerMissing(this.params.sourceChain, 'evm');
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const chainId = parseChainIdentifier(this.params.sourceChain) as ChainId;
|
|
214
|
-
const isBtcbOutput = this.params.assetOut === AssetId.BTCb;
|
|
215
|
-
|
|
216
|
-
this.emitProgress({
|
|
217
|
-
status: EvmOperationStatus.READY,
|
|
218
|
-
steps: { burning: StepStatus.PENDING, releasing: StepStatus.IDLE },
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
// For BTC output: account = EVM wallet (executing burn), btcAddress = recipient (Bitcoin)
|
|
222
|
-
// For BTCb output: account = recipient (same EVM address receives BTCb)
|
|
223
|
-
const txHash = await redeemToken({
|
|
224
|
-
provider: provider as EIP1193Provider,
|
|
225
|
-
account: isBtcbOutput ? (this._recipient! as `0x${string}`) : evmAccount,
|
|
226
|
-
amount: this._amount!,
|
|
227
|
-
btcAddress: isBtcbOutput ? undefined : this._recipient!,
|
|
228
|
-
chainId,
|
|
229
|
-
env: this.ctx.env,
|
|
230
|
-
tokenIn: Token.LBTC,
|
|
231
|
-
tokenOut: isBtcbOutput ? Token.BTCb : undefined,
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
this._txHash = txHash;
|
|
235
|
-
|
|
236
|
-
this.emitProgress({
|
|
237
|
-
status: EvmOperationStatus.COMPLETED,
|
|
238
|
-
steps: {
|
|
239
|
-
burning: StepStatus.COMPLETE,
|
|
240
|
-
releasing: isBtcbOutput ? StepStatus.COMPLETE : StepStatus.PENDING,
|
|
241
|
-
},
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
this.emitCompleted();
|
|
245
|
-
|
|
246
|
-
return { txHash };
|
|
247
|
-
}, EvmOperationStatus.COMPLETED);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
private get prepareSchema() {
|
|
251
|
-
const config =
|
|
252
|
-
this.params.assetOut === AssetId.BTC ? evmToBtcConfig : evmToBtcbConfig;
|
|
253
|
-
return z.object({
|
|
254
|
-
amount: evmAmountSchema,
|
|
255
|
-
recipient: config.recipientSchema,
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
}
|