@lombard.finance/sdk 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/index2.cjs +6 -6
- package/dist/index2.js +762 -754
- package/package.json +7 -8
- package/src/__tests__/AssetNamespace.spec.ts +0 -234
- package/src/__tests__/helpers/createTestConfig.ts +0 -90
- package/src/__tests__/integration/automint-fee.integration.test.ts +0 -74
- package/src/__tests__/integration/btc-deposit.integration.test.ts +0 -109
- package/src/__tests__/integration/btc-stake-and-deploy.integration.test.ts +0 -96
- package/src/__tests__/integration/btc-stake.integration.test.ts +0 -466
- package/src/__tests__/integration/evm-actions.integration.test.ts +0 -932
- package/src/__tests__/integration/evm-deploy.integration.test.ts +0 -122
- package/src/__tests__/integration/evm-redeem.integration.test.ts +0 -157
- package/src/__tests__/integration/faq-patterns.integration.test.ts +0 -465
- package/src/__tests__/integration/getLBTCMintingFee.integration.test.ts +0 -195
- package/src/__tests__/real-wallet/btc/btc-stake.real.test.ts +0 -70
- package/src/__tests__/real-wallet/evm/evm-stake.real.test.ts +0 -47
- package/src/__tests__/real-wallet/evm/evm-unstake.real.test.ts +0 -49
- package/src/__tests__/real-wallet/non-evm/solana-unstake.real.test.ts +0 -19
- package/src/__tests__/real-wallet/non-evm/starknet-unstake.real.test.ts +0 -19
- package/src/__tests__/real-wallet/non-evm/sui-unstake.real.test.ts +0 -19
- package/src/__tests__/services/ApiService.test.ts +0 -62
- package/src/__tests__/services/BtcService.test.ts +0 -30
- package/src/__tests__/services/EvmService.test.ts +0 -39
- package/src/__tests__/setup.ts +0 -16
- package/src/__tests__/test-utils/eip1193-adapter.ts +0 -48
- package/src/__tests__/test-utils/evm-wallet.ts +0 -38
- package/src/__tests__/test-utils/solana-wallet.ts +0 -22
- package/src/__tests__/test-utils/starknet-wallet.ts +0 -9
- package/src/__tests__/test-utils/sui-wallet.ts +0 -14
- package/src/__tests__/test-utils/test-constraints.ts +0 -110
- package/src/__tests__/unit/btc/BtcDeposit.test.ts +0 -253
- package/src/__tests__/unit/btc/BtcDepositAndDeploy.test.ts +0 -174
- package/src/__tests__/unit/btc/BtcDepositConfig.test.ts +0 -143
- package/src/__tests__/unit/btc/BtcDepositStatusTransition.test.ts +0 -221
- package/src/__tests__/unit/btc/BtcStakeAndDeploy.test.ts +0 -194
- package/src/__tests__/unit/btc/ExistingSignatureHandling.test.ts +0 -301
- package/src/__tests__/unit/btc/StakeAndBakeRatioConversion.test.ts +0 -200
- package/src/__tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts +0 -216
- package/src/__tests__/unit/btc/TokenParameterConsistency.test.ts +0 -184
- package/src/__tests__/unit/btc/btc-deposit-token.test.ts +0 -191
- package/src/__tests__/unit/catalog/AssetCatalog.test.ts +0 -293
- package/src/__tests__/unit/config/ChainConfig.test.ts +0 -47
- package/src/__tests__/unit/config/FeeAuthConfig.test.ts +0 -76
- package/src/__tests__/unit/contract-functions/getLBTCMintingFee.test.ts +0 -128
- package/src/__tests__/unit/core/chain-parsing.test.ts +0 -257
- package/src/__tests__/unit/defi/AvailableProtocols.test.ts +0 -100
- package/src/__tests__/unit/defi/DefiRegistry.test.ts +0 -25
- package/src/__tests__/unit/evm/EvmDeploy.test.ts +0 -224
- package/src/__tests__/unit/evm/EvmRedeem.test.ts +0 -207
- package/src/__tests__/unit/evm/EvmRedeemFeeAuth.test.ts +0 -93
- package/src/__tests__/unit/evm/EvmStake.test.ts +0 -207
- package/src/__tests__/unit/evm/EvmStakeFeeAuth.test.ts +0 -193
- package/src/__tests__/unit/evm/EvmUnstakeAllowance.test.ts +0 -69
- package/src/__tests__/unit/evm/EvmUnstakeConfig.test.ts +0 -203
- package/src/__tests__/unit/fee-signature-expiration.test.ts +0 -76
- package/src/__tests__/unit/modules/CapabilityRegistry.test.ts +0 -55
- package/src/__tests__/unit/shared/BaseAction.test.ts +0 -122
- package/src/__tests__/unit/shared/BaseBtcAction.test.ts +0 -114
- package/src/__tests__/unit/solana/SolanaUnstake.test.ts +0 -314
- package/src/__tests__/unit/starknet/StarknetUnstake.test.ts +0 -318
- package/src/__tests__/unit/sui/SuiUnstake.test.ts +0 -310
- package/src/__tests__/unit/utils/satoshi.test.ts +0 -27
- package/src/__tests__/unit/validation/address-validation.test.ts +0 -350
- package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.tsx +0 -71
- package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts +0 -235
- package/src/api-functions/generateDepositBtcAddress/index.ts +0 -1
- package/src/api-functions/get-badges-by-address/get-badges-by-address.ts +0 -13
- package/src/api-functions/get-badges-by-address/index.ts +0 -1
- package/src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts +0 -38
- package/src/api-functions/getDepositAddressReferrer/index.ts +0 -1
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.tsx +0 -59
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.ts +0 -265
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts +0 -167
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.tsx +0 -58
- package/src/api-functions/getDepositBtcAddress/index.ts +0 -1
- package/src/api-functions/getDepositBtcAddress/make-request.ts +0 -59
- package/src/api-functions/getDepositBtcAddress/types.ts +0 -106
- package/src/api-functions/getDepositsByAddress/getDepositsByAddress.stories.tsx +0 -51
- package/src/api-functions/getDepositsByAddress/getDepositsByAddress.ts +0 -502
- package/src/api-functions/getDepositsByAddress/index.ts +0 -1
- package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.tsx +0 -48
- package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.ts +0 -59
- package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.tsx +0 -55
- package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.ts +0 -75
- package/src/api-functions/getLBTCExchangeRate/index.ts +0 -2
- package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.tsx +0 -59
- package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts +0 -116
- package/src/api-functions/getNetworkFeeSignature/index.ts +0 -1
- package/src/api-functions/getPointsByAddress/getPointsByAddress.stories.tsx +0 -51
- package/src/api-functions/getPointsByAddress/getPointsByAddress.ts +0 -304
- package/src/api-functions/getPointsByAddress/index.ts +0 -1
- package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.tsx +0 -51
- package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts +0 -368
- package/src/api-functions/getUnstakesByAddress/index.ts +0 -1
- package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.tsx +0 -70
- package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts +0 -91
- package/src/api-functions/getUserStakeAndBakeSignature/index.ts +0 -1
- package/src/api-functions/index.ts +0 -11
- package/src/api-functions/setReferral/index.ts +0 -1
- package/src/api-functions/setReferral/setReferral.ts +0 -67
- package/src/api-functions/storeNetworkFeeSignature/index.ts +0 -1
- package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.tsx +0 -57
- package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.ts +0 -75
- package/src/api-functions/storeStakeAndBakeSignature/index.ts +0 -1
- package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.tsx +0 -57
- package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +0 -61
- package/src/bridge/abi/CCIP_BRIDGE_ADAPTER_ABI.json +0 -704
- package/src/bridge/abi/CCIP_ROUTER_ABI.json +0 -702
- package/src/bridge/abi/OFT_BRIDGE_ADAPTER_ABI.json +0 -912
- package/src/bridge/index.ts +0 -16
- package/src/bridge/lib/bridge.stories.tsx +0 -90
- package/src/bridge/lib/bridge.ts +0 -115
- package/src/bridge/lib/ccip-bridge.stories.tsx +0 -91
- package/src/bridge/lib/ccip-bridge.ts +0 -214
- package/src/bridge/lib/ccip-config.ts +0 -54
- package/src/bridge/lib/config.ts +0 -384
- package/src/bridge/lib/oft-bridge.stories.tsx +0 -90
- package/src/bridge/lib/oft-bridge.ts +0 -217
- package/src/chains/btc/BtcActions.ts +0 -192
- package/src/chains/btc/actions/deposit/BtcDeposit.ts +0 -388
- package/src/chains/btc/actions/deposit/config/evm.ts +0 -197
- package/src/chains/btc/actions/deposit/config/index.ts +0 -53
- package/src/chains/btc/actions/deposit/config/types.ts +0 -108
- package/src/chains/btc/actions/deposit/factory.ts +0 -53
- package/src/chains/btc/actions/deposit/index.ts +0 -23
- package/src/chains/btc/actions/deposit/types.ts +0 -120
- package/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts +0 -366
- package/src/chains/btc/actions/depositAndDeploy/config/evm.ts +0 -105
- package/src/chains/btc/actions/depositAndDeploy/config/index.ts +0 -111
- package/src/chains/btc/actions/depositAndDeploy/config/types.ts +0 -67
- package/src/chains/btc/actions/depositAndDeploy/factory.ts +0 -38
- package/src/chains/btc/actions/depositAndDeploy/index.ts +0 -24
- package/src/chains/btc/actions/depositAndDeploy/types.ts +0 -120
- package/src/chains/btc/actions/index.ts +0 -14
- package/src/chains/btc/actions/shared/BaseBtcAction.ts +0 -495
- package/src/chains/btc/actions/shared/index.ts +0 -28
- package/src/chains/btc/actions/shared/tokenUtils.ts +0 -68
- package/src/chains/btc/actions/shared/validation.ts +0 -180
- package/src/chains/btc/actions/stake/BtcStake.ts +0 -433
- package/src/chains/btc/actions/stake/__tests__/BtcStake.test.ts +0 -247
- package/src/chains/btc/actions/stake/config/evm.ts +0 -183
- package/src/chains/btc/actions/stake/config/index.ts +0 -122
- package/src/chains/btc/actions/stake/config/solana.ts +0 -96
- package/src/chains/btc/actions/stake/config/starknet.ts +0 -66
- package/src/chains/btc/actions/stake/config/sui.ts +0 -61
- package/src/chains/btc/actions/stake/config/types.ts +0 -165
- package/src/chains/btc/actions/stake/factory.ts +0 -53
- package/src/chains/btc/actions/stake/index.ts +0 -22
- package/src/chains/btc/actions/stake/types.ts +0 -175
- package/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts +0 -415
- package/src/chains/btc/actions/stakeAndDeploy/config/evm.ts +0 -135
- package/src/chains/btc/actions/stakeAndDeploy/config/index.ts +0 -119
- package/src/chains/btc/actions/stakeAndDeploy/config/types.ts +0 -93
- package/src/chains/btc/actions/stakeAndDeploy/factory.ts +0 -54
- package/src/chains/btc/actions/stakeAndDeploy/index.ts +0 -26
- package/src/chains/btc/actions/stakeAndDeploy/types.ts +0 -118
- package/src/chains/btc/client/getCurrentBlockHeight.ts +0 -28
- package/src/chains/btc/client/mempool/error.ts +0 -24
- package/src/chains/btc/client/mempool/mempool.ts +0 -23
- package/src/chains/btc/index.ts +0 -71
- package/src/chains/evm/EvmActions.ts +0 -185
- package/src/chains/evm/actions/deploy/EvmDeploy.ts +0 -256
- package/src/chains/evm/actions/deploy/config/evm.ts +0 -80
- package/src/chains/evm/actions/deploy/config/index.ts +0 -8
- package/src/chains/evm/actions/deploy/config/types.ts +0 -43
- package/src/chains/evm/actions/deploy/factory.ts +0 -44
- package/src/chains/evm/actions/deploy/index.ts +0 -17
- package/src/chains/evm/actions/deploy/types.ts +0 -74
- package/src/chains/evm/actions/deposit/EvmDeposit.ts +0 -159
- package/src/chains/evm/actions/deposit/config/evm.ts +0 -100
- package/src/chains/evm/actions/deposit/config/index.ts +0 -8
- package/src/chains/evm/actions/deposit/config/types.ts +0 -39
- package/src/chains/evm/actions/deposit/factory.ts +0 -44
- package/src/chains/evm/actions/deposit/index.ts +0 -17
- package/src/chains/evm/actions/deposit/types.ts +0 -87
- package/src/chains/evm/actions/index.ts +0 -67
- package/src/chains/evm/actions/redeem/EvmRedeem.ts +0 -263
- package/src/chains/evm/actions/redeem/config/evm.ts +0 -85
- package/src/chains/evm/actions/redeem/config/index.ts +0 -8
- package/src/chains/evm/actions/redeem/config/types.ts +0 -39
- package/src/chains/evm/actions/redeem/factory.ts +0 -43
- package/src/chains/evm/actions/redeem/index.ts +0 -17
- package/src/chains/evm/actions/redeem/types.ts +0 -93
- package/src/chains/evm/actions/stake/EvmStake.ts +0 -339
- package/src/chains/evm/actions/stake/config/evm.ts +0 -89
- package/src/chains/evm/actions/stake/config/index.ts +0 -8
- package/src/chains/evm/actions/stake/config/types.ts +0 -89
- package/src/chains/evm/actions/stake/factory.ts +0 -52
- package/src/chains/evm/actions/stake/index.ts +0 -30
- package/src/chains/evm/actions/stake/types.ts +0 -104
- package/src/chains/evm/actions/unstake/EvmUnstake.ts +0 -258
- package/src/chains/evm/actions/unstake/config/evm.ts +0 -123
- package/src/chains/evm/actions/unstake/config/index.ts +0 -13
- package/src/chains/evm/actions/unstake/config/types.ts +0 -37
- package/src/chains/evm/actions/unstake/factory.ts +0 -44
- package/src/chains/evm/actions/unstake/index.ts +0 -22
- package/src/chains/evm/actions/unstake/types.ts +0 -87
- package/src/chains/evm/index.ts +0 -16
- package/src/chains/evm/shared/feeAuth.ts +0 -198
- package/src/chains/evm/shared/index.ts +0 -7
- package/src/chains/solana/SolanaActions.ts +0 -85
- package/src/chains/solana/actions/index.ts +0 -7
- package/src/chains/solana/actions/unstake/SolanaUnstake.ts +0 -151
- package/src/chains/solana/actions/unstake/config/btc.ts +0 -47
- package/src/chains/solana/actions/unstake/config/index.ts +0 -8
- package/src/chains/solana/actions/unstake/config/solana.ts +0 -47
- package/src/chains/solana/actions/unstake/config/types.ts +0 -35
- package/src/chains/solana/actions/unstake/factory.ts +0 -34
- package/src/chains/solana/actions/unstake/index.ts +0 -14
- package/src/chains/solana/actions/unstake/types.ts +0 -58
- package/src/chains/solana/index.ts +0 -8
- package/src/chains/starknet/StarknetActions.ts +0 -85
- package/src/chains/starknet/actions/index.ts +0 -7
- package/src/chains/starknet/actions/unstake/StarknetUnstake.ts +0 -128
- package/src/chains/starknet/actions/unstake/config/btc.ts +0 -43
- package/src/chains/starknet/actions/unstake/config/index.ts +0 -8
- package/src/chains/starknet/actions/unstake/config/starknet.ts +0 -43
- package/src/chains/starknet/actions/unstake/config/types.ts +0 -27
- package/src/chains/starknet/actions/unstake/factory.ts +0 -32
- package/src/chains/starknet/actions/unstake/index.ts +0 -14
- package/src/chains/starknet/actions/unstake/types.ts +0 -57
- package/src/chains/starknet/index.ts +0 -8
- package/src/chains/sui/SuiActions.ts +0 -82
- package/src/chains/sui/actions/index.ts +0 -7
- package/src/chains/sui/actions/unstake/SuiUnstake.ts +0 -146
- package/src/chains/sui/actions/unstake/config/btc.ts +0 -43
- package/src/chains/sui/actions/unstake/config/index.ts +0 -8
- package/src/chains/sui/actions/unstake/config/sui.ts +0 -43
- package/src/chains/sui/actions/unstake/config/types.ts +0 -27
- package/src/chains/sui/actions/unstake/factory.ts +0 -32
- package/src/chains/sui/actions/unstake/index.ts +0 -14
- package/src/chains/sui/actions/unstake/types.ts +0 -57
- package/src/chains/sui/index.ts +0 -8
- package/src/client/ApiNamespace.ts +0 -302
- package/src/client/AssetNamespace.ts +0 -112
- package/src/client/LombardSDK.ts +0 -212
- package/src/client/PartnerConfiguration.ts +0 -50
- package/src/client/createConfig.ts +0 -90
- package/src/client/createLombardSDK.ts +0 -130
- package/src/clients/evm-signer-adapter.ts +0 -313
- package/src/clients/public-client.ts +0 -49
- package/src/clients/rpc-url-config.ts +0 -64
- package/src/clients/wallet-client.ts +0 -34
- package/src/common/api-config.ts +0 -48
- package/src/common/blockchain-identifier.ts +0 -217
- package/src/common/chains.stories.tsx +0 -68
- package/src/common/chains.ts +0 -449
- package/src/common/constants.ts +0 -1
- package/src/common/contract-info.ts +0 -9
- package/src/common/feature-config.ts +0 -79
- package/src/common/fee-requirements.ts +0 -34
- package/src/common/parameters.ts +0 -89
- package/src/config/defaults.ts +0 -49
- package/src/config/index.ts +0 -12
- package/src/config/providers.ts +0 -81
- package/src/config/types.ts +0 -216
- package/src/config/validation.ts +0 -69
- package/src/contract-functions/approveLBTC/approveLBTC.stories.tsx +0 -79
- package/src/contract-functions/approveLBTC/approveLBTC.ts +0 -66
- package/src/contract-functions/approveLBTC/index.ts +0 -1
- package/src/contract-functions/approveToken/approveToken.ts +0 -126
- package/src/contract-functions/approveToken/index.ts +0 -1
- package/src/contract-functions/claimLBTC/claimLBTC.stories.tsx +0 -82
- package/src/contract-functions/claimLBTC/claimLBTC.ts +0 -159
- package/src/contract-functions/claimLBTC/index.ts +0 -1
- package/src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts +0 -95
- package/src/contract-functions/claimUnstakeRedeem/index.ts +0 -1
- package/src/contract-functions/deposit/depositToken.stories.tsx +0 -83
- package/src/contract-functions/deposit/depositToken.ts +0 -214
- package/src/contract-functions/deposit/index.ts +0 -1
- package/src/contract-functions/getBasculeDepositStatus/decodeBasculeDepositStatus.ts +0 -170
- package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +0 -62
- package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.ts +0 -211
- package/src/contract-functions/getBasculeDepositStatus/index.ts +0 -2
- package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.tsx +0 -61
- package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.ts +0 -193
- package/src/contract-functions/getLBTCMintingFee/index.ts +0 -1
- package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.tsx +0 -51
- package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts +0 -40
- package/src/contract-functions/getLBTCTotalSupply/index.ts +0 -1
- package/src/contract-functions/getPermitNonce/getPermitNonce.stories.tsx +0 -56
- package/src/contract-functions/getPermitNonce/getPermitNonce.ts +0 -50
- package/src/contract-functions/getPermitNonce/index.ts +0 -1
- package/src/contract-functions/getShareValue/getShareValue.stories.tsx +0 -58
- package/src/contract-functions/getShareValue/getShareValue.ts +0 -59
- package/src/contract-functions/getShareValue/index.ts +0 -1
- package/src/contract-functions/getSharesByAddress/getSharesByAddress.stories.tsx +0 -65
- package/src/contract-functions/getSharesByAddress/getSharesByAddress.ts +0 -86
- package/src/contract-functions/getSharesByAddress/index.ts +0 -4
- package/src/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.ts +0 -167
- package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.tsx +0 -180
- package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.tsx +0 -101
- package/src/contract-functions/getStakeAndBakeFee/index.ts +0 -1
- package/src/contract-functions/index.ts +0 -21
- package/src/contract-functions/signLbtcDestionationAddr/index.ts +0 -1
- package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.ts +0 -32
- package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.tsx +0 -64
- package/src/contract-functions/signNetworkFee/getTypedData.ts +0 -41
- package/src/contract-functions/signNetworkFee/index.ts +0 -1
- package/src/contract-functions/signNetworkFee/signNetworkFee.stories.tsx +0 -94
- package/src/contract-functions/signNetworkFee/signNetworkFee.ts +0 -106
- package/src/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.ts +0 -888
- package/src/contract-functions/signStakeAndBake/handleApprove.ts +0 -81
- package/src/contract-functions/signStakeAndBake/handlePermit.ts +0 -28
- package/src/contract-functions/signStakeAndBake/index.ts +0 -2
- package/src/contract-functions/signStakeAndBake/signStakeAndBake.stories.tsx +0 -202
- package/src/contract-functions/signStakeAndBake/signStakeAndBake.ts +0 -160
- package/src/contract-functions/signStakeAndBake/typed-data-builder.ts +0 -137
- package/src/contract-functions/signStakeAndBake/utils.ts +0 -61
- package/src/contract-functions/signStakeAndBake/validation.ts +0 -124
- package/src/contract-functions/unstakeLBTC/index.ts +0 -1
- package/src/contract-functions/unstakeLBTC/unstakeLBTC.stories.tsx +0 -92
- package/src/contract-functions/unstakeLBTC/unstakeLBTC.ts +0 -396
- package/src/contracts/abis/index.ts +0 -29
- package/src/contracts/index.ts +0 -63
- package/src/contracts/types.ts +0 -143
- package/src/contracts/utils.ts +0 -288
- package/src/core/assets/catalog.ts +0 -343
- package/src/core/assets/index.ts +0 -40
- package/src/core/assets/types.ts +0 -142
- package/src/core/assets/utils.ts +0 -287
- package/src/core/chains/catalog.ts +0 -396
- package/src/core/chains/index.ts +0 -39
- package/src/core/chains/types.ts +0 -193
- package/src/core/chains/utils.ts +0 -245
- package/src/core/index.ts +0 -72
- package/src/core/types.ts +0 -126
- package/src/debug-api/btc-script-to-address.ts +0 -20
- package/src/debug-api/btc-tx-info.ts +0 -32
- package/src/debug-api/evm-by-btc-address.ts +0 -26
- package/src/debug-api/index.ts +0 -3
- package/src/defi/README.md +0 -517
- package/src/defi/defi-registry.stories.tsx +0 -527
- package/src/defi/defi-registry.ts +0 -295
- package/src/defi/index.ts +0 -17
- package/src/index.ts +0 -336
- package/src/metrics/get-additional-rewards.ts +0 -69
- package/src/metrics/get-lbtc-apy.ts +0 -74
- package/src/metrics/get-lbtc-stats.stories.tsx +0 -57
- package/src/metrics/get-lbtc-stats.ts +0 -59
- package/src/metrics/get-positions-summary.stories.tsx +0 -58
- package/src/metrics/get-positions-summary.ts +0 -132
- package/src/modules/CapabilityRegistry.ts +0 -125
- package/src/modules/apiModule.ts +0 -51
- package/src/modules/btcModule.ts +0 -43
- package/src/modules/evmModule.ts +0 -48
- package/src/modules/index.ts +0 -60
- package/src/referrals/ReferralsClient.ts +0 -34
- package/src/referrals/index.ts +0 -1
- package/src/services/ApiService.ts +0 -152
- package/src/services/BtcService.ts +0 -29
- package/src/services/EvmService.ts +0 -127
- package/src/services/index.ts +0 -43
- package/src/shared/__tests__/errors.test.ts +0 -185
- package/src/shared/__tests__/events.test.ts +0 -120
- package/src/shared/__tests__/types.test.ts +0 -155
- package/src/shared/actions/BaseAction.ts +0 -497
- package/src/shared/actions/__tests__/BaseAction.test.ts +0 -292
- package/src/shared/actions/index.ts +0 -9
- package/src/shared/constants/statusConstants.ts +0 -108
- package/src/shared/context/ContextBuilder.ts +0 -149
- package/src/shared/context/index.ts +0 -8
- package/src/shared/context/types.ts +0 -156
- package/src/shared/deposits/depositStatus.ts +0 -402
- package/src/shared/deposits/index.ts +0 -29
- package/src/shared/errors.ts +0 -405
- package/src/shared/events.ts +0 -260
- package/src/shared/evm/switchChain.ts +0 -109
- package/src/shared/index.ts +0 -54
- package/src/shared/monitoring/__tests__/createEventEmitter.test.ts +0 -150
- package/src/shared/monitoring/createEventEmitter.ts +0 -160
- package/src/shared/monitoring/createProgressEmitter.ts +0 -46
- package/src/shared/monitoring/depositMonitor.ts +0 -211
- package/src/shared/monitoring/index.ts +0 -25
- package/src/shared/validation/index.ts +0 -411
- package/src/stories/arg-types.ts +0 -38
- package/src/stories/components/Badge.tsx +0 -27
- package/src/stories/components/Button/Button.css +0 -10
- package/src/stories/components/Button/Button.tsx +0 -52
- package/src/stories/components/Button/index.ts +0 -1
- package/src/stories/components/Card.tsx +0 -18
- package/src/stories/components/CodeBlock/CodeBlock.tsx +0 -27
- package/src/stories/components/CodeBlock/CodeBlockStyles.css +0 -3
- package/src/stories/components/CodeBlock/index.ts +0 -1
- package/src/stories/components/ConnectButton/connect-button.tsx +0 -248
- package/src/stories/components/ConnectButton/index.ts +0 -1
- package/src/stories/components/JsonPreview.tsx +0 -84
- package/src/stories/components/Spinner/Spinner.tsx +0 -27
- package/src/stories/components/Spinner/index.ts +0 -1
- package/src/stories/components/StatsCard.tsx +0 -30
- package/src/stories/components/StatusIndicator.tsx +0 -37
- package/src/stories/components/TreeNode.tsx +0 -47
- package/src/stories/components/decorators/function-type.tsx +0 -63
- package/src/stories/components/decorators/index.ts +0 -2
- package/src/stories/components/decorators/wagmi-decorator.tsx +0 -92
- package/src/stories/components/error-block.tsx +0 -21
- package/src/stories/components/index.ts +0 -11
- package/src/stories/constants.ts +0 -3
- package/src/stories/hooks/useConnection.ts +0 -63
- package/src/stories/hooks/useQuery.ts +0 -57
- package/src/tokens/__tests__/token-addresses.test.ts +0 -551
- package/src/tokens/abi/ASSET_ROUTER_ABI.ts +0 -1966
- package/src/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.ts +0 -1405
- package/src/tokens/abi/BTCK_ABI.ts +0 -1092
- package/src/tokens/abi/KATANA_BASCULE_ABI.ts +0 -653
- package/src/tokens/abi/LBTC_ABI.json +0 -1761
- package/src/tokens/abi/LBTC_ABI.ts +0 -1761
- package/src/tokens/abi/LBTC_BASCULE_ABI.json +0 -850
- package/src/tokens/abi/NATIVE_LBTC_ABI.ts +0 -1147
- package/src/tokens/abi/STLBTC_ABI.ts +0 -1062
- package/src/tokens/cross-chain-addresses.stories.tsx +0 -236
- package/src/tokens/denomination-utils.stories.tsx +0 -176
- package/src/tokens/getLbtcContractAddresses.stories.tsx +0 -158
- package/src/tokens/getTokenByAddress.stories.tsx +0 -172
- package/src/tokens/getTokenContractInfo.stories.tsx +0 -148
- package/src/tokens/getTokenInfo.stories.tsx +0 -133
- package/src/tokens/isUpgradedContract.stories.tsx +0 -124
- package/src/tokens/lbtc-addresses.ts +0 -18
- package/src/tokens/token-addresses.ts +0 -477
- package/src/tokens/tokens.ts +0 -249
- package/src/tokens/types.ts +0 -80
- package/src/utils/array.ts +0 -31
- package/src/utils/block.ts +0 -23
- package/src/utils/chain.ts +0 -152
- package/src/utils/consoleLogger.ts +0 -140
- package/src/utils/ensureNotSanctionedAddress.ts +0 -11
- package/src/utils/env.ts +0 -20
- package/src/utils/err.ts +0 -83
- package/src/utils/evmAccount.ts +0 -47
- package/src/utils/gas.ts +0 -36
- package/src/utils/hex.ts +0 -9
- package/src/utils/http.ts +0 -224
- package/src/utils/numbers.ts +0 -37
- package/src/utils/pagination.ts +0 -70
- package/src/utils/satoshi.ts +0 -41
- package/src/utils/time.ts +0 -12
- package/src/utils/transaction-executor.ts +0 -299
- package/src/vaults/abi/SILO_VAULT_SPENDER_ABI.json +0 -793
- package/src/vaults/abi/VEDA_VAULT_ABI.json +0 -452
- package/src/vaults/abi/VEDA_VAULT_ACCOUNTANT_ABI.json +0 -591
- package/src/vaults/abi/VEDA_VAULT_BASE_ASSET_ABI.json +0 -296
- package/src/vaults/abi/VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI.json +0 -502
- package/src/vaults/abi/VEDA_VAULT_LENS_ABI.json +0 -175
- package/src/vaults/abi/VEDA_VAULT_SPENDER_ABI.json +0 -408
- package/src/vaults/abi/VEDA_VAULT_TELLER_ABI.json +0 -700
- package/src/vaults/abi/index.ts +0 -4
- package/src/vaults/index.ts +0 -46
- package/src/vaults/lib/config.ts +0 -184
- package/src/vaults/lib/metrics/get-vault-apy.stories.tsx +0 -58
- package/src/vaults/lib/metrics/get-vault-apy.ts +0 -176
- package/src/vaults/lib/metrics/get-vault-points.stories.tsx +0 -60
- package/src/vaults/lib/metrics/get-vault-points.ts +0 -74
- package/src/vaults/lib/metrics/get-vault-tvl.stories.tsx +0 -58
- package/src/vaults/lib/metrics/get-vault-tvl.ts +0 -121
- package/src/vaults/lib/ops/cancel-withdraw.stories.tsx +0 -80
- package/src/vaults/lib/ops/deposit.stories.tsx +0 -82
- package/src/vaults/lib/ops/deposit.ts +0 -152
- package/src/vaults/lib/ops/get-vault-deposits.stories.tsx +0 -65
- package/src/vaults/lib/ops/get-vault-deposits.ts +0 -209
- package/src/vaults/lib/ops/get-vault-withdrawals.stories.tsx +0 -67
- package/src/vaults/lib/ops/get-vault-withdrawals.ts +0 -349
- package/src/vaults/lib/ops/withdraw.stories.tsx +0 -82
- package/src/vaults/lib/ops/withdraw.ts +0 -225
- package/src/version.ts +0 -56
- package/src/vite-env.d.ts +0 -1
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for BTC Stake Action
|
|
3
|
-
*
|
|
4
|
-
* Tests the BTC → LBTC staking flow with fee authorization and deposit address generation.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { Env } from '@lombard.finance/sdk-common';
|
|
8
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
9
|
-
|
|
10
|
-
import { AssetId, Chain } from '../../../../../core';
|
|
11
|
-
import { LombardError, ProviderErrorCode } from '../../../../../shared/errors';
|
|
12
|
-
import type { BtcStakeParams, BtcStakeProgress } from '../types';
|
|
13
|
-
|
|
14
|
-
// Mock SDK for testing (reserved for future tests)
|
|
15
|
-
const _createMockSDK = () => ({
|
|
16
|
-
config: {
|
|
17
|
-
env: Env.prod,
|
|
18
|
-
},
|
|
19
|
-
getProvider: vi.fn(),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
describe('BtcStake Interface', () => {
|
|
23
|
-
describe('BtcStakeParams', () => {
|
|
24
|
-
it('should accept valid stake parameters', () => {
|
|
25
|
-
const params: BtcStakeParams = {
|
|
26
|
-
assetOut: AssetId.LBTC,
|
|
27
|
-
destChain: Chain.ETHEREUM,
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
expect(params.assetOut).toBe(AssetId.LBTC);
|
|
31
|
-
expect(params.destChain).toBe(Chain.ETHEREUM);
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it('should support different destination chains', () => {
|
|
35
|
-
const ethereumParams: BtcStakeParams = {
|
|
36
|
-
assetOut: AssetId.LBTC,
|
|
37
|
-
destChain: Chain.ETHEREUM,
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const baseParams: BtcStakeParams = {
|
|
41
|
-
assetOut: AssetId.LBTC,
|
|
42
|
-
destChain: Chain.BASE,
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
expect(ethereumParams.destChain).toBe(Chain.ETHEREUM);
|
|
46
|
-
expect(baseParams.destChain).toBe(Chain.BASE);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
describe('BtcStake Status Transitions', () => {
|
|
51
|
-
it('should define all required status values', () => {
|
|
52
|
-
const statuses = [
|
|
53
|
-
'idle',
|
|
54
|
-
'preparing',
|
|
55
|
-
'needs_fee_authorization',
|
|
56
|
-
'needs_address_confirmation',
|
|
57
|
-
'authorizing',
|
|
58
|
-
'ready',
|
|
59
|
-
'ready',
|
|
60
|
-
'address_ready',
|
|
61
|
-
// Note: 'failed' is no longer a status - errors tracked separately,
|
|
62
|
-
];
|
|
63
|
-
|
|
64
|
-
// Verify all status strings are defined
|
|
65
|
-
statuses.forEach(status => {
|
|
66
|
-
expect(typeof status).toBe('string');
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
describe('BtcStakeProgress Interface', () => {
|
|
72
|
-
it('should include required progress fields', () => {
|
|
73
|
-
const progress: BtcStakeProgress = {
|
|
74
|
-
status: 'address_ready',
|
|
75
|
-
steps: {
|
|
76
|
-
created: 'complete',
|
|
77
|
-
verifying: 'pending',
|
|
78
|
-
issuing: 'idle',
|
|
79
|
-
},
|
|
80
|
-
confirmations: 2,
|
|
81
|
-
requiredConfirmations: 6,
|
|
82
|
-
hasEnoughConfirmations: false,
|
|
83
|
-
isClaimed: false,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
expect(progress.confirmations).toBe(2);
|
|
87
|
-
expect(progress.requiredConfirmations).toBe(6);
|
|
88
|
-
expect(progress.hasEnoughConfirmations).toBe(false);
|
|
89
|
-
expect(progress.isClaimed).toBe(false);
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
it('should track deposit address', () => {
|
|
93
|
-
const progress: BtcStakeProgress = {
|
|
94
|
-
status: 'address_ready',
|
|
95
|
-
steps: {
|
|
96
|
-
created: 'complete',
|
|
97
|
-
verifying: 'idle',
|
|
98
|
-
issuing: 'idle',
|
|
99
|
-
},
|
|
100
|
-
depositAddress: 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
expect(progress.depositAddress).toBeDefined();
|
|
104
|
-
expect(progress.depositAddress).toMatch(/^bc1/);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
describe('BtcStake Method Signatures', () => {
|
|
109
|
-
it('should define prepare method', () => {
|
|
110
|
-
// Type-only test - verifies interface is correctly defined
|
|
111
|
-
type PrepareMethod = (amount: string, recipient: string) => Promise<void>;
|
|
112
|
-
|
|
113
|
-
const testType: PrepareMethod = async () => {};
|
|
114
|
-
expect(testType).toBeDefined();
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('should define authorize method', () => {
|
|
118
|
-
type AuthorizeMethod = () => Promise<void>;
|
|
119
|
-
|
|
120
|
-
const testType: AuthorizeMethod = async () => {};
|
|
121
|
-
expect(testType).toBeDefined();
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it('should define generateDepositAddress method', () => {
|
|
125
|
-
type GenerateAddressMethod = () => Promise<string>;
|
|
126
|
-
|
|
127
|
-
const testType: GenerateAddressMethod = async () =>
|
|
128
|
-
'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh';
|
|
129
|
-
expect(testType).toBeDefined();
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('should define execute method', () => {
|
|
133
|
-
type ExecuteMethod = () => Promise<{ depositAddress: string }>;
|
|
134
|
-
|
|
135
|
-
const testType: ExecuteMethod = async () => ({
|
|
136
|
-
depositAddress: 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
|
|
137
|
-
});
|
|
138
|
-
expect(testType).toBeDefined();
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
describe('Event Emissions', () => {
|
|
143
|
-
it('should emit progress events with correct type', () => {
|
|
144
|
-
const handler = vi.fn((progress: BtcStakeProgress) => {
|
|
145
|
-
expect(progress.status).toBeDefined();
|
|
146
|
-
expect(progress.steps).toBeDefined();
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
// Simulate event emission
|
|
150
|
-
handler({
|
|
151
|
-
status: 'address_ready',
|
|
152
|
-
steps: { created: 'complete', verifying: 'pending', issuing: 'idle' },
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
expect(handler).toHaveBeenCalledOnce();
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
it('should emit status change events', () => {
|
|
159
|
-
const handler = vi.fn((status: string) => {
|
|
160
|
-
expect(typeof status).toBe('string');
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
handler('ready');
|
|
164
|
-
expect(handler).toHaveBeenCalledWith('ready');
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
it('should emit completed event', () => {
|
|
168
|
-
const handler = vi.fn();
|
|
169
|
-
handler();
|
|
170
|
-
expect(handler).toHaveBeenCalledOnce();
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it('should emit error events', () => {
|
|
174
|
-
const handler = vi.fn((error: LombardError) => {
|
|
175
|
-
expect(error).toBeInstanceOf(LombardError);
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
handler(
|
|
179
|
-
new LombardError(ProviderErrorCode.PROVIDER_MISSING, 'Test error'),
|
|
180
|
-
);
|
|
181
|
-
expect(handler).toHaveBeenCalledOnce();
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
describe('Error Handling', () => {
|
|
186
|
-
it('should handle missing provider errors', () => {
|
|
187
|
-
const error = LombardError.providerMissing('ethereum', 'evm');
|
|
188
|
-
|
|
189
|
-
expect(error.code).toBe(ProviderErrorCode.PROVIDER_MISSING);
|
|
190
|
-
expect(error.message).toContain('ethereum');
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
it('should handle user rejection errors', () => {
|
|
194
|
-
const error = LombardError.userRejected('fee authorization');
|
|
195
|
-
|
|
196
|
-
expect(error.code).toBe(ProviderErrorCode.USER_REJECTED);
|
|
197
|
-
expect(error.message).toContain('fee authorization');
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
it('should handle API errors', () => {
|
|
201
|
-
const error = LombardError.providerCallFailed(
|
|
202
|
-
'getNetworkFeeSignature',
|
|
203
|
-
'Network error',
|
|
204
|
-
);
|
|
205
|
-
|
|
206
|
-
expect(error.code).toBe(ProviderErrorCode.PROVIDER_CALL_FAILED);
|
|
207
|
-
expect(error.message).toContain('getNetworkFeeSignature');
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
describe('Public Properties', () => {
|
|
212
|
-
it('should expose status property', () => {
|
|
213
|
-
// Type check - verifies readonly status: string exists
|
|
214
|
-
type HasStatus = { readonly status: string };
|
|
215
|
-
const obj: HasStatus = { status: 'idle' };
|
|
216
|
-
expect(obj.status).toBe('idle');
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
it('should expose error property', () => {
|
|
220
|
-
type HasError = { readonly error: LombardError | null };
|
|
221
|
-
const obj: HasError = { error: null };
|
|
222
|
-
expect(obj.error).toBeNull();
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
it('should expose amount property', () => {
|
|
226
|
-
type HasAmount = { readonly amount?: string };
|
|
227
|
-
const obj: HasAmount = { amount: '0.1' };
|
|
228
|
-
expect(obj.amount).toBe('0.1');
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
it('should expose recipient property', () => {
|
|
232
|
-
type HasRecipient = { readonly recipient?: string };
|
|
233
|
-
const obj: HasRecipient = {
|
|
234
|
-
recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
|
|
235
|
-
};
|
|
236
|
-
expect(obj.recipient).toBeDefined();
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
it('should expose depositAddress property', () => {
|
|
240
|
-
type HasDepositAddress = { readonly depositAddress?: string };
|
|
241
|
-
const obj: HasDepositAddress = {
|
|
242
|
-
depositAddress: 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
|
|
243
|
-
};
|
|
244
|
-
expect(obj.depositAddress).toBeDefined();
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
});
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* EVM Chain Configuration
|
|
3
|
-
*
|
|
4
|
-
* Handles all EVM-compatible destination chains (Ethereum, Base, Arbitrum, etc.)
|
|
5
|
-
* Includes fee authorization for Ethereum mainnet and destination signing for others.
|
|
6
|
-
*
|
|
7
|
-
* Supported chains are derived from ASSET_CATALOG - single source of truth.
|
|
8
|
-
*
|
|
9
|
-
* @module chains/btc/actions/stake/config/evm
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import type { EvmService } from '@lombard.finance/sdk-common';
|
|
13
|
-
import type { EIP1193Provider } from 'viem';
|
|
14
|
-
|
|
15
|
-
import type { ChainId } from '../../../../../common/chains';
|
|
16
|
-
import { AssetId, Chain, Env, getAllAssetChains } from '../../../../../core';
|
|
17
|
-
import { LombardError } from '../../../../../shared/errors';
|
|
18
|
-
import { ensureCorrectChain } from '../../../../../shared/evm/switchChain';
|
|
19
|
-
import { evmAddressSchema } from '../../../../../shared/validation';
|
|
20
|
-
import { Token } from '../../../../../tokens/token-addresses';
|
|
21
|
-
import { getTokenContractInfo } from '../../../../../tokens/tokens';
|
|
22
|
-
import { isEvmChain } from '../../../../../utils/chain';
|
|
23
|
-
import { toSatoshi } from '../../../../../utils/satoshi';
|
|
24
|
-
import type { ChainConfig, FeeAuthConfig } from './types';
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Chains that require fee authorization (unsubsidized chains).
|
|
28
|
-
*
|
|
29
|
-
* These chains require users to sign a fee authorization message
|
|
30
|
-
* before minting LBTC. On subsidized chains, Lombard covers the fees.
|
|
31
|
-
*/
|
|
32
|
-
const UNSUBSIDIZED_CHAINS = [Chain.ETHEREUM, Chain.SEPOLIA] as const;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Fee authorization config for unsubsidized chains.
|
|
36
|
-
*
|
|
37
|
-
* Ethereum mainnet and Sepolia require fee authorization.
|
|
38
|
-
* All methods access EvmService via capabilities.
|
|
39
|
-
*
|
|
40
|
-
* BTC Stake produces LBTC, so we use Token.LBTC for fee signatures.
|
|
41
|
-
* This ensures the backend can distinguish between LBTC and BTC.b signatures.
|
|
42
|
-
*/
|
|
43
|
-
const feeAuthConfig: FeeAuthConfig = {
|
|
44
|
-
async getMintingFee(ctx, chainId) {
|
|
45
|
-
const evm = ctx.capabilities.require('evm') as EvmService;
|
|
46
|
-
return evm.getMintingFee(chainId as ChainId);
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
async restoreFeeSignature(ctx, chainId, address) {
|
|
50
|
-
// Get LBTC token address for this chain to distinguish from BTC.b signatures
|
|
51
|
-
const tokenInfo = await getTokenContractInfo(
|
|
52
|
-
Token.LBTC,
|
|
53
|
-
chainId as ChainId,
|
|
54
|
-
ctx.env,
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
const result = await ctx.api.getFeeSignature({
|
|
58
|
-
address,
|
|
59
|
-
chainId: chainId as ChainId,
|
|
60
|
-
tokenAddress: tokenInfo.address,
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
// Check if signature exists on server (API returns has_signature flag)
|
|
64
|
-
if (!result.hasSignature) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Check expiration - expirationDate is Unix timestamp in seconds
|
|
69
|
-
// Convert to milliseconds for Date comparison
|
|
70
|
-
if (result.expirationDate && new Date(Number(result.expirationDate) * 1000) < new Date()) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Return hasSignature: true even if actual signature string is not returned by API
|
|
75
|
-
// The server has the signature stored; we just need to know it's valid
|
|
76
|
-
return {
|
|
77
|
-
hasSignature: true,
|
|
78
|
-
signature: result.signature, // May be undefined - that's OK
|
|
79
|
-
typedData: result.typedData,
|
|
80
|
-
};
|
|
81
|
-
},
|
|
82
|
-
|
|
83
|
-
async authorizeFee(ctx, { chainId, recipient, fee }) {
|
|
84
|
-
const evm = ctx.capabilities.require('evm') as EvmService;
|
|
85
|
-
const provider = await ctx.getProvider('evm');
|
|
86
|
-
if (!provider) {
|
|
87
|
-
throw LombardError.providerMissing(String(chainId), 'evm');
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Ensure wallet is on the correct chain before signing
|
|
91
|
-
await ensureCorrectChain(provider as EIP1193Provider, chainId as ChainId);
|
|
92
|
-
|
|
93
|
-
// getMintingFee returns BTC (e.g., "0.00000032"), but signNetworkFee expects satoshis
|
|
94
|
-
const feeInSatoshis = toSatoshi(fee).toString();
|
|
95
|
-
|
|
96
|
-
// Get LBTC token info for this chain
|
|
97
|
-
const tokenInfo = await getTokenContractInfo(
|
|
98
|
-
Token.LBTC,
|
|
99
|
-
chainId as ChainId,
|
|
100
|
-
ctx.env,
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
// Sign the network fee with LBTC token (explicitly specified)
|
|
104
|
-
const result = await evm.signNetworkFee({
|
|
105
|
-
fee: feeInSatoshis,
|
|
106
|
-
account: recipient,
|
|
107
|
-
chainId: chainId as ChainId,
|
|
108
|
-
provider: provider as EIP1193Provider,
|
|
109
|
-
token: Token.LBTC,
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
// Store the signature with token address to distinguish from BTC.b signatures
|
|
113
|
-
await ctx.api.storeFeeSignature({
|
|
114
|
-
address: recipient,
|
|
115
|
-
signature: result.signature,
|
|
116
|
-
typedData: result.typedData,
|
|
117
|
-
tokenAddress: tokenInfo.address,
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
return {
|
|
121
|
-
signature: result.signature,
|
|
122
|
-
typedData: result.typedData,
|
|
123
|
-
};
|
|
124
|
-
},
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* EVM chain configuration for BTC stake
|
|
129
|
-
*
|
|
130
|
-
* BTC Stake: BTC → LBTC (yield-bearing staked BTC)
|
|
131
|
-
* Supports staking BTC to LBTC on any EVM-compatible chain.
|
|
132
|
-
* Supported chains are derived from ASSET_CATALOG[AssetId.LBTC].deployments.
|
|
133
|
-
*/
|
|
134
|
-
export const evmConfig: ChainConfig = {
|
|
135
|
-
chainType: 'evm',
|
|
136
|
-
|
|
137
|
-
routes: [
|
|
138
|
-
{
|
|
139
|
-
sourceChains: [Chain.BITCOIN_MAINNET],
|
|
140
|
-
envs: [Env.prod],
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
sourceChains: [Chain.BITCOIN_SIGNET],
|
|
144
|
-
envs: [Env.testnet, Env.stage, Env.dev, Env.ibc],
|
|
145
|
-
},
|
|
146
|
-
],
|
|
147
|
-
|
|
148
|
-
// Derived from ASSET_CATALOG - all EVM chains where LBTC is deployed
|
|
149
|
-
// Note: This includes all chains across all environments
|
|
150
|
-
// The `routes` config above filters by source chain + env
|
|
151
|
-
destChains: getAllAssetChains(AssetId.LBTC).filter(chain => {
|
|
152
|
-
return isEvmChain(chain);
|
|
153
|
-
}),
|
|
154
|
-
|
|
155
|
-
// BTC Stake only produces LBTC
|
|
156
|
-
supportedAssetsOut: [AssetId.LBTC],
|
|
157
|
-
|
|
158
|
-
addressSchema: evmAddressSchema,
|
|
159
|
-
|
|
160
|
-
getFeeAuthConfig(destChain) {
|
|
161
|
-
// Unsubsidized chains require fee authorization
|
|
162
|
-
return (UNSUBSIDIZED_CHAINS as readonly Chain[]).includes(destChain)
|
|
163
|
-
? feeAuthConfig
|
|
164
|
-
: null;
|
|
165
|
-
},
|
|
166
|
-
|
|
167
|
-
async getSignature(ctx, recipient, chainId) {
|
|
168
|
-
const evm = ctx.capabilities.require('evm') as EvmService;
|
|
169
|
-
const provider = await ctx.getProvider('evm');
|
|
170
|
-
if (!provider) {
|
|
171
|
-
throw LombardError.providerMissing(String(chainId), 'evm');
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// Ensure wallet is on the correct chain before signing
|
|
175
|
-
await ensureCorrectChain(provider as EIP1193Provider, chainId as ChainId);
|
|
176
|
-
|
|
177
|
-
return evm.signLbtcDestination({
|
|
178
|
-
chainId: chainId as ChainId,
|
|
179
|
-
address: recipient,
|
|
180
|
-
provider: provider as EIP1193Provider,
|
|
181
|
-
});
|
|
182
|
-
},
|
|
183
|
-
};
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chain Configuration Registry
|
|
3
|
-
*
|
|
4
|
-
* Exports all chain configurations and provides registry lookup functions.
|
|
5
|
-
*
|
|
6
|
-
* BTC Stake: BTC → LBTC (yield-bearing staked BTC)
|
|
7
|
-
*
|
|
8
|
-
* @module chains/btc/actions/stake/config
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import type { AssetId, Chain, ChainType, Env } from '../../../../../core';
|
|
12
|
-
import { evmConfig } from './evm';
|
|
13
|
-
import { solanaConfig } from './solana';
|
|
14
|
-
import { starknetConfig } from './starknet';
|
|
15
|
-
import { suiConfig } from './sui';
|
|
16
|
-
import type { ChainConfig } from './types';
|
|
17
|
-
|
|
18
|
-
// Re-export types
|
|
19
|
-
export type {
|
|
20
|
-
ChainConfig,
|
|
21
|
-
FeeAuthConfig,
|
|
22
|
-
FeeAuthResult,
|
|
23
|
-
RouteDefinition,
|
|
24
|
-
SignatureResult,
|
|
25
|
-
StoredFeeSignature,
|
|
26
|
-
} from './types';
|
|
27
|
-
|
|
28
|
-
// Re-export individual configs
|
|
29
|
-
export { evmConfig } from './evm';
|
|
30
|
-
export { solanaConfig } from './solana';
|
|
31
|
-
export { starknetConfig } from './starknet';
|
|
32
|
-
export { suiConfig } from './sui';
|
|
33
|
-
|
|
34
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
35
|
-
// Registry
|
|
36
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Registry of all chain configurations
|
|
40
|
-
*
|
|
41
|
-
* Add new chain types here to support additional destination chains.
|
|
42
|
-
* The key must match the ChainType from the chain catalog.
|
|
43
|
-
*/
|
|
44
|
-
export const chainConfigs: Partial<Record<ChainType, ChainConfig>> = {
|
|
45
|
-
evm: evmConfig,
|
|
46
|
-
solana: solanaConfig,
|
|
47
|
-
sui: suiConfig,
|
|
48
|
-
starknet: starknetConfig,
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
52
|
-
// Lookup Functions
|
|
53
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Get chain configuration by chain type
|
|
57
|
-
*
|
|
58
|
-
* @param chainType - The chain type from getChainType()
|
|
59
|
-
* @returns ChainConfig or undefined if not supported
|
|
60
|
-
*/
|
|
61
|
-
export function getChainConfig(chainType: ChainType): ChainConfig | undefined {
|
|
62
|
-
return chainConfigs[chainType];
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Check if a chain type is supported for BTC staking
|
|
67
|
-
*
|
|
68
|
-
* @param chainType - The chain type to check
|
|
69
|
-
* @returns true if supported
|
|
70
|
-
*/
|
|
71
|
-
export function isChainTypeSupported(chainType: ChainType): boolean {
|
|
72
|
-
return chainType in chainConfigs;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Check if a specific route is available
|
|
77
|
-
*
|
|
78
|
-
* @param config - Chain configuration
|
|
79
|
-
* @param sourceChain - Source chain (Bitcoin network)
|
|
80
|
-
* @param env - Environment
|
|
81
|
-
* @returns true if route is available
|
|
82
|
-
*/
|
|
83
|
-
export function isRouteAvailable(
|
|
84
|
-
config: ChainConfig,
|
|
85
|
-
sourceChain: Chain | undefined,
|
|
86
|
-
env: Env,
|
|
87
|
-
): boolean {
|
|
88
|
-
if (!sourceChain) return true; // No source chain specified, allow all
|
|
89
|
-
|
|
90
|
-
return config.routes.some(
|
|
91
|
-
route =>
|
|
92
|
-
route.sourceChains.includes(sourceChain) && route.envs.includes(env),
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Check if a destination chain is supported by a config
|
|
98
|
-
*
|
|
99
|
-
* @param config - Chain configuration
|
|
100
|
-
* @param destChain - Destination chain
|
|
101
|
-
* @returns true if destination chain is supported
|
|
102
|
-
*/
|
|
103
|
-
export function isDestChainSupported(
|
|
104
|
-
config: ChainConfig,
|
|
105
|
-
destChain: Chain,
|
|
106
|
-
): boolean {
|
|
107
|
-
return config.destChains.includes(destChain);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Check if an output asset is supported by a config
|
|
112
|
-
*
|
|
113
|
-
* @param config - Chain configuration
|
|
114
|
-
* @param assetOut - Output asset
|
|
115
|
-
* @returns true if output asset is supported
|
|
116
|
-
*/
|
|
117
|
-
export function isAssetOutSupported(
|
|
118
|
-
config: ChainConfig,
|
|
119
|
-
assetOut: AssetId,
|
|
120
|
-
): boolean {
|
|
121
|
-
return config.supportedAssetsOut.includes(assetOut);
|
|
122
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Solana Chain Configuration
|
|
3
|
-
*
|
|
4
|
-
* Handles Solana destination chains (mainnet and devnet).
|
|
5
|
-
* Uses Solana wallet signing via the Solana SDK module.
|
|
6
|
-
*
|
|
7
|
-
* BTC Stake: BTC → LBTC (yield-bearing staked BTC)
|
|
8
|
-
* Supported chains derived from ASSET_CATALOG.
|
|
9
|
-
*
|
|
10
|
-
* @module chains/btc/actions/stake/config/solana
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import type { SolanaService } from '@lombard.finance/sdk-common';
|
|
14
|
-
|
|
15
|
-
import { AssetId, Chain, Env, getAllAssetChains } from '../../../../../core';
|
|
16
|
-
import { LombardError, ValidationErrorCode } from '../../../../../shared/errors';
|
|
17
|
-
import { solanaAddressSchema } from '../../../../../shared/validation';
|
|
18
|
-
import { isSolanaChain } from '../../../../../utils/chain';
|
|
19
|
-
import type { ChainConfig } from './types';
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Map CAIP-2 Solana chain identifier to SolanaNetwork format.
|
|
23
|
-
*
|
|
24
|
-
* The Solana SDK's signLbtcDestination expects network names like 'devnet', 'mainnet-beta',
|
|
25
|
-
* but the SDK uses CAIP-2 chain identifiers with genesis hash references.
|
|
26
|
-
*
|
|
27
|
-
* @param chainId - CAIP-2 chain identifier (e.g., 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1')
|
|
28
|
-
* @returns SolanaNetwork format (e.g., 'devnet')
|
|
29
|
-
*/
|
|
30
|
-
function chainToSolanaNetwork(chainId: string): string {
|
|
31
|
-
// Map from CAIP-2 genesis hash references to SolanaNetwork names
|
|
32
|
-
const CHAIN_TO_NETWORK: Record<string, string> = {
|
|
33
|
-
// CAIP-2 format using genesis hash
|
|
34
|
-
[Chain.SOLANA_MAINNET]: 'mainnet-beta',
|
|
35
|
-
[Chain.SOLANA_DEVNET]: 'devnet',
|
|
36
|
-
[Chain.SOLANA_TESTNET]: 'testnet',
|
|
37
|
-
// Legacy format (solana:network-name)
|
|
38
|
-
'solana:mainnet-beta': 'mainnet-beta',
|
|
39
|
-
'solana:devnet': 'devnet',
|
|
40
|
-
'solana:testnet': 'testnet',
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const network = CHAIN_TO_NETWORK[chainId];
|
|
44
|
-
if (!network) {
|
|
45
|
-
throw new LombardError(
|
|
46
|
-
ValidationErrorCode.INVALID_CHAIN,
|
|
47
|
-
`Unknown Solana chain: ${chainId}. Expected one of: ${Object.keys(CHAIN_TO_NETWORK).join(', ')}`,
|
|
48
|
-
);
|
|
49
|
-
}
|
|
50
|
-
return network;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Solana chain configuration for BTC stake
|
|
55
|
-
*
|
|
56
|
-
* Supports staking BTC to LBTC on Solana.
|
|
57
|
-
* Requires the @lombard.finance/sdk-solana module to be installed.
|
|
58
|
-
*/
|
|
59
|
-
export const solanaConfig: ChainConfig = {
|
|
60
|
-
chainType: 'solana',
|
|
61
|
-
|
|
62
|
-
routes: [
|
|
63
|
-
{
|
|
64
|
-
sourceChains: [Chain.BITCOIN_MAINNET],
|
|
65
|
-
envs: [Env.prod],
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
sourceChains: [Chain.BITCOIN_SIGNET],
|
|
69
|
-
envs: [Env.testnet, Env.stage, Env.dev, Env.ibc],
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
|
|
73
|
-
// Derived from ASSET_CATALOG - Solana chains where LBTC is deployed
|
|
74
|
-
destChains: getAllAssetChains(AssetId.LBTC).filter(chain =>
|
|
75
|
-
isSolanaChain(chain),
|
|
76
|
-
),
|
|
77
|
-
|
|
78
|
-
// BTC Stake only produces LBTC
|
|
79
|
-
supportedAssetsOut: [AssetId.LBTC],
|
|
80
|
-
|
|
81
|
-
addressSchema: solanaAddressSchema,
|
|
82
|
-
|
|
83
|
-
// Solana never requires fee authorization
|
|
84
|
-
getFeeAuthConfig: () => null,
|
|
85
|
-
|
|
86
|
-
async getSignature(ctx, _recipient, chainId) {
|
|
87
|
-
const solana = ctx.capabilities.require('solana') as SolanaService;
|
|
88
|
-
// Convert CAIP-2 chain ID to SolanaNetwork format (e.g., 'devnet')
|
|
89
|
-
const network = chainToSolanaNetwork(chainId as string);
|
|
90
|
-
const { signature } = await solana.signLbtcDestination({
|
|
91
|
-
network,
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
return { signature };
|
|
95
|
-
},
|
|
96
|
-
};
|