@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,82 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_ENV } from '@lombard.finance/sdk-common';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
|
|
4
|
-
import { makeTokenSelector } from '../../stories/arg-types';
|
|
5
|
-
import { Button } from '../../stories/components/Button';
|
|
6
|
-
import { CodeBlock } from '../../stories/components/CodeBlock';
|
|
7
|
-
import { ConnectButton } from '../../stories/components/ConnectButton';
|
|
8
|
-
import {
|
|
9
|
-
functionType,
|
|
10
|
-
wagmiDecorator,
|
|
11
|
-
} from '../../stories/components/decorators';
|
|
12
|
-
import {
|
|
13
|
-
canPerformAction,
|
|
14
|
-
useConnection,
|
|
15
|
-
} from '../../stories/hooks/useConnection';
|
|
16
|
-
import useQuery from '../../stories/hooks/useQuery';
|
|
17
|
-
import { Token } from '../../tokens/token-addresses';
|
|
18
|
-
import { mintToken } from './claimLBTC';
|
|
19
|
-
|
|
20
|
-
const meta = {
|
|
21
|
-
title: 'write/claimLBTC',
|
|
22
|
-
component: StoryView,
|
|
23
|
-
tags: ['autodocs'],
|
|
24
|
-
decorators: [wagmiDecorator, functionType('write')],
|
|
25
|
-
argTypes: {
|
|
26
|
-
...makeTokenSelector([Token.LBTC, Token.BTCK, Token.BTCb]),
|
|
27
|
-
},
|
|
28
|
-
} satisfies Meta<typeof StoryView>;
|
|
29
|
-
|
|
30
|
-
export default meta;
|
|
31
|
-
|
|
32
|
-
type Story = StoryObj<typeof meta>;
|
|
33
|
-
|
|
34
|
-
export const WithParams: Story = {
|
|
35
|
-
args: {
|
|
36
|
-
proofSignature: '',
|
|
37
|
-
data: '',
|
|
38
|
-
env: DEFAULT_ENV,
|
|
39
|
-
token: Token.LBTC,
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
type ClaimLBTCProps = Omit<
|
|
44
|
-
Parameters<typeof mintToken>[0],
|
|
45
|
-
'account' | 'chainId' | 'provider'
|
|
46
|
-
>;
|
|
47
|
-
|
|
48
|
-
export function StoryView(props: ClaimLBTCProps) {
|
|
49
|
-
const connection = useConnection();
|
|
50
|
-
|
|
51
|
-
const request = async () => {
|
|
52
|
-
if (!canPerformAction(connection)) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return mintToken({
|
|
57
|
-
...props,
|
|
58
|
-
account: connection.account.address,
|
|
59
|
-
chainId: connection.account.chainId,
|
|
60
|
-
provider: connection.provider,
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
const { data, error, isLoading, refetch } = useQuery(request, [], false);
|
|
65
|
-
|
|
66
|
-
return (
|
|
67
|
-
<>
|
|
68
|
-
<div className="mb-4">
|
|
69
|
-
<ConnectButton />
|
|
70
|
-
</div>
|
|
71
|
-
|
|
72
|
-
<Button
|
|
73
|
-
onClick={refetch}
|
|
74
|
-
disabled={isLoading || !connection.account.address}
|
|
75
|
-
isLoading={isLoading}
|
|
76
|
-
actionName={mintToken.name}
|
|
77
|
-
/>
|
|
78
|
-
|
|
79
|
-
<CodeBlock text={error || data} />
|
|
80
|
-
</>
|
|
81
|
-
);
|
|
82
|
-
}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { Hash, parseGwei } from 'viem';
|
|
2
|
-
|
|
3
|
-
import { makePublicClient } from '../../clients/public-client';
|
|
4
|
-
import { makeWalletClient } from '../../clients/wallet-client';
|
|
5
|
-
import { CHAIN_ID_TO_VIEM_CHAIN_MAP, isKatanaChain } from '../../common/chains';
|
|
6
|
-
import { CommonWriteParameters } from '../../common/parameters';
|
|
7
|
-
import { AddressKind, Token } from '../../tokens/token-addresses';
|
|
8
|
-
import { getTokenContractInfo } from '../../tokens/tokens';
|
|
9
|
-
import { estimateGasFees } from '../../utils/gas';
|
|
10
|
-
import { ensureHex } from '../../utils/hex';
|
|
11
|
-
import {
|
|
12
|
-
BasculeDepositStatus,
|
|
13
|
-
getBasculeDepositStatus,
|
|
14
|
-
} from '../getBasculeDepositStatus';
|
|
15
|
-
|
|
16
|
-
export interface IClaimLBTCParams extends CommonWriteParameters {
|
|
17
|
-
/**
|
|
18
|
-
* The raw payload from deposit notarization, see `Deposit.rawPayload`.
|
|
19
|
-
*/
|
|
20
|
-
data: string;
|
|
21
|
-
/**
|
|
22
|
-
* The proof signature from deposit notarization, see `Deposit.proof`.
|
|
23
|
-
*/
|
|
24
|
-
proofSignature: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Mints a specified token (LBTC or NativeLBTC) from a notarized deposit.
|
|
29
|
-
*
|
|
30
|
-
* This is the primary function for claiming tokens from a deposit notarization.
|
|
31
|
-
*
|
|
32
|
-
* It performs the following steps:
|
|
33
|
-
* 1. Validates that the token is supported.
|
|
34
|
-
* 2. Checks chain restrictions.
|
|
35
|
-
* 3. Fetches the token contract information.
|
|
36
|
-
* 4. Checks the deposit status via Bascule.
|
|
37
|
-
* 5. Prepares the transaction call data and estimates gas fees if on Katana.
|
|
38
|
-
* 6. Simulates the contract call and executes the transaction via the provided wallet.
|
|
39
|
-
*
|
|
40
|
-
* @param {Object} params - The parameters.
|
|
41
|
-
* @param {string} params.data - Raw payload from the deposit notarization (`Deposit.rawPayload`).
|
|
42
|
-
* @param {string} params.proofSignature - Signature from the deposit notarization (`Deposit.proof`).
|
|
43
|
-
* @param {Address} params.account - The EVM account address that will receive the tokens.
|
|
44
|
-
* @param {ChainId} params.chainId - The chain ID of the target blockchain network.
|
|
45
|
-
* @param {EIP1193Provider} params.provider - The connected wallet provider.
|
|
46
|
-
* @param {string} [params.rpcUrl] - Optional RPC URL for the blockchain network.
|
|
47
|
-
* @param {Env} [params.env] - Optional environment identifier (e.g., `prod`, `staging`).
|
|
48
|
-
* @param {Token} [params.token=Token.LBTC] - The token to mint. Defaults to LBTC.
|
|
49
|
-
*
|
|
50
|
-
* @returns {Promise<Hash>} Resolves with the transaction hash of the mint operation.
|
|
51
|
-
*
|
|
52
|
-
* @throws Will throw an error if:
|
|
53
|
-
* - The token is unsupported.
|
|
54
|
-
* - BTCK minting is attempted on a non-Katana chain.
|
|
55
|
-
* - The deposit is unreported, withdrawn, or blocked by bridge security.
|
|
56
|
-
*/
|
|
57
|
-
export async function mintToken({
|
|
58
|
-
data,
|
|
59
|
-
proofSignature,
|
|
60
|
-
account,
|
|
61
|
-
chainId,
|
|
62
|
-
provider,
|
|
63
|
-
rpcUrl,
|
|
64
|
-
env,
|
|
65
|
-
token = Token.LBTC,
|
|
66
|
-
}: IClaimLBTCParams & { token?: Token }) {
|
|
67
|
-
if (![Token.LBTC, Token.BTCK, Token.BTCb].includes(token)) {
|
|
68
|
-
throw new Error('Unsupported token');
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (token === Token.BTCK && !isKatanaChain(chainId)) {
|
|
72
|
-
throw new Error('Operation not permitted');
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const tokenContract = await getTokenContractInfo(
|
|
76
|
-
token,
|
|
77
|
-
chainId,
|
|
78
|
-
env,
|
|
79
|
-
AddressKind.Adapter,
|
|
80
|
-
);
|
|
81
|
-
const basculeStatus = await getBasculeDepositStatus({
|
|
82
|
-
chainId,
|
|
83
|
-
rawPayload: data,
|
|
84
|
-
env,
|
|
85
|
-
token,
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
if (basculeStatus !== BasculeDepositStatus.REPORTED) {
|
|
89
|
-
switch (basculeStatus) {
|
|
90
|
-
case BasculeDepositStatus.UNREPORTED:
|
|
91
|
-
throw new Error(
|
|
92
|
-
'The deposit cannot be claimed because it is unreported or potentially still pending, please try again later.',
|
|
93
|
-
);
|
|
94
|
-
case BasculeDepositStatus.WITHDRAWN:
|
|
95
|
-
throw new Error(
|
|
96
|
-
'The deposit cannot be claimed because it is withdrawn already.',
|
|
97
|
-
);
|
|
98
|
-
default: // unknown bascule deposit status
|
|
99
|
-
throw new Error(
|
|
100
|
-
'The deposit cannot be claimed because it is blocked by bridge security.',
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const publicClient = makePublicClient({ chainId, rpcUrl, env });
|
|
106
|
-
const walletClient = makeWalletClient({ chainId, provider });
|
|
107
|
-
|
|
108
|
-
const callData = {
|
|
109
|
-
address: tokenContract.address,
|
|
110
|
-
account,
|
|
111
|
-
chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],
|
|
112
|
-
abi: tokenContract.abi,
|
|
113
|
-
functionName:
|
|
114
|
-
token === Token.BTCK || token === Token.BTCb ? 'mintV1' : 'mint',
|
|
115
|
-
args: [ensureHex(data), ensureHex(proofSignature)],
|
|
116
|
-
} as const;
|
|
117
|
-
|
|
118
|
-
const gasEstimationData = isKatanaChain(chainId)
|
|
119
|
-
? await estimateGasFees(publicClient, callData, parseGwei('1'))
|
|
120
|
-
: {};
|
|
121
|
-
|
|
122
|
-
const { request } = await publicClient.simulateContract({
|
|
123
|
-
...callData,
|
|
124
|
-
...gasEstimationData,
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
const txHash = await walletClient.writeContract(request);
|
|
128
|
-
|
|
129
|
-
return txHash;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Convenience wrapper for minting LBTC from a deposit notarization.
|
|
134
|
-
*
|
|
135
|
-
* Internally calls `mintToken` with the `Token.LBTC` argument.
|
|
136
|
-
*
|
|
137
|
-
* @param {IClaimLBTCParams} params - The parameters for claiming LBTC.
|
|
138
|
-
* @returns {Promise<Hash>} Resolves with the transaction hash of the LBTC mint operation.
|
|
139
|
-
*/
|
|
140
|
-
export async function claimLBTC({
|
|
141
|
-
data,
|
|
142
|
-
proofSignature,
|
|
143
|
-
account,
|
|
144
|
-
chainId,
|
|
145
|
-
provider,
|
|
146
|
-
rpcUrl,
|
|
147
|
-
env,
|
|
148
|
-
}: IClaimLBTCParams): Promise<Hash> {
|
|
149
|
-
return mintToken({
|
|
150
|
-
data,
|
|
151
|
-
proofSignature,
|
|
152
|
-
account,
|
|
153
|
-
chainId,
|
|
154
|
-
provider,
|
|
155
|
-
rpcUrl,
|
|
156
|
-
env,
|
|
157
|
-
token: Token.LBTC,
|
|
158
|
-
});
|
|
159
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './claimLBTC';
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_ENV } from '@lombard.finance/sdk-common';
|
|
2
|
-
import { Hash, parseGwei, zeroAddress } from 'viem';
|
|
3
|
-
|
|
4
|
-
import { makePublicClient } from '../../clients/public-client';
|
|
5
|
-
import { makeWalletClient } from '../../clients/wallet-client';
|
|
6
|
-
import { CHAIN_ID_TO_VIEM_CHAIN_MAP, isKatanaChain } from '../../common/chains';
|
|
7
|
-
import { CommonWriteParameters } from '../../common/parameters';
|
|
8
|
-
import ASSET_ROUTER_ABI from '../../tokens/abi/ASSET_ROUTER_ABI';
|
|
9
|
-
import { AddressKind, Token } from '../../tokens/token-addresses';
|
|
10
|
-
import { getTokenContractInfo } from '../../tokens/tokens';
|
|
11
|
-
import { estimateGasFees } from '../../utils/gas';
|
|
12
|
-
import { ensureHex } from '../../utils/hex';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Parameters for claiming BTC.b from unstake redemptions
|
|
16
|
-
*/
|
|
17
|
-
export interface IClaimUnstakeRedeemParams extends CommonWriteParameters {
|
|
18
|
-
/** Raw payload from the unstake redemption (`Unstake.rawPayload`) */
|
|
19
|
-
data: string;
|
|
20
|
-
|
|
21
|
-
/** Signature/proof from the unstake redemption (`Unstake.proof`) */
|
|
22
|
-
proofSignature: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Claims BTC.b tokens from an unstake redemption (LBTC → BTC.b)
|
|
27
|
-
*
|
|
28
|
-
* This function is specifically for claiming native chain redemptions after the 7-day unstaking period.
|
|
29
|
-
* Unlike deposits which use `adapter.mintV1`, unstake redemptions use `assetRouter.mint`.
|
|
30
|
-
*
|
|
31
|
-
* Business Rules:
|
|
32
|
-
* - Only works for native chain redemptions (LBTC → BTC.b)
|
|
33
|
-
* - Requires notarization status = SESSION_APPROVED
|
|
34
|
-
* - Requires session state = COMPLETED
|
|
35
|
-
* - Must be called after 7 days from unstake
|
|
36
|
-
*
|
|
37
|
-
* @param params - Parameters for claiming
|
|
38
|
-
* @returns Transaction hash of the claim operation
|
|
39
|
-
*
|
|
40
|
-
* @throws Error if claiming fails or if action selector doesn't match
|
|
41
|
-
*/
|
|
42
|
-
export async function claimUnstakeRedeem({
|
|
43
|
-
data,
|
|
44
|
-
proofSignature,
|
|
45
|
-
account,
|
|
46
|
-
chainId,
|
|
47
|
-
provider,
|
|
48
|
-
rpcUrl,
|
|
49
|
-
env = DEFAULT_ENV,
|
|
50
|
-
}: IClaimUnstakeRedeemParams): Promise<Hash> {
|
|
51
|
-
const publicClient = makePublicClient({ chainId, rpcUrl, env });
|
|
52
|
-
const walletClient = makeWalletClient({ chainId, provider });
|
|
53
|
-
|
|
54
|
-
// Get AssetRouter address from BTCb token adapter
|
|
55
|
-
const btcbTokenContract = await getTokenContractInfo(
|
|
56
|
-
Token.BTCb,
|
|
57
|
-
chainId,
|
|
58
|
-
env,
|
|
59
|
-
AddressKind.Adapter,
|
|
60
|
-
);
|
|
61
|
-
|
|
62
|
-
// Read AssetRouter address from token adapter
|
|
63
|
-
const assetRouterAddress = await publicClient.readContract({
|
|
64
|
-
address: btcbTokenContract.address,
|
|
65
|
-
abi: btcbTokenContract.abi,
|
|
66
|
-
functionName: 'getAssetRouter',
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
if (!assetRouterAddress || assetRouterAddress === zeroAddress) {
|
|
70
|
-
throw new Error('AssetRouter address not found in token adapter');
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Call AssetRouter.mint function
|
|
74
|
-
const callData = {
|
|
75
|
-
address: assetRouterAddress,
|
|
76
|
-
account,
|
|
77
|
-
chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],
|
|
78
|
-
abi: ASSET_ROUTER_ABI,
|
|
79
|
-
functionName: 'mint',
|
|
80
|
-
args: [ensureHex(data), ensureHex(proofSignature)],
|
|
81
|
-
} as const;
|
|
82
|
-
|
|
83
|
-
const gasEstimationData = isKatanaChain(chainId)
|
|
84
|
-
? await estimateGasFees(publicClient, callData, parseGwei('1'))
|
|
85
|
-
: {};
|
|
86
|
-
|
|
87
|
-
const { request } = await publicClient.simulateContract({
|
|
88
|
-
...callData,
|
|
89
|
-
...gasEstimationData,
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
const txHash = await walletClient.writeContract(request);
|
|
93
|
-
|
|
94
|
-
return txHash;
|
|
95
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './claimUnstakeRedeem';
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { DEFAULT_ENV } from '@lombard.finance/sdk-common';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
|
|
4
|
-
import { makeTokenSelector } from '../../stories/arg-types';
|
|
5
|
-
import { Button } from '../../stories/components/Button';
|
|
6
|
-
import { CodeBlock } from '../../stories/components/CodeBlock';
|
|
7
|
-
import { ConnectButton } from '../../stories/components/ConnectButton';
|
|
8
|
-
import {
|
|
9
|
-
functionType,
|
|
10
|
-
wagmiDecorator,
|
|
11
|
-
} from '../../stories/components/decorators';
|
|
12
|
-
import {
|
|
13
|
-
canPerformAction,
|
|
14
|
-
useConnection,
|
|
15
|
-
} from '../../stories/hooks/useConnection';
|
|
16
|
-
import useQuery from '../../stories/hooks/useQuery';
|
|
17
|
-
import { Token } from '../../tokens/token-addresses';
|
|
18
|
-
import { depositToken } from './depositToken';
|
|
19
|
-
|
|
20
|
-
const meta = {
|
|
21
|
-
title: 'write/depositToken',
|
|
22
|
-
component: StoryView,
|
|
23
|
-
tags: ['autodocs'],
|
|
24
|
-
decorators: [wagmiDecorator, functionType('write')],
|
|
25
|
-
argTypes: {
|
|
26
|
-
...makeTokenSelector([Token.BTCK, Token.BTCb], 'tokenIn'),
|
|
27
|
-
...makeTokenSelector([Token.LBTC], 'tokenOut'),
|
|
28
|
-
},
|
|
29
|
-
} satisfies Meta<typeof StoryView>;
|
|
30
|
-
|
|
31
|
-
export default meta;
|
|
32
|
-
|
|
33
|
-
type Story = StoryObj<typeof meta>;
|
|
34
|
-
|
|
35
|
-
export const WithParams: Story = {
|
|
36
|
-
args: {
|
|
37
|
-
env: DEFAULT_ENV,
|
|
38
|
-
amount: 0,
|
|
39
|
-
tokenIn: Token.BTCb,
|
|
40
|
-
tokenOut: Token.LBTC,
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
type StoryProps = Omit<
|
|
45
|
-
Parameters<typeof depositToken>[0],
|
|
46
|
-
'account' | 'chainId' | 'provider'
|
|
47
|
-
>;
|
|
48
|
-
|
|
49
|
-
export function StoryView(props: StoryProps) {
|
|
50
|
-
const connection = useConnection();
|
|
51
|
-
|
|
52
|
-
const request = async () => {
|
|
53
|
-
if (!canPerformAction(connection)) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return depositToken({
|
|
58
|
-
...props,
|
|
59
|
-
account: connection.account.address,
|
|
60
|
-
chainId: connection.account.chainId,
|
|
61
|
-
provider: connection.provider,
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
const { data, error, isLoading, refetch } = useQuery(request, [], false);
|
|
66
|
-
|
|
67
|
-
return (
|
|
68
|
-
<>
|
|
69
|
-
<div className="mb-4">
|
|
70
|
-
<ConnectButton />
|
|
71
|
-
</div>
|
|
72
|
-
|
|
73
|
-
<Button
|
|
74
|
-
onClick={refetch}
|
|
75
|
-
disabled={isLoading || !connection.account.address}
|
|
76
|
-
isLoading={isLoading}
|
|
77
|
-
actionName={depositToken.name}
|
|
78
|
-
/>
|
|
79
|
-
|
|
80
|
-
<CodeBlock text={error || data} />
|
|
81
|
-
</>
|
|
82
|
-
);
|
|
83
|
-
}
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Asset Router deposit functionality for token swaps
|
|
3
|
-
*/
|
|
4
|
-
import BigNumber from 'bignumber.js';
|
|
5
|
-
import { Address } from 'viem';
|
|
6
|
-
|
|
7
|
-
import { makePublicClient } from '../../clients/public-client';
|
|
8
|
-
import { makeWalletClient } from '../../clients/wallet-client';
|
|
9
|
-
import { CHAIN_ID_TO_VIEM_CHAIN_MAP } from '../../common/chains';
|
|
10
|
-
import { CommonWriteParameters, IEnvParam } from '../../common/parameters';
|
|
11
|
-
import ASSET_ROUTER_ABI from '../../tokens/abi/ASSET_ROUTER_ABI';
|
|
12
|
-
import { AddressKind, Token } from '../../tokens/token-addresses';
|
|
13
|
-
import {
|
|
14
|
-
fromBaseDenomination,
|
|
15
|
-
getTokenContractInfo,
|
|
16
|
-
retrieveTokenProperties,
|
|
17
|
-
toBaseDenomination,
|
|
18
|
-
} from '../../tokens/tokens';
|
|
19
|
-
import { UnsupportedTokenFlow } from '../../utils/err';
|
|
20
|
-
import toBigInt from '../../utils/numbers';
|
|
21
|
-
|
|
22
|
-
const AVAILABLE_FLOWS: Array<{
|
|
23
|
-
tokenIn: Token;
|
|
24
|
-
tokenOut: Token;
|
|
25
|
-
}> = [
|
|
26
|
-
{
|
|
27
|
-
tokenIn: Token.BTCb,
|
|
28
|
-
tokenOut: Token.LBTC,
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
/* -------------------------------------------------------------------------- */
|
|
33
|
-
/* Types */
|
|
34
|
-
/* -------------------------------------------------------------------------- */
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Parameters for depositing tokens into a supported token contract.
|
|
38
|
-
*
|
|
39
|
-
* Extends {@link CommonWriteParameters} and {@link IEnvParam}.
|
|
40
|
-
*/
|
|
41
|
-
type DepositTokenParameters = {
|
|
42
|
-
/**
|
|
43
|
-
* The amount of tokens to deposit in human-readable format
|
|
44
|
-
* (e.g., `1.23` for 1.23 XBTC).
|
|
45
|
-
*/
|
|
46
|
-
amount: BigNumber.Value;
|
|
47
|
-
/**
|
|
48
|
-
* The input token that will be deposited.
|
|
49
|
-
* Defaults to {@link Token.BTCb}.
|
|
50
|
-
*/
|
|
51
|
-
tokenIn: Token;
|
|
52
|
-
/**
|
|
53
|
-
* The output token to be minted after deposit.
|
|
54
|
-
* Defaults to {@link Token.LBTC}.
|
|
55
|
-
*/
|
|
56
|
-
tokenOut: Token;
|
|
57
|
-
} & CommonWriteParameters &
|
|
58
|
-
IEnvParam;
|
|
59
|
-
|
|
60
|
-
/* -------------------------------------------------------------------------- */
|
|
61
|
-
/* Public API */
|
|
62
|
-
/* -------------------------------------------------------------------------- */
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Gets the AssetRouter address for a given token.
|
|
66
|
-
*
|
|
67
|
-
* This is useful for approving tokens before calling the deposit function.
|
|
68
|
-
*
|
|
69
|
-
* @param tokenIn - The input token (e.g., Token.BTCb)
|
|
70
|
-
* @param chainId - The chain ID
|
|
71
|
-
* @param env - The environment
|
|
72
|
-
* @param rpcUrl - Optional RPC URL
|
|
73
|
-
* @returns The AssetRouter address
|
|
74
|
-
*/
|
|
75
|
-
export async function getAssetRouterAddress({
|
|
76
|
-
tokenIn,
|
|
77
|
-
chainId,
|
|
78
|
-
env,
|
|
79
|
-
rpcUrl,
|
|
80
|
-
}: {
|
|
81
|
-
tokenIn: Token;
|
|
82
|
-
chainId: CommonWriteParameters['chainId'];
|
|
83
|
-
env?: IEnvParam['env'];
|
|
84
|
-
rpcUrl?: string;
|
|
85
|
-
}): Promise<Address> {
|
|
86
|
-
const publicClient = makePublicClient({ chainId, rpcUrl, env });
|
|
87
|
-
|
|
88
|
-
const adapterContractInfo = await getTokenContractInfo(
|
|
89
|
-
tokenIn,
|
|
90
|
-
chainId,
|
|
91
|
-
env,
|
|
92
|
-
AddressKind.Adapter,
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
const assetRouterAddress = (await publicClient.readContract({
|
|
96
|
-
address: adapterContractInfo.address,
|
|
97
|
-
abi: adapterContractInfo.abi,
|
|
98
|
-
functionName: 'getAssetRouter',
|
|
99
|
-
})) as Address;
|
|
100
|
-
|
|
101
|
-
return assetRouterAddress;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Deposits tokens using the Asset Router contract to mint the corresponding output token.
|
|
106
|
-
*
|
|
107
|
-
* This function validates the deposit flow (input → output token), retrieves token and adapter contract
|
|
108
|
-
* information, obtains the AssetRouter address, and submits a `deposit` transaction to the AssetRouter contract.
|
|
109
|
-
*
|
|
110
|
-
* **Note:** This function does NOT handle token approval. You must approve tokens for the AssetRouter
|
|
111
|
-
* before calling this function. Use {@link getAssetRouterAddress} to get the spender address for approval.
|
|
112
|
-
*
|
|
113
|
-
* ---
|
|
114
|
-
* **Supported flows:**
|
|
115
|
-
* - BTC.b → LBTC
|
|
116
|
-
*
|
|
117
|
-
* ---
|
|
118
|
-
* **Errors thrown:**
|
|
119
|
-
* - `UnsupportedTokenDepositFlow` if the (tokenIn, tokenOut) pair is not supported
|
|
120
|
-
* - `Error` if token contract properties cannot be retrieved
|
|
121
|
-
* - `Error` if the deposit amount exceeds the account balance
|
|
122
|
-
* - `Error` if insufficient allowance (tokens not approved)
|
|
123
|
-
*/
|
|
124
|
-
export async function depositToken({
|
|
125
|
-
account: accountAddress,
|
|
126
|
-
amount: amountRaw,
|
|
127
|
-
chainId,
|
|
128
|
-
env,
|
|
129
|
-
provider,
|
|
130
|
-
rpcUrl,
|
|
131
|
-
tokenIn = Token.BTCb,
|
|
132
|
-
tokenOut = Token.LBTC,
|
|
133
|
-
}: DepositTokenParameters) {
|
|
134
|
-
const flow = AVAILABLE_FLOWS.find(
|
|
135
|
-
af => af.tokenIn === tokenIn && af.tokenOut === tokenOut,
|
|
136
|
-
);
|
|
137
|
-
if (!flow) {
|
|
138
|
-
throw new UnsupportedTokenFlow(tokenIn, tokenOut, chainId, env);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const publicClient = makePublicClient({ chainId, rpcUrl, env });
|
|
142
|
-
const walletClient = makeWalletClient({ provider, chainId });
|
|
143
|
-
|
|
144
|
-
// Get adapter contract for tokenIn (BTC.b)
|
|
145
|
-
const adapterContractInfo = await getTokenContractInfo(
|
|
146
|
-
tokenIn,
|
|
147
|
-
chainId,
|
|
148
|
-
env,
|
|
149
|
-
AddressKind.Adapter,
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
// Get token contract for tokenIn to check balance and approve
|
|
153
|
-
const tokenInContractInfo = await getTokenContractInfo(
|
|
154
|
-
tokenIn,
|
|
155
|
-
chainId,
|
|
156
|
-
env,
|
|
157
|
-
AddressKind.Token,
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
// Get token contract for tokenOut to pass to AssetRouter
|
|
161
|
-
const tokenOutContractInfo = await getTokenContractInfo(
|
|
162
|
-
tokenOut,
|
|
163
|
-
chainId,
|
|
164
|
-
env,
|
|
165
|
-
AddressKind.Token,
|
|
166
|
-
);
|
|
167
|
-
|
|
168
|
-
const IN = await retrieveTokenProperties(publicClient, tokenInContractInfo);
|
|
169
|
-
if (!IN) {
|
|
170
|
-
throw new Error(
|
|
171
|
-
`Could not retrieve the properties of ${tokenIn} on ${chainId}`,
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// Get AssetRouter address from adapter contract
|
|
176
|
-
const assetRouterAddress = (await publicClient.readContract({
|
|
177
|
-
address: adapterContractInfo.address,
|
|
178
|
-
abi: adapterContractInfo.abi,
|
|
179
|
-
functionName: 'getAssetRouter',
|
|
180
|
-
})) as Address;
|
|
181
|
-
|
|
182
|
-
const amount = BigNumber(amountRaw);
|
|
183
|
-
const amountBigInt = toBigInt(toBaseDenomination(amount, IN.decimals));
|
|
184
|
-
|
|
185
|
-
// Check token balance
|
|
186
|
-
const tokenInBalanceRaw = await publicClient.readContract({
|
|
187
|
-
address: IN.address,
|
|
188
|
-
abi: IN.abi,
|
|
189
|
-
functionName: 'balanceOf',
|
|
190
|
-
args: [accountAddress],
|
|
191
|
-
});
|
|
192
|
-
const tokenInBalance = fromBaseDenomination(tokenInBalanceRaw, IN.decimals);
|
|
193
|
-
|
|
194
|
-
if (amount.isGreaterThan(tokenInBalance)) {
|
|
195
|
-
throw new Error(
|
|
196
|
-
`Unable to deposit ${amount.toString()} ${IN.symbol} because the amount exceeds the account's balance of ${tokenInBalance.toString()} ${IN.symbol}`,
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
// const isAvalanche =
|
|
201
|
-
// chainId === ChainId.avalanche || chainId === ChainId.avalancheFuji;
|
|
202
|
-
|
|
203
|
-
// Call deposit on AssetRouter
|
|
204
|
-
const hash = await walletClient.writeContract({
|
|
205
|
-
address: assetRouterAddress,
|
|
206
|
-
abi: ASSET_ROUTER_ABI,
|
|
207
|
-
chain: CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId],
|
|
208
|
-
functionName: 'deposit',
|
|
209
|
-
args: [accountAddress, tokenOutContractInfo.address, amountBigInt],
|
|
210
|
-
account: accountAddress,
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
return hash;
|
|
214
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './depositToken';
|