@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,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC Actions
|
|
3
|
-
*
|
|
4
|
-
* Provides factory methods for Bitcoin operations (stake, stakeAndDeploy, deposit).
|
|
5
|
-
* This is the user-facing API for BTC operations.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { createLombardSDK, Chain, AssetId, Env } from '@lombard.finance/sdk';
|
|
10
|
-
*
|
|
11
|
-
* const sdk = await createLombardSDK({
|
|
12
|
-
* env: Env.prod,
|
|
13
|
-
* providers: { evm: () => window.ethereum },
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* const stake = sdk.chain.btc.stake({
|
|
17
|
-
* assetOut: AssetId.LBTC,
|
|
18
|
-
* destChain: Chain.ETHEREUM,
|
|
19
|
-
* });
|
|
20
|
-
*
|
|
21
|
-
* await stake.prepare({ amount: '0.1', recipient: '0x...' });
|
|
22
|
-
* await stake.authorize();
|
|
23
|
-
* const address = await stake.generateDepositAddress();
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @module chains/btc/BtcActions
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
import type { LombardConfig } from '../../config/types';
|
|
30
|
-
import type { BtcCoreContext } from '../../shared/context';
|
|
31
|
-
import { createBtcCoreContext } from '../../shared/context';
|
|
32
|
-
import { BtcDeposit } from './actions/deposit/BtcDeposit';
|
|
33
|
-
import type {
|
|
34
|
-
BtcDeposit as IBtcDeposit,
|
|
35
|
-
BtcDepositParams,
|
|
36
|
-
} from './actions/deposit/types';
|
|
37
|
-
import { BtcDepositAndDeploy } from './actions/depositAndDeploy/BtcDepositAndDeploy';
|
|
38
|
-
import type {
|
|
39
|
-
BtcDepositAndDeploy as IBtcDepositAndDeploy,
|
|
40
|
-
BtcDepositAndDeployParams,
|
|
41
|
-
} from './actions/depositAndDeploy/types';
|
|
42
|
-
import { BtcStake } from './actions/stake/BtcStake';
|
|
43
|
-
import type {
|
|
44
|
-
BtcStake as IBtcStake,
|
|
45
|
-
BtcStakeParams,
|
|
46
|
-
} from './actions/stake/types';
|
|
47
|
-
import { BtcStakeAndDeploy } from './actions/stakeAndDeploy/BtcStakeAndDeploy';
|
|
48
|
-
import type {
|
|
49
|
-
BtcStakeAndDeploy as IBtcStakeAndDeploy,
|
|
50
|
-
BtcStakeAndDeployParams,
|
|
51
|
-
} from './actions/stakeAndDeploy/types';
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* BTC Actions
|
|
55
|
-
*
|
|
56
|
-
* User-facing class for Bitcoin operations.
|
|
57
|
-
* Created via btcActions(config) factory function.
|
|
58
|
-
*/
|
|
59
|
-
export class BtcActions {
|
|
60
|
-
private readonly ctx: BtcCoreContext;
|
|
61
|
-
|
|
62
|
-
constructor(config: LombardConfig) {
|
|
63
|
-
this.ctx = createBtcCoreContext(config);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Stake BTC → LBTC
|
|
68
|
-
*
|
|
69
|
-
* Creates a stake operation for converting BTC to LBTC on a destination chain.
|
|
70
|
-
* Supports all destination chains: EVM, Solana, Sui, and Starknet.
|
|
71
|
-
*
|
|
72
|
-
* @param params - Stake parameters
|
|
73
|
-
* @returns BtcStake instance
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
* ```typescript
|
|
77
|
-
* const stake = btc.stake({
|
|
78
|
-
* assetOut: AssetId.LBTC,
|
|
79
|
-
* destChain: Chain.ETHEREUM,
|
|
80
|
-
* });
|
|
81
|
-
*
|
|
82
|
-
* await stake.prepare({ amount: '0.1', recipient: '0x...' });
|
|
83
|
-
* await stake.authorize();
|
|
84
|
-
* const address = await stake.generateDepositAddress();
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
stake(params: BtcStakeParams): IBtcStake {
|
|
88
|
-
return new BtcStake(this.ctx, params);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Stake and Deploy BTC → LBTC + auto-deploy ("Stake and Bake")
|
|
93
|
-
*
|
|
94
|
-
* Creates an atomic operation that:
|
|
95
|
-
* 1. Converts BTC to LBTC
|
|
96
|
-
* 2. Automatically deposits LBTC to the specified DeFi vault
|
|
97
|
-
*
|
|
98
|
-
* @param params - StakeAndDeploy parameters including protocol/vault
|
|
99
|
-
* @returns BtcStakeAndDeploy instance
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* ```typescript
|
|
103
|
-
* const action = btc.stakeAndDeploy({
|
|
104
|
-
* assetOut: AssetId.LBTC,
|
|
105
|
-
* destChain: Chain.ETHEREUM,
|
|
106
|
-
* protocol: DeployProtocol.Veda,
|
|
107
|
-
* });
|
|
108
|
-
*
|
|
109
|
-
* await action.prepare({ amount: '0.1', recipient: '0x...' });
|
|
110
|
-
* await action.authorizeDeposit();
|
|
111
|
-
* const address = await action.generateDepositAddress();
|
|
112
|
-
* ```
|
|
113
|
-
*/
|
|
114
|
-
stakeAndDeploy(params: BtcStakeAndDeployParams): IBtcStakeAndDeploy {
|
|
115
|
-
return new BtcStakeAndDeploy(this.ctx, params);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Deposit BTC for custody (BTC → BTC.b)
|
|
120
|
-
*
|
|
121
|
-
* Creates a deposit operation for custodying BTC with BTC.b minting.
|
|
122
|
-
* This is for custody without staking. For staking (BTC → LBTC), use stake().
|
|
123
|
-
*
|
|
124
|
-
* @param params - Deposit parameters
|
|
125
|
-
* @returns BtcDeposit instance
|
|
126
|
-
*
|
|
127
|
-
* @example
|
|
128
|
-
* ```typescript
|
|
129
|
-
* const deposit = btc.deposit({
|
|
130
|
-
* assetOut: AssetId.BTCb,
|
|
131
|
-
* destChain: Chain.AVALANCHE,
|
|
132
|
-
* });
|
|
133
|
-
*
|
|
134
|
-
* await deposit.prepare({ amount: '0.1', recipient: '0x...' });
|
|
135
|
-
* await deposit.authorizeFee();
|
|
136
|
-
* const address = await deposit.generateDepositAddress();
|
|
137
|
-
* ```
|
|
138
|
-
*/
|
|
139
|
-
deposit(params: BtcDepositParams): IBtcDeposit {
|
|
140
|
-
return new BtcDeposit(this.ctx, params);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Deposit and Deploy BTC → BTC.b + auto-deploy to vault
|
|
145
|
-
*
|
|
146
|
-
* Creates an atomic operation that:
|
|
147
|
-
* 1. Converts BTC to BTC.b (wrapped BTC)
|
|
148
|
-
* 2. Automatically deposits BTC.b to the specified DeFi vault (e.g., Silo on Avalanche)
|
|
149
|
-
*
|
|
150
|
-
* This is similar to stakeAndDeploy but for protocols that accept BTC.b instead of LBTC.
|
|
151
|
-
*
|
|
152
|
-
* @param params - DepositAndDeploy parameters including protocol/vault
|
|
153
|
-
* @returns BtcDepositAndDeploy instance
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* ```typescript
|
|
157
|
-
* const action = btc.depositAndDeploy({
|
|
158
|
-
* assetOut: AssetId.BTCb,
|
|
159
|
-
* destChain: Chain.AVALANCHE,
|
|
160
|
-
* protocol: DeployProtocol.Silo,
|
|
161
|
-
* });
|
|
162
|
-
*
|
|
163
|
-
* await action.prepare({ amount: '0.1', recipient: '0x...' });
|
|
164
|
-
* await action.authorizeDeposit();
|
|
165
|
-
* const address = await action.generateDepositAddress();
|
|
166
|
-
* ```
|
|
167
|
-
*/
|
|
168
|
-
depositAndDeploy(params: BtcDepositAndDeployParams): IBtcDepositAndDeploy {
|
|
169
|
-
return new BtcDepositAndDeploy(this.ctx, params);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Create BTC actions from config
|
|
175
|
-
*
|
|
176
|
-
* @internal This factory is for internal use. Use createLombardSDK() instead:
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
* ```typescript
|
|
180
|
-
* const sdk = await createLombardSDK({ env: Env.prod, providers: { ... } });
|
|
181
|
-
* const stake = sdk.chain.btc.stake({ destChain: Chain.ETHEREUM, assetOut: AssetId.LBTC });
|
|
182
|
-
* const deposit = sdk.chain.btc.deposit({ destChain: Chain.AVALANCHE, assetOut: AssetId.BTCb });
|
|
183
|
-
* const stakeAndDeploy = sdk.chain.btc.stakeAndDeploy({
|
|
184
|
-
* destChain: Chain.AVALANCHE,
|
|
185
|
-
* assetOut: AssetId.BTCb,
|
|
186
|
-
* protocol: DeployProtocol.Silo,
|
|
187
|
-
* });
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
|
-
export function btcActions(config: LombardConfig): BtcActions {
|
|
191
|
-
return new BtcActions(config);
|
|
192
|
-
}
|
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BTC Deposit Action
|
|
3
|
-
*
|
|
4
|
-
* Handles BTC deposit operations for custody without staking.
|
|
5
|
-
* Currently supports EVM destination chains.
|
|
6
|
-
*
|
|
7
|
-
* Fee authorization is ONLY required for Ethereum mainnet.
|
|
8
|
-
* Other chains use address confirmation signing.
|
|
9
|
-
*
|
|
10
|
-
* @module chains/btc/actions/deposit/BtcDeposit
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { z } from 'zod';
|
|
14
|
-
|
|
15
|
-
import type { ChainId } from '../../../../common/chains';
|
|
16
|
-
import { isValidChain } from '../../../../common/chains';
|
|
17
|
-
import { parseChainIdentifier, StepStatus } from '../../../../core';
|
|
18
|
-
import type { BtcCoreContext } from '../../../../shared/context';
|
|
19
|
-
import { LombardError, ValidationErrorCode } from '../../../../shared/errors';
|
|
20
|
-
import type { DepositEventMap } from '../../../../shared/events';
|
|
21
|
-
import type { MonitorProgress } from '../../../../shared/monitoring';
|
|
22
|
-
import { Token } from '../../../../tokens/token-addresses';
|
|
23
|
-
import {
|
|
24
|
-
assetIdToToken,
|
|
25
|
-
BaseBtcAction,
|
|
26
|
-
type StatusConfig,
|
|
27
|
-
type StepDefinition,
|
|
28
|
-
} from '../shared';
|
|
29
|
-
import {
|
|
30
|
-
depositConfig,
|
|
31
|
-
type DepositFeeAuthConfig,
|
|
32
|
-
isAssetOutSupported,
|
|
33
|
-
isDestChainSupported,
|
|
34
|
-
isRouteAvailable,
|
|
35
|
-
} from './config';
|
|
36
|
-
import {
|
|
37
|
-
BtcActionStatus,
|
|
38
|
-
type BtcDeposit as IBtcDeposit,
|
|
39
|
-
type BtcDepositParams,
|
|
40
|
-
type BtcDepositPrepareParams,
|
|
41
|
-
} from './types';
|
|
42
|
-
|
|
43
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
44
|
-
// Types
|
|
45
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
46
|
-
|
|
47
|
-
interface AuthorizationState {
|
|
48
|
-
signature?: string;
|
|
49
|
-
typedData?: string;
|
|
50
|
-
authorized: boolean;
|
|
51
|
-
/** Minting fee in BTC (e.g., "0.00000032") */
|
|
52
|
-
mintingFee?: string;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
56
|
-
// BtcDeposit Implementation
|
|
57
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* BTC Deposit Action
|
|
61
|
-
*
|
|
62
|
-
* Handles BTC deposit to custody with BTC.b minting on destination chain.
|
|
63
|
-
* This is for custody without staking. For staking (BTC → LBTC), use BtcStake.
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* const deposit = new BtcDeposit(ctx, {
|
|
68
|
-
* assetOut: AssetId.BTCb,
|
|
69
|
-
* destChain: Chain.AVALANCHE,
|
|
70
|
-
* });
|
|
71
|
-
*
|
|
72
|
-
* await deposit.prepare({ amount: '0.1', recipient: '0x...' });
|
|
73
|
-
* await deposit.authorizeFee();
|
|
74
|
-
* const address = await deposit.generateDepositAddress();
|
|
75
|
-
* ```
|
|
76
|
-
*/
|
|
77
|
-
export class BtcDeposit
|
|
78
|
-
extends BaseBtcAction<DepositEventMap, BtcActionStatus, BtcDepositParams>
|
|
79
|
-
implements IBtcDeposit
|
|
80
|
-
{
|
|
81
|
-
private readonly chainId: ChainId;
|
|
82
|
-
private readonly authState: AuthorizationState = { authorized: false };
|
|
83
|
-
|
|
84
|
-
/** Fee auth config - null if not required for this destination */
|
|
85
|
-
private feeAuthConfig: DepositFeeAuthConfig | null = null;
|
|
86
|
-
|
|
87
|
-
constructor(ctx: BtcCoreContext, params: BtcDepositParams) {
|
|
88
|
-
super(ctx, params, BtcActionStatus.IDLE);
|
|
89
|
-
|
|
90
|
-
// Validate assetOut - BTC Deposit should only produce BTC.b
|
|
91
|
-
if (!isAssetOutSupported(params.assetOut)) {
|
|
92
|
-
throw new LombardError(
|
|
93
|
-
ValidationErrorCode.INVALID_ASSET,
|
|
94
|
-
`Asset ${params.assetOut} is not supported for BTC deposits. ` +
|
|
95
|
-
`BTC Deposit produces BTC.b. For LBTC, use BtcStake instead.`,
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (!isDestChainSupported(params.destChain)) {
|
|
100
|
-
throw new LombardError(
|
|
101
|
-
ValidationErrorCode.INVALID_CHAIN,
|
|
102
|
-
`Destination chain ${params.destChain} is not supported for BTC deposits. ` +
|
|
103
|
-
`BTC.b is currently available on Avalanche and Katana.`,
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (!isRouteAvailable(params.sourceChain, ctx.env)) {
|
|
108
|
-
throw LombardError.routeNotFound({
|
|
109
|
-
assetOut: params.assetOut,
|
|
110
|
-
sourceChain: params.sourceChain,
|
|
111
|
-
destChain: params.destChain,
|
|
112
|
-
env: ctx.env,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const parsed = parseChainIdentifier(params.destChain);
|
|
117
|
-
if (typeof parsed !== 'number' || !isValidChain(parsed)) {
|
|
118
|
-
throw new LombardError(
|
|
119
|
-
ValidationErrorCode.INVALID_CHAIN,
|
|
120
|
-
`Unsupported EVM chain: ${params.destChain}`,
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
this.chainId = parsed as ChainId;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
128
|
-
// Abstract Method Implementations
|
|
129
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
130
|
-
|
|
131
|
-
protected getAddressSchema(): z.ZodType<string> {
|
|
132
|
-
return depositConfig.addressSchema;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
protected getStatusConfig(): StatusConfig<BtcActionStatus> {
|
|
136
|
-
return {
|
|
137
|
-
idle: BtcActionStatus.IDLE,
|
|
138
|
-
ready: BtcActionStatus.READY,
|
|
139
|
-
addressReady: BtcActionStatus.ADDRESS_READY,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
protected getInitialSteps(): StepDefinition {
|
|
144
|
-
return {
|
|
145
|
-
created: StepStatus.IDLE,
|
|
146
|
-
verifying: StepStatus.IDLE,
|
|
147
|
-
issuing: StepStatus.IDLE,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
protected isAuthorized(): boolean {
|
|
152
|
-
return this.authState.authorized;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
protected getChainId(): ChainId {
|
|
156
|
-
return this.chainId;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Get the minting fee for this deposit (in BTC)
|
|
161
|
-
* Available after prepare() when fee authorization is required
|
|
162
|
-
*/
|
|
163
|
-
get mintingFee(): string | undefined {
|
|
164
|
-
return this.authState.mintingFee;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
protected getDepositAddressParams() {
|
|
168
|
-
const recipient = this.ensureRecipient();
|
|
169
|
-
return {
|
|
170
|
-
address: recipient,
|
|
171
|
-
chainId: this.chainId,
|
|
172
|
-
signature: this.authState.signature!, // Must be set before calling
|
|
173
|
-
token: this.getExpectedToken(),
|
|
174
|
-
eip712Data: this.authState.typedData,
|
|
175
|
-
partnerId: this.ctx.partner.getPartnerId(),
|
|
176
|
-
referrerCode: this._referralCode,
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Override to ensure we have a signature before generating deposit address.
|
|
182
|
-
*
|
|
183
|
-
* When fee auth exists on server but signature isn't available locally,
|
|
184
|
-
* we fall back to signing the destination address.
|
|
185
|
-
*/
|
|
186
|
-
async generateDepositAddress(): Promise<string> {
|
|
187
|
-
// If signature isn't available locally, sign the destination address as fallback
|
|
188
|
-
if (!this.authState.signature) {
|
|
189
|
-
const result = await depositConfig.signDestination(
|
|
190
|
-
this.ctx,
|
|
191
|
-
this.ensureRecipient(),
|
|
192
|
-
this.chainId,
|
|
193
|
-
);
|
|
194
|
-
this.authState.signature = result.signature;
|
|
195
|
-
this.authState.typedData = result.typedData;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
return this.generateDepositAddressImpl();
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Get expected token for this action (BTCb by default for BTC Deposit)
|
|
203
|
-
*/
|
|
204
|
-
protected getExpectedToken(): string {
|
|
205
|
-
return assetIdToToken(this.params.assetOut, Token.BTCb);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
protected getAuthRequiredMessage(): string {
|
|
209
|
-
return this.feeAuthConfig
|
|
210
|
-
? 'Fee authorization required. Call authorizeFee() first.'
|
|
211
|
-
: 'Address confirmation required. Call confirmAddress() first.';
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
215
|
-
// Public Methods
|
|
216
|
-
// ─────────────────────────────────────────────────────────────────────────
|
|
217
|
-
|
|
218
|
-
async prepare(params: BtcDepositPrepareParams): Promise<void> {
|
|
219
|
-
this.assertStatus(BtcActionStatus.IDLE, 'prepare');
|
|
220
|
-
|
|
221
|
-
return this.act(async () => {
|
|
222
|
-
const validated = this.validatePrepareParams(params);
|
|
223
|
-
|
|
224
|
-
this._amount = validated.amount;
|
|
225
|
-
this._recipient = validated.recipient;
|
|
226
|
-
this._referralCode = validated.referralCode;
|
|
227
|
-
|
|
228
|
-
// Get fee auth config for this destination chain (needed for both resume and new flow)
|
|
229
|
-
this.feeAuthConfig = depositConfig.getFeeAuthConfig(
|
|
230
|
-
this.params.destChain,
|
|
231
|
-
);
|
|
232
|
-
|
|
233
|
-
// Check for existing deposit address (resume flow)
|
|
234
|
-
const hasExistingDeposit = await this.resumeFromExistingDeposit(
|
|
235
|
-
validated.recipient,
|
|
236
|
-
);
|
|
237
|
-
|
|
238
|
-
if (hasExistingDeposit) {
|
|
239
|
-
// We have a deposit address, but we still need to validate fee authorization
|
|
240
|
-
// The deposit address might have been created when fee auth was valid,
|
|
241
|
-
// but the fee auth could have expired since then
|
|
242
|
-
if (this.feeAuthConfig) {
|
|
243
|
-
const stored = await this.feeAuthConfig.restoreFeeSignature(
|
|
244
|
-
this.ctx,
|
|
245
|
-
this.chainId,
|
|
246
|
-
validated.recipient,
|
|
247
|
-
);
|
|
248
|
-
|
|
249
|
-
// Check hasSignature flag - the actual signature string may not be returned by API
|
|
250
|
-
if (!stored?.hasSignature) {
|
|
251
|
-
// Fee auth is required but expired/missing - need re-authorization
|
|
252
|
-
// Fetch the minting fee for display purposes
|
|
253
|
-
this.authState.mintingFee = await this.feeAuthConfig.getMintingFee(
|
|
254
|
-
this.ctx,
|
|
255
|
-
this.chainId,
|
|
256
|
-
);
|
|
257
|
-
this.updateStatus(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
|
|
258
|
-
this.emitInitialProgress();
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// Fee auth is still valid on server - store signature if available
|
|
263
|
-
if (stored.signature) {
|
|
264
|
-
this.authState.signature = stored.signature;
|
|
265
|
-
this.authState.typedData = stored.typedData;
|
|
266
|
-
}
|
|
267
|
-
this.authState.authorized = true;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// Deposit address exists and fee auth is valid (or not required)
|
|
271
|
-
// Now we can safely set the status to ADDRESS_READY
|
|
272
|
-
this.updateStatus(BtcActionStatus.ADDRESS_READY);
|
|
273
|
-
this.emitInitialProgress();
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// No existing deposit - proceed with normal flow
|
|
278
|
-
if (this.feeAuthConfig) {
|
|
279
|
-
// Fee authorization required (Ethereum mainnet only)
|
|
280
|
-
const stored = await this.feeAuthConfig.restoreFeeSignature(
|
|
281
|
-
this.ctx,
|
|
282
|
-
this.chainId,
|
|
283
|
-
validated.recipient,
|
|
284
|
-
);
|
|
285
|
-
|
|
286
|
-
// Check hasSignature flag - the actual signature string may not be returned by API
|
|
287
|
-
if (stored?.hasSignature) {
|
|
288
|
-
// Fee auth already exists on server - store signature if available
|
|
289
|
-
if (stored.signature) {
|
|
290
|
-
this.authState.signature = stored.signature;
|
|
291
|
-
this.authState.typedData = stored.typedData;
|
|
292
|
-
}
|
|
293
|
-
this.authState.authorized = true;
|
|
294
|
-
this.updateStatus(BtcActionStatus.READY);
|
|
295
|
-
this.emitInitialProgress();
|
|
296
|
-
return;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
// Fetch the minting fee for display purposes
|
|
300
|
-
this.authState.mintingFee = await this.feeAuthConfig.getMintingFee(
|
|
301
|
-
this.ctx,
|
|
302
|
-
this.chainId,
|
|
303
|
-
);
|
|
304
|
-
this.updateStatus(BtcActionStatus.NEEDS_FEE_AUTHORIZATION);
|
|
305
|
-
} else {
|
|
306
|
-
this.updateStatus(BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
this.emitInitialProgress();
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
async authorizeFee(): Promise<void> {
|
|
314
|
-
this.assertStatus(
|
|
315
|
-
[BtcActionStatus.NEEDS_FEE_AUTHORIZATION, BtcActionStatus.READY],
|
|
316
|
-
'authorizeFee',
|
|
317
|
-
);
|
|
318
|
-
|
|
319
|
-
if (this.status === BtcActionStatus.READY) return;
|
|
320
|
-
|
|
321
|
-
if (!this.feeAuthConfig) {
|
|
322
|
-
throw new LombardError(
|
|
323
|
-
ValidationErrorCode.INVALID_PARAMETER,
|
|
324
|
-
'Fee authorization is not required for this destination chain. Use confirmAddress() instead.',
|
|
325
|
-
);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
const recipient = this.ensureRecipient();
|
|
329
|
-
|
|
330
|
-
// Use the minting fee that was fetched during prepare(), not the deposit amount
|
|
331
|
-
if (!this.authState.mintingFee) {
|
|
332
|
-
throw new LombardError(
|
|
333
|
-
ValidationErrorCode.INVALID_STATE,
|
|
334
|
-
'Minting fee not available. Call prepare() first.',
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
return this.act(async () => {
|
|
339
|
-
const result = await this.feeAuthConfig!.authorizeFee(this.ctx, {
|
|
340
|
-
chainId: this.chainId,
|
|
341
|
-
recipient,
|
|
342
|
-
fee: this.authState.mintingFee!,
|
|
343
|
-
});
|
|
344
|
-
|
|
345
|
-
this.authState.signature = result.signature;
|
|
346
|
-
this.authState.typedData = result.typedData;
|
|
347
|
-
this.authState.authorized = true;
|
|
348
|
-
}, BtcActionStatus.READY);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
async confirmAddress(): Promise<void> {
|
|
352
|
-
this.assertStatus(
|
|
353
|
-
[BtcActionStatus.NEEDS_ADDRESS_CONFIRMATION, BtcActionStatus.READY],
|
|
354
|
-
'confirmAddress',
|
|
355
|
-
);
|
|
356
|
-
|
|
357
|
-
if (this.status === BtcActionStatus.READY) return;
|
|
358
|
-
|
|
359
|
-
if (this.feeAuthConfig) {
|
|
360
|
-
throw new LombardError(
|
|
361
|
-
ValidationErrorCode.INVALID_PARAMETER,
|
|
362
|
-
'This destination chain requires fee authorization. Use authorizeFee() instead.',
|
|
363
|
-
);
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
const recipient = this.ensureRecipient();
|
|
367
|
-
|
|
368
|
-
return this.act(async () => {
|
|
369
|
-
const result = await depositConfig.signDestination(
|
|
370
|
-
this.ctx,
|
|
371
|
-
recipient,
|
|
372
|
-
this.chainId,
|
|
373
|
-
);
|
|
374
|
-
|
|
375
|
-
this.authState.signature = result.signature;
|
|
376
|
-
this.authState.typedData = result.typedData;
|
|
377
|
-
this.authState.authorized = true;
|
|
378
|
-
}, BtcActionStatus.READY);
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
async execute(): Promise<{ depositAddress: string; txHash?: string }> {
|
|
382
|
-
return this.executeImpl();
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
async monitorDeposit(): Promise<MonitorProgress | undefined> {
|
|
386
|
-
return super.monitorDeposit();
|
|
387
|
-
}
|
|
388
|
-
}
|