@lombard.finance/sdk 4.0.0 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/bridge/lib/ccip-config.d.ts.map +1 -1
- package/dist/bridge/lib/config.d.ts +3 -3
- package/dist/bridge/lib/config.d.ts.map +1 -1
- package/dist/common/chains.d.ts +2 -2
- package/dist/common/chains.d.ts.map +1 -1
- package/dist/common/feature-config.d.ts.map +1 -1
- package/dist/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.d.ts.map +1 -1
- package/dist/index2.cjs +6 -6
- package/dist/index2.js +792 -759
- package/dist/vaults/lib/config.d.ts +1 -1
- package/package.json +7 -8
- package/src/__tests__/AssetNamespace.spec.ts +0 -234
- package/src/__tests__/helpers/createTestConfig.ts +0 -90
- package/src/__tests__/integration/automint-fee.integration.test.ts +0 -74
- package/src/__tests__/integration/btc-deposit.integration.test.ts +0 -109
- package/src/__tests__/integration/btc-stake-and-deploy.integration.test.ts +0 -96
- package/src/__tests__/integration/btc-stake.integration.test.ts +0 -466
- package/src/__tests__/integration/evm-actions.integration.test.ts +0 -932
- package/src/__tests__/integration/evm-deploy.integration.test.ts +0 -122
- package/src/__tests__/integration/evm-redeem.integration.test.ts +0 -157
- package/src/__tests__/integration/faq-patterns.integration.test.ts +0 -465
- package/src/__tests__/integration/getLBTCMintingFee.integration.test.ts +0 -195
- package/src/__tests__/real-wallet/btc/btc-stake.real.test.ts +0 -70
- package/src/__tests__/real-wallet/evm/evm-stake.real.test.ts +0 -47
- package/src/__tests__/real-wallet/evm/evm-unstake.real.test.ts +0 -49
- package/src/__tests__/real-wallet/non-evm/solana-unstake.real.test.ts +0 -19
- package/src/__tests__/real-wallet/non-evm/starknet-unstake.real.test.ts +0 -19
- package/src/__tests__/real-wallet/non-evm/sui-unstake.real.test.ts +0 -19
- package/src/__tests__/services/ApiService.test.ts +0 -62
- package/src/__tests__/services/BtcService.test.ts +0 -30
- package/src/__tests__/services/EvmService.test.ts +0 -39
- package/src/__tests__/setup.ts +0 -16
- package/src/__tests__/test-utils/eip1193-adapter.ts +0 -48
- package/src/__tests__/test-utils/evm-wallet.ts +0 -38
- package/src/__tests__/test-utils/solana-wallet.ts +0 -22
- package/src/__tests__/test-utils/starknet-wallet.ts +0 -9
- package/src/__tests__/test-utils/sui-wallet.ts +0 -14
- package/src/__tests__/test-utils/test-constraints.ts +0 -110
- package/src/__tests__/unit/btc/BtcDeposit.test.ts +0 -253
- package/src/__tests__/unit/btc/BtcDepositAndDeploy.test.ts +0 -174
- package/src/__tests__/unit/btc/BtcDepositConfig.test.ts +0 -143
- package/src/__tests__/unit/btc/BtcDepositStatusTransition.test.ts +0 -221
- package/src/__tests__/unit/btc/BtcStakeAndDeploy.test.ts +0 -194
- package/src/__tests__/unit/btc/ExistingSignatureHandling.test.ts +0 -301
- package/src/__tests__/unit/btc/StakeAndBakeRatioConversion.test.ts +0 -200
- package/src/__tests__/unit/btc/StakeAndBakeSignatureRestore.test.ts +0 -216
- package/src/__tests__/unit/btc/TokenParameterConsistency.test.ts +0 -184
- package/src/__tests__/unit/btc/btc-deposit-token.test.ts +0 -191
- package/src/__tests__/unit/catalog/AssetCatalog.test.ts +0 -293
- package/src/__tests__/unit/config/ChainConfig.test.ts +0 -47
- package/src/__tests__/unit/config/FeeAuthConfig.test.ts +0 -76
- package/src/__tests__/unit/contract-functions/getLBTCMintingFee.test.ts +0 -128
- package/src/__tests__/unit/core/chain-parsing.test.ts +0 -257
- package/src/__tests__/unit/defi/AvailableProtocols.test.ts +0 -100
- package/src/__tests__/unit/defi/DefiRegistry.test.ts +0 -25
- package/src/__tests__/unit/evm/EvmDeploy.test.ts +0 -224
- package/src/__tests__/unit/evm/EvmRedeem.test.ts +0 -207
- package/src/__tests__/unit/evm/EvmRedeemFeeAuth.test.ts +0 -93
- package/src/__tests__/unit/evm/EvmStake.test.ts +0 -207
- package/src/__tests__/unit/evm/EvmStakeFeeAuth.test.ts +0 -193
- package/src/__tests__/unit/evm/EvmUnstakeAllowance.test.ts +0 -69
- package/src/__tests__/unit/evm/EvmUnstakeConfig.test.ts +0 -203
- package/src/__tests__/unit/fee-signature-expiration.test.ts +0 -76
- package/src/__tests__/unit/modules/CapabilityRegistry.test.ts +0 -55
- package/src/__tests__/unit/shared/BaseAction.test.ts +0 -122
- package/src/__tests__/unit/shared/BaseBtcAction.test.ts +0 -114
- package/src/__tests__/unit/solana/SolanaUnstake.test.ts +0 -314
- package/src/__tests__/unit/starknet/StarknetUnstake.test.ts +0 -318
- package/src/__tests__/unit/sui/SuiUnstake.test.ts +0 -310
- package/src/__tests__/unit/utils/satoshi.test.ts +0 -27
- package/src/__tests__/unit/validation/address-validation.test.ts +0 -350
- package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.stories.tsx +0 -71
- package/src/api-functions/generateDepositBtcAddress/generateDepositBtcAddress.ts +0 -235
- package/src/api-functions/generateDepositBtcAddress/index.ts +0 -1
- package/src/api-functions/get-badges-by-address/get-badges-by-address.ts +0 -13
- package/src/api-functions/get-badges-by-address/index.ts +0 -1
- package/src/api-functions/getDepositAddressReferrer/getDepositAddressReferrer.ts +0 -38
- package/src/api-functions/getDepositAddressReferrer/index.ts +0 -1
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.stories.tsx +0 -59
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.test.ts +0 -265
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddress.ts +0 -167
- package/src/api-functions/getDepositBtcAddress/getDepositBtcAddresses.stories.tsx +0 -58
- package/src/api-functions/getDepositBtcAddress/index.ts +0 -1
- package/src/api-functions/getDepositBtcAddress/make-request.ts +0 -59
- package/src/api-functions/getDepositBtcAddress/types.ts +0 -106
- package/src/api-functions/getDepositsByAddress/getDepositsByAddress.stories.tsx +0 -51
- package/src/api-functions/getDepositsByAddress/getDepositsByAddress.ts +0 -502
- package/src/api-functions/getDepositsByAddress/index.ts +0 -1
- package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.stories.tsx +0 -48
- package/src/api-functions/getLBTCExchangeRate/get-exchange-ratio.ts +0 -59
- package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.stories.tsx +0 -55
- package/src/api-functions/getLBTCExchangeRate/getLBTCExchangeRate.ts +0 -75
- package/src/api-functions/getLBTCExchangeRate/index.ts +0 -2
- package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.stories.tsx +0 -59
- package/src/api-functions/getNetworkFeeSignature/getNetworkFeeSignature.ts +0 -116
- package/src/api-functions/getNetworkFeeSignature/index.ts +0 -1
- package/src/api-functions/getPointsByAddress/getPointsByAddress.stories.tsx +0 -51
- package/src/api-functions/getPointsByAddress/getPointsByAddress.ts +0 -304
- package/src/api-functions/getPointsByAddress/index.ts +0 -1
- package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.stories.tsx +0 -51
- package/src/api-functions/getUnstakesByAddress/getUnstakesByAddress.ts +0 -368
- package/src/api-functions/getUnstakesByAddress/index.ts +0 -1
- package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.stories.tsx +0 -70
- package/src/api-functions/getUserStakeAndBakeSignature/getUserStakeAndBakeSignature.ts +0 -91
- package/src/api-functions/getUserStakeAndBakeSignature/index.ts +0 -1
- package/src/api-functions/index.ts +0 -11
- package/src/api-functions/setReferral/index.ts +0 -1
- package/src/api-functions/setReferral/setReferral.ts +0 -67
- package/src/api-functions/storeNetworkFeeSignature/index.ts +0 -1
- package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.stories.tsx +0 -57
- package/src/api-functions/storeNetworkFeeSignature/storeNetworkFeeSignature.ts +0 -75
- package/src/api-functions/storeStakeAndBakeSignature/index.ts +0 -1
- package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.stories.tsx +0 -57
- package/src/api-functions/storeStakeAndBakeSignature/storeStakeAndBakeSignature.ts +0 -61
- package/src/bridge/abi/CCIP_BRIDGE_ADAPTER_ABI.json +0 -704
- package/src/bridge/abi/CCIP_ROUTER_ABI.json +0 -702
- package/src/bridge/abi/OFT_BRIDGE_ADAPTER_ABI.json +0 -912
- package/src/bridge/index.ts +0 -16
- package/src/bridge/lib/bridge.stories.tsx +0 -90
- package/src/bridge/lib/bridge.ts +0 -115
- package/src/bridge/lib/ccip-bridge.stories.tsx +0 -91
- package/src/bridge/lib/ccip-bridge.ts +0 -214
- package/src/bridge/lib/ccip-config.ts +0 -54
- package/src/bridge/lib/config.ts +0 -384
- package/src/bridge/lib/oft-bridge.stories.tsx +0 -90
- package/src/bridge/lib/oft-bridge.ts +0 -217
- package/src/chains/btc/BtcActions.ts +0 -192
- package/src/chains/btc/actions/deposit/BtcDeposit.ts +0 -388
- package/src/chains/btc/actions/deposit/config/evm.ts +0 -197
- package/src/chains/btc/actions/deposit/config/index.ts +0 -53
- package/src/chains/btc/actions/deposit/config/types.ts +0 -108
- package/src/chains/btc/actions/deposit/factory.ts +0 -53
- package/src/chains/btc/actions/deposit/index.ts +0 -23
- package/src/chains/btc/actions/deposit/types.ts +0 -120
- package/src/chains/btc/actions/depositAndDeploy/BtcDepositAndDeploy.ts +0 -366
- package/src/chains/btc/actions/depositAndDeploy/config/evm.ts +0 -105
- package/src/chains/btc/actions/depositAndDeploy/config/index.ts +0 -111
- package/src/chains/btc/actions/depositAndDeploy/config/types.ts +0 -67
- package/src/chains/btc/actions/depositAndDeploy/factory.ts +0 -38
- package/src/chains/btc/actions/depositAndDeploy/index.ts +0 -24
- package/src/chains/btc/actions/depositAndDeploy/types.ts +0 -120
- package/src/chains/btc/actions/index.ts +0 -14
- package/src/chains/btc/actions/shared/BaseBtcAction.ts +0 -495
- package/src/chains/btc/actions/shared/index.ts +0 -28
- package/src/chains/btc/actions/shared/tokenUtils.ts +0 -68
- package/src/chains/btc/actions/shared/validation.ts +0 -180
- package/src/chains/btc/actions/stake/BtcStake.ts +0 -433
- package/src/chains/btc/actions/stake/__tests__/BtcStake.test.ts +0 -247
- package/src/chains/btc/actions/stake/config/evm.ts +0 -183
- package/src/chains/btc/actions/stake/config/index.ts +0 -122
- package/src/chains/btc/actions/stake/config/solana.ts +0 -96
- package/src/chains/btc/actions/stake/config/starknet.ts +0 -66
- package/src/chains/btc/actions/stake/config/sui.ts +0 -61
- package/src/chains/btc/actions/stake/config/types.ts +0 -165
- package/src/chains/btc/actions/stake/factory.ts +0 -53
- package/src/chains/btc/actions/stake/index.ts +0 -22
- package/src/chains/btc/actions/stake/types.ts +0 -175
- package/src/chains/btc/actions/stakeAndDeploy/BtcStakeAndDeploy.ts +0 -415
- package/src/chains/btc/actions/stakeAndDeploy/config/evm.ts +0 -135
- package/src/chains/btc/actions/stakeAndDeploy/config/index.ts +0 -119
- package/src/chains/btc/actions/stakeAndDeploy/config/types.ts +0 -93
- package/src/chains/btc/actions/stakeAndDeploy/factory.ts +0 -54
- package/src/chains/btc/actions/stakeAndDeploy/index.ts +0 -26
- package/src/chains/btc/actions/stakeAndDeploy/types.ts +0 -118
- package/src/chains/btc/client/getCurrentBlockHeight.ts +0 -28
- package/src/chains/btc/client/mempool/error.ts +0 -24
- package/src/chains/btc/client/mempool/mempool.ts +0 -23
- package/src/chains/btc/index.ts +0 -71
- package/src/chains/evm/EvmActions.ts +0 -185
- package/src/chains/evm/actions/deploy/EvmDeploy.ts +0 -256
- package/src/chains/evm/actions/deploy/config/evm.ts +0 -80
- package/src/chains/evm/actions/deploy/config/index.ts +0 -8
- package/src/chains/evm/actions/deploy/config/types.ts +0 -43
- package/src/chains/evm/actions/deploy/factory.ts +0 -44
- package/src/chains/evm/actions/deploy/index.ts +0 -17
- package/src/chains/evm/actions/deploy/types.ts +0 -74
- package/src/chains/evm/actions/deposit/EvmDeposit.ts +0 -159
- package/src/chains/evm/actions/deposit/config/evm.ts +0 -100
- package/src/chains/evm/actions/deposit/config/index.ts +0 -8
- package/src/chains/evm/actions/deposit/config/types.ts +0 -39
- package/src/chains/evm/actions/deposit/factory.ts +0 -44
- package/src/chains/evm/actions/deposit/index.ts +0 -17
- package/src/chains/evm/actions/deposit/types.ts +0 -87
- package/src/chains/evm/actions/index.ts +0 -67
- package/src/chains/evm/actions/redeem/EvmRedeem.ts +0 -263
- package/src/chains/evm/actions/redeem/config/evm.ts +0 -85
- package/src/chains/evm/actions/redeem/config/index.ts +0 -8
- package/src/chains/evm/actions/redeem/config/types.ts +0 -39
- package/src/chains/evm/actions/redeem/factory.ts +0 -43
- package/src/chains/evm/actions/redeem/index.ts +0 -17
- package/src/chains/evm/actions/redeem/types.ts +0 -93
- package/src/chains/evm/actions/stake/EvmStake.ts +0 -339
- package/src/chains/evm/actions/stake/config/evm.ts +0 -89
- package/src/chains/evm/actions/stake/config/index.ts +0 -8
- package/src/chains/evm/actions/stake/config/types.ts +0 -89
- package/src/chains/evm/actions/stake/factory.ts +0 -52
- package/src/chains/evm/actions/stake/index.ts +0 -30
- package/src/chains/evm/actions/stake/types.ts +0 -104
- package/src/chains/evm/actions/unstake/EvmUnstake.ts +0 -258
- package/src/chains/evm/actions/unstake/config/evm.ts +0 -123
- package/src/chains/evm/actions/unstake/config/index.ts +0 -13
- package/src/chains/evm/actions/unstake/config/types.ts +0 -37
- package/src/chains/evm/actions/unstake/factory.ts +0 -44
- package/src/chains/evm/actions/unstake/index.ts +0 -22
- package/src/chains/evm/actions/unstake/types.ts +0 -87
- package/src/chains/evm/index.ts +0 -16
- package/src/chains/evm/shared/feeAuth.ts +0 -198
- package/src/chains/evm/shared/index.ts +0 -7
- package/src/chains/solana/SolanaActions.ts +0 -85
- package/src/chains/solana/actions/index.ts +0 -7
- package/src/chains/solana/actions/unstake/SolanaUnstake.ts +0 -151
- package/src/chains/solana/actions/unstake/config/btc.ts +0 -47
- package/src/chains/solana/actions/unstake/config/index.ts +0 -8
- package/src/chains/solana/actions/unstake/config/solana.ts +0 -47
- package/src/chains/solana/actions/unstake/config/types.ts +0 -35
- package/src/chains/solana/actions/unstake/factory.ts +0 -34
- package/src/chains/solana/actions/unstake/index.ts +0 -14
- package/src/chains/solana/actions/unstake/types.ts +0 -58
- package/src/chains/solana/index.ts +0 -8
- package/src/chains/starknet/StarknetActions.ts +0 -85
- package/src/chains/starknet/actions/index.ts +0 -7
- package/src/chains/starknet/actions/unstake/StarknetUnstake.ts +0 -128
- package/src/chains/starknet/actions/unstake/config/btc.ts +0 -43
- package/src/chains/starknet/actions/unstake/config/index.ts +0 -8
- package/src/chains/starknet/actions/unstake/config/starknet.ts +0 -43
- package/src/chains/starknet/actions/unstake/config/types.ts +0 -27
- package/src/chains/starknet/actions/unstake/factory.ts +0 -32
- package/src/chains/starknet/actions/unstake/index.ts +0 -14
- package/src/chains/starknet/actions/unstake/types.ts +0 -57
- package/src/chains/starknet/index.ts +0 -8
- package/src/chains/sui/SuiActions.ts +0 -82
- package/src/chains/sui/actions/index.ts +0 -7
- package/src/chains/sui/actions/unstake/SuiUnstake.ts +0 -146
- package/src/chains/sui/actions/unstake/config/btc.ts +0 -43
- package/src/chains/sui/actions/unstake/config/index.ts +0 -8
- package/src/chains/sui/actions/unstake/config/sui.ts +0 -43
- package/src/chains/sui/actions/unstake/config/types.ts +0 -27
- package/src/chains/sui/actions/unstake/factory.ts +0 -32
- package/src/chains/sui/actions/unstake/index.ts +0 -14
- package/src/chains/sui/actions/unstake/types.ts +0 -57
- package/src/chains/sui/index.ts +0 -8
- package/src/client/ApiNamespace.ts +0 -302
- package/src/client/AssetNamespace.ts +0 -112
- package/src/client/LombardSDK.ts +0 -212
- package/src/client/PartnerConfiguration.ts +0 -50
- package/src/client/createConfig.ts +0 -90
- package/src/client/createLombardSDK.ts +0 -130
- package/src/clients/evm-signer-adapter.ts +0 -313
- package/src/clients/public-client.ts +0 -49
- package/src/clients/rpc-url-config.ts +0 -64
- package/src/clients/wallet-client.ts +0 -34
- package/src/common/api-config.ts +0 -48
- package/src/common/blockchain-identifier.ts +0 -217
- package/src/common/chains.stories.tsx +0 -68
- package/src/common/chains.ts +0 -449
- package/src/common/constants.ts +0 -1
- package/src/common/contract-info.ts +0 -9
- package/src/common/feature-config.ts +0 -79
- package/src/common/fee-requirements.ts +0 -34
- package/src/common/parameters.ts +0 -89
- package/src/config/defaults.ts +0 -49
- package/src/config/index.ts +0 -12
- package/src/config/providers.ts +0 -81
- package/src/config/types.ts +0 -216
- package/src/config/validation.ts +0 -69
- package/src/contract-functions/approveLBTC/approveLBTC.stories.tsx +0 -79
- package/src/contract-functions/approveLBTC/approveLBTC.ts +0 -66
- package/src/contract-functions/approveLBTC/index.ts +0 -1
- package/src/contract-functions/approveToken/approveToken.ts +0 -126
- package/src/contract-functions/approveToken/index.ts +0 -1
- package/src/contract-functions/claimLBTC/claimLBTC.stories.tsx +0 -82
- package/src/contract-functions/claimLBTC/claimLBTC.ts +0 -159
- package/src/contract-functions/claimLBTC/index.ts +0 -1
- package/src/contract-functions/claimUnstakeRedeem/claimUnstakeRedeem.ts +0 -95
- package/src/contract-functions/claimUnstakeRedeem/index.ts +0 -1
- package/src/contract-functions/deposit/depositToken.stories.tsx +0 -83
- package/src/contract-functions/deposit/depositToken.ts +0 -214
- package/src/contract-functions/deposit/index.ts +0 -1
- package/src/contract-functions/getBasculeDepositStatus/decodeBasculeDepositStatus.ts +0 -170
- package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.stories.tsx +0 -62
- package/src/contract-functions/getBasculeDepositStatus/getBasculeDepositStatus.ts +0 -211
- package/src/contract-functions/getBasculeDepositStatus/index.ts +0 -2
- package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.stories.tsx +0 -61
- package/src/contract-functions/getLBTCMintingFee/getLBTCMintingFee.ts +0 -193
- package/src/contract-functions/getLBTCMintingFee/index.ts +0 -1
- package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.stories.tsx +0 -51
- package/src/contract-functions/getLBTCTotalSupply/getLBTCTotalSupply.ts +0 -40
- package/src/contract-functions/getLBTCTotalSupply/index.ts +0 -1
- package/src/contract-functions/getPermitNonce/getPermitNonce.stories.tsx +0 -56
- package/src/contract-functions/getPermitNonce/getPermitNonce.ts +0 -50
- package/src/contract-functions/getPermitNonce/index.ts +0 -1
- package/src/contract-functions/getShareValue/getShareValue.stories.tsx +0 -58
- package/src/contract-functions/getShareValue/getShareValue.ts +0 -59
- package/src/contract-functions/getShareValue/index.ts +0 -1
- package/src/contract-functions/getSharesByAddress/getSharesByAddress.stories.tsx +0 -65
- package/src/contract-functions/getSharesByAddress/getSharesByAddress.ts +0 -86
- package/src/contract-functions/getSharesByAddress/index.ts +0 -4
- package/src/contract-functions/getStakeAndBakeFee/__tests__/getStakeAndBakeFee.test.ts +0 -167
- package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.stories.tsx +0 -180
- package/src/contract-functions/getStakeAndBakeFee/getStakeAndBakeFee.tsx +0 -101
- package/src/contract-functions/getStakeAndBakeFee/index.ts +0 -1
- package/src/contract-functions/index.ts +0 -21
- package/src/contract-functions/signLbtcDestionationAddr/index.ts +0 -1
- package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestinationAddr.ts +0 -32
- package/src/contract-functions/signLbtcDestionationAddr/signLbtcDestionationAddr.stories.tsx +0 -64
- package/src/contract-functions/signNetworkFee/getTypedData.ts +0 -41
- package/src/contract-functions/signNetworkFee/index.ts +0 -1
- package/src/contract-functions/signNetworkFee/signNetworkFee.stories.tsx +0 -94
- package/src/contract-functions/signNetworkFee/signNetworkFee.ts +0 -106
- package/src/contract-functions/signStakeAndBake/__tests__/signStakeAndBake.test.ts +0 -888
- package/src/contract-functions/signStakeAndBake/handleApprove.ts +0 -81
- package/src/contract-functions/signStakeAndBake/handlePermit.ts +0 -28
- package/src/contract-functions/signStakeAndBake/index.ts +0 -2
- package/src/contract-functions/signStakeAndBake/signStakeAndBake.stories.tsx +0 -202
- package/src/contract-functions/signStakeAndBake/signStakeAndBake.ts +0 -160
- package/src/contract-functions/signStakeAndBake/typed-data-builder.ts +0 -137
- package/src/contract-functions/signStakeAndBake/utils.ts +0 -61
- package/src/contract-functions/signStakeAndBake/validation.ts +0 -124
- package/src/contract-functions/unstakeLBTC/index.ts +0 -1
- package/src/contract-functions/unstakeLBTC/unstakeLBTC.stories.tsx +0 -92
- package/src/contract-functions/unstakeLBTC/unstakeLBTC.ts +0 -396
- package/src/contracts/abis/index.ts +0 -29
- package/src/contracts/index.ts +0 -63
- package/src/contracts/types.ts +0 -143
- package/src/contracts/utils.ts +0 -288
- package/src/core/assets/catalog.ts +0 -343
- package/src/core/assets/index.ts +0 -40
- package/src/core/assets/types.ts +0 -142
- package/src/core/assets/utils.ts +0 -287
- package/src/core/chains/catalog.ts +0 -396
- package/src/core/chains/index.ts +0 -39
- package/src/core/chains/types.ts +0 -193
- package/src/core/chains/utils.ts +0 -245
- package/src/core/index.ts +0 -72
- package/src/core/types.ts +0 -126
- package/src/debug-api/btc-script-to-address.ts +0 -20
- package/src/debug-api/btc-tx-info.ts +0 -32
- package/src/debug-api/evm-by-btc-address.ts +0 -26
- package/src/debug-api/index.ts +0 -3
- package/src/defi/README.md +0 -517
- package/src/defi/defi-registry.stories.tsx +0 -527
- package/src/defi/defi-registry.ts +0 -295
- package/src/defi/index.ts +0 -17
- package/src/index.ts +0 -336
- package/src/metrics/get-additional-rewards.ts +0 -69
- package/src/metrics/get-lbtc-apy.ts +0 -74
- package/src/metrics/get-lbtc-stats.stories.tsx +0 -57
- package/src/metrics/get-lbtc-stats.ts +0 -59
- package/src/metrics/get-positions-summary.stories.tsx +0 -58
- package/src/metrics/get-positions-summary.ts +0 -132
- package/src/modules/CapabilityRegistry.ts +0 -125
- package/src/modules/apiModule.ts +0 -51
- package/src/modules/btcModule.ts +0 -43
- package/src/modules/evmModule.ts +0 -48
- package/src/modules/index.ts +0 -60
- package/src/referrals/ReferralsClient.ts +0 -34
- package/src/referrals/index.ts +0 -1
- package/src/services/ApiService.ts +0 -152
- package/src/services/BtcService.ts +0 -29
- package/src/services/EvmService.ts +0 -127
- package/src/services/index.ts +0 -43
- package/src/shared/__tests__/errors.test.ts +0 -185
- package/src/shared/__tests__/events.test.ts +0 -120
- package/src/shared/__tests__/types.test.ts +0 -155
- package/src/shared/actions/BaseAction.ts +0 -497
- package/src/shared/actions/__tests__/BaseAction.test.ts +0 -292
- package/src/shared/actions/index.ts +0 -9
- package/src/shared/constants/statusConstants.ts +0 -108
- package/src/shared/context/ContextBuilder.ts +0 -149
- package/src/shared/context/index.ts +0 -8
- package/src/shared/context/types.ts +0 -156
- package/src/shared/deposits/depositStatus.ts +0 -402
- package/src/shared/deposits/index.ts +0 -29
- package/src/shared/errors.ts +0 -405
- package/src/shared/events.ts +0 -260
- package/src/shared/evm/switchChain.ts +0 -109
- package/src/shared/index.ts +0 -54
- package/src/shared/monitoring/__tests__/createEventEmitter.test.ts +0 -150
- package/src/shared/monitoring/createEventEmitter.ts +0 -160
- package/src/shared/monitoring/createProgressEmitter.ts +0 -46
- package/src/shared/monitoring/depositMonitor.ts +0 -211
- package/src/shared/monitoring/index.ts +0 -25
- package/src/shared/validation/index.ts +0 -411
- package/src/stories/arg-types.ts +0 -38
- package/src/stories/components/Badge.tsx +0 -27
- package/src/stories/components/Button/Button.css +0 -10
- package/src/stories/components/Button/Button.tsx +0 -52
- package/src/stories/components/Button/index.ts +0 -1
- package/src/stories/components/Card.tsx +0 -18
- package/src/stories/components/CodeBlock/CodeBlock.tsx +0 -27
- package/src/stories/components/CodeBlock/CodeBlockStyles.css +0 -3
- package/src/stories/components/CodeBlock/index.ts +0 -1
- package/src/stories/components/ConnectButton/connect-button.tsx +0 -248
- package/src/stories/components/ConnectButton/index.ts +0 -1
- package/src/stories/components/JsonPreview.tsx +0 -84
- package/src/stories/components/Spinner/Spinner.tsx +0 -27
- package/src/stories/components/Spinner/index.ts +0 -1
- package/src/stories/components/StatsCard.tsx +0 -30
- package/src/stories/components/StatusIndicator.tsx +0 -37
- package/src/stories/components/TreeNode.tsx +0 -47
- package/src/stories/components/decorators/function-type.tsx +0 -63
- package/src/stories/components/decorators/index.ts +0 -2
- package/src/stories/components/decorators/wagmi-decorator.tsx +0 -92
- package/src/stories/components/error-block.tsx +0 -21
- package/src/stories/components/index.ts +0 -11
- package/src/stories/constants.ts +0 -3
- package/src/stories/hooks/useConnection.ts +0 -63
- package/src/stories/hooks/useQuery.ts +0 -57
- package/src/tokens/__tests__/token-addresses.test.ts +0 -551
- package/src/tokens/abi/ASSET_ROUTER_ABI.ts +0 -1966
- package/src/tokens/abi/BRIDGE_TOKEN_ADAPTER_ABI.ts +0 -1405
- package/src/tokens/abi/BTCK_ABI.ts +0 -1092
- package/src/tokens/abi/KATANA_BASCULE_ABI.ts +0 -653
- package/src/tokens/abi/LBTC_ABI.json +0 -1761
- package/src/tokens/abi/LBTC_ABI.ts +0 -1761
- package/src/tokens/abi/LBTC_BASCULE_ABI.json +0 -850
- package/src/tokens/abi/NATIVE_LBTC_ABI.ts +0 -1147
- package/src/tokens/abi/STLBTC_ABI.ts +0 -1062
- package/src/tokens/cross-chain-addresses.stories.tsx +0 -236
- package/src/tokens/denomination-utils.stories.tsx +0 -176
- package/src/tokens/getLbtcContractAddresses.stories.tsx +0 -158
- package/src/tokens/getTokenByAddress.stories.tsx +0 -172
- package/src/tokens/getTokenContractInfo.stories.tsx +0 -148
- package/src/tokens/getTokenInfo.stories.tsx +0 -133
- package/src/tokens/isUpgradedContract.stories.tsx +0 -124
- package/src/tokens/lbtc-addresses.ts +0 -18
- package/src/tokens/token-addresses.ts +0 -477
- package/src/tokens/tokens.ts +0 -249
- package/src/tokens/types.ts +0 -80
- package/src/utils/array.ts +0 -31
- package/src/utils/block.ts +0 -23
- package/src/utils/chain.ts +0 -152
- package/src/utils/consoleLogger.ts +0 -140
- package/src/utils/ensureNotSanctionedAddress.ts +0 -11
- package/src/utils/env.ts +0 -20
- package/src/utils/err.ts +0 -83
- package/src/utils/evmAccount.ts +0 -47
- package/src/utils/gas.ts +0 -36
- package/src/utils/hex.ts +0 -9
- package/src/utils/http.ts +0 -224
- package/src/utils/numbers.ts +0 -37
- package/src/utils/pagination.ts +0 -70
- package/src/utils/satoshi.ts +0 -41
- package/src/utils/time.ts +0 -12
- package/src/utils/transaction-executor.ts +0 -299
- package/src/vaults/abi/SILO_VAULT_SPENDER_ABI.json +0 -793
- package/src/vaults/abi/VEDA_VAULT_ABI.json +0 -452
- package/src/vaults/abi/VEDA_VAULT_ACCOUNTANT_ABI.json +0 -591
- package/src/vaults/abi/VEDA_VAULT_BASE_ASSET_ABI.json +0 -296
- package/src/vaults/abi/VEDA_VAULT_BORING_WITHDRAW_QUEUE_ABI.json +0 -502
- package/src/vaults/abi/VEDA_VAULT_LENS_ABI.json +0 -175
- package/src/vaults/abi/VEDA_VAULT_SPENDER_ABI.json +0 -408
- package/src/vaults/abi/VEDA_VAULT_TELLER_ABI.json +0 -700
- package/src/vaults/abi/index.ts +0 -4
- package/src/vaults/index.ts +0 -46
- package/src/vaults/lib/config.ts +0 -184
- package/src/vaults/lib/metrics/get-vault-apy.stories.tsx +0 -58
- package/src/vaults/lib/metrics/get-vault-apy.ts +0 -176
- package/src/vaults/lib/metrics/get-vault-points.stories.tsx +0 -60
- package/src/vaults/lib/metrics/get-vault-points.ts +0 -74
- package/src/vaults/lib/metrics/get-vault-tvl.stories.tsx +0 -58
- package/src/vaults/lib/metrics/get-vault-tvl.ts +0 -121
- package/src/vaults/lib/ops/cancel-withdraw.stories.tsx +0 -80
- package/src/vaults/lib/ops/deposit.stories.tsx +0 -82
- package/src/vaults/lib/ops/deposit.ts +0 -152
- package/src/vaults/lib/ops/get-vault-deposits.stories.tsx +0 -65
- package/src/vaults/lib/ops/get-vault-deposits.ts +0 -209
- package/src/vaults/lib/ops/get-vault-withdrawals.stories.tsx +0 -67
- package/src/vaults/lib/ops/get-vault-withdrawals.ts +0 -349
- package/src/vaults/lib/ops/withdraw.stories.tsx +0 -82
- package/src/vaults/lib/ops/withdraw.ts +0 -225
- package/src/version.ts +0 -56
- package/src/vite-env.d.ts +0 -1
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import type { AnyModule, ProviderKey } from '@lombard.finance/sdk-common';
|
|
2
|
-
|
|
3
|
-
import type { CreateConfigOptions, LombardConfig } from '../config/types';
|
|
4
|
-
import { validateAndApplyDefaults } from '../config/validation';
|
|
5
|
-
import { apiModule } from '../modules/apiModule';
|
|
6
|
-
import { btcModule } from '../modules/btcModule';
|
|
7
|
-
import { evmModule } from '../modules/evmModule';
|
|
8
|
-
import { LombardError } from '../shared/errors';
|
|
9
|
-
import { createConsoleLogger } from '../utils/consoleLogger';
|
|
10
|
-
|
|
11
|
-
function mergeModules(provided: readonly AnyModule[] | undefined): AnyModule[] {
|
|
12
|
-
const modules = new Map<string, AnyModule>();
|
|
13
|
-
const builtIns: AnyModule[] = [btcModule(), evmModule(), apiModule()];
|
|
14
|
-
for (const mod of builtIns) {
|
|
15
|
-
modules.set(mod.id, mod);
|
|
16
|
-
}
|
|
17
|
-
if (provided) {
|
|
18
|
-
for (const mod of provided) {
|
|
19
|
-
modules.set(mod.id, mod);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return Array.from(modules.values());
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function ensureProviders(
|
|
26
|
-
modules: readonly AnyModule[],
|
|
27
|
-
config: Pick<LombardConfig, 'providers'>,
|
|
28
|
-
): void {
|
|
29
|
-
for (const mod of modules) {
|
|
30
|
-
for (const key of mod.requiresProviders ?? []) {
|
|
31
|
-
if (!hasProvider(config, key)) {
|
|
32
|
-
throw LombardError.providerMissing(key, key);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function hasProvider(
|
|
39
|
-
config: Pick<LombardConfig, 'providers'>,
|
|
40
|
-
key: ProviderKey,
|
|
41
|
-
): boolean {
|
|
42
|
-
return Boolean(config.providers?.[key]);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Create SDK configuration
|
|
47
|
-
*
|
|
48
|
-
* This is a **synchronous** function that validates options and returns
|
|
49
|
-
* a configuration object. The config can be exported from a module and
|
|
50
|
-
* passed around as a plain object.
|
|
51
|
-
*
|
|
52
|
-
* The asset catalog is NOT fetched here - it's fetched asynchronously
|
|
53
|
-
* when createLombardSDK() is called. This keeps config creation simple
|
|
54
|
-
* and predictable.
|
|
55
|
-
*
|
|
56
|
-
* @param options - Configuration options
|
|
57
|
-
* @returns Validated SDK configuration
|
|
58
|
-
*
|
|
59
|
-
* @example
|
|
60
|
-
* ```typescript
|
|
61
|
-
* // lib/lombard.ts - Config is sync, can be exported directly
|
|
62
|
-
* export const config = createConfig({
|
|
63
|
-
* env: Env.prod,
|
|
64
|
-
* providers: { evm: () => window.ethereum },
|
|
65
|
-
* });
|
|
66
|
-
*
|
|
67
|
-
* // Usage - SDK creation is async
|
|
68
|
-
* import { config } from './lib/lombard';
|
|
69
|
-
* const sdk = await createLombardSDK(config);
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
export function createConfig(options: CreateConfigOptions): LombardConfig {
|
|
73
|
-
const normalized = validateAndApplyDefaults(options);
|
|
74
|
-
const modules = mergeModules(
|
|
75
|
-
options.modules as readonly AnyModule[] | undefined,
|
|
76
|
-
);
|
|
77
|
-
ensureProviders(modules, normalized);
|
|
78
|
-
|
|
79
|
-
// Resolve logger: explicit logger > debug mode > undefined
|
|
80
|
-
let logger = options.logger;
|
|
81
|
-
if (!logger && options.debug) {
|
|
82
|
-
logger = createConsoleLogger({ level: 'debug' });
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return {
|
|
86
|
-
...normalized,
|
|
87
|
-
modules,
|
|
88
|
-
logger,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Async factory for creating LombardSDK instances
|
|
3
|
-
*
|
|
4
|
-
* This is the primary entry point for the Lombard SDK.
|
|
5
|
-
* It fetches the asset catalog asynchronously and initializes the SDK.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import type { Env } from '@lombard.finance/sdk-common';
|
|
9
|
-
|
|
10
|
-
import type {
|
|
11
|
-
CreateConfigOptions,
|
|
12
|
-
LombardConfig,
|
|
13
|
-
ResolvedLombardConfig,
|
|
14
|
-
} from '../config/types';
|
|
15
|
-
import { ASSET_CATALOG } from '../core/assets/catalog';
|
|
16
|
-
import type { AssetCatalog } from '../core/assets/types';
|
|
17
|
-
import { createConfig } from './createConfig';
|
|
18
|
-
import { LombardSDK } from './LombardSDK';
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Module-level catalog cache
|
|
22
|
-
*
|
|
23
|
-
* Caches the catalog promise per environment to avoid redundant fetches.
|
|
24
|
-
* Multiple calls to createLombardSDK() with the same env will share
|
|
25
|
-
* the same catalog fetch.
|
|
26
|
-
*
|
|
27
|
-
* @internal
|
|
28
|
-
*/
|
|
29
|
-
const catalogCache = new Map<Env, Promise<AssetCatalog>>();
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Fetch asset catalog with caching
|
|
33
|
-
*
|
|
34
|
-
* Currently returns bundled catalog immediately.
|
|
35
|
-
* Future: Will fetch from remote S3/CDN with bundled fallback.
|
|
36
|
-
*
|
|
37
|
-
* The catalog is cached per environment - subsequent calls with the
|
|
38
|
-
* same env return the same promise, avoiding duplicate fetches.
|
|
39
|
-
*
|
|
40
|
-
* @internal
|
|
41
|
-
*/
|
|
42
|
-
function fetchCatalogCached(env: Env): Promise<AssetCatalog> {
|
|
43
|
-
if (!catalogCache.has(env)) {
|
|
44
|
-
// TODO (APP-1834): Implement remote catalog fetching
|
|
45
|
-
// When backend is ready:
|
|
46
|
-
// 1. Fetch from CDN: https://cdn.lombard.finance/catalog/{env}.json
|
|
47
|
-
// 2. Fallback to ASSET_CATALOG on network failure
|
|
48
|
-
// 3. Cache-Control headers will define CDN TTL
|
|
49
|
-
//
|
|
50
|
-
// For now, return bundled catalog immediately (wrapped in Promise)
|
|
51
|
-
catalogCache.set(env, Promise.resolve(ASSET_CATALOG));
|
|
52
|
-
}
|
|
53
|
-
return catalogCache.get(env)!;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Create a LombardSDK instance
|
|
58
|
-
*
|
|
59
|
-
* This is an async factory that:
|
|
60
|
-
* 1. Validates configuration (sync)
|
|
61
|
-
* 2. Fetches the asset catalog (async, cached per env)
|
|
62
|
-
* 3. Initializes the SDK with all chain actions
|
|
63
|
-
*
|
|
64
|
-
* The catalog is cached at the module level - multiple SDK instances
|
|
65
|
-
* with the same environment share the same catalog fetch.
|
|
66
|
-
*
|
|
67
|
-
* @param options - SDK configuration options or pre-made LombardConfig
|
|
68
|
-
* @returns Promise resolving to LombardSDK instance
|
|
69
|
-
*
|
|
70
|
-
* @example
|
|
71
|
-
* ```typescript
|
|
72
|
-
* // Option 1: Direct creation (recommended for simple cases)
|
|
73
|
-
* const sdk = await createLombardSDK({
|
|
74
|
-
* env: Env.prod,
|
|
75
|
-
* providers: {
|
|
76
|
-
* evm: () => window.ethereum,
|
|
77
|
-
* bitcoin: () => bitcoinProvider,
|
|
78
|
-
* },
|
|
79
|
-
* });
|
|
80
|
-
*
|
|
81
|
-
* // Option 2: Separate config (recommended for shared config)
|
|
82
|
-
* // lib/lombard.ts
|
|
83
|
-
* export const config = createConfig({
|
|
84
|
-
* env: Env.prod,
|
|
85
|
-
* providers: { evm: () => window.ethereum },
|
|
86
|
-
* });
|
|
87
|
-
*
|
|
88
|
-
* // app.ts
|
|
89
|
-
* import { config } from './lib/lombard';
|
|
90
|
-
* const sdk = await createLombardSDK(config);
|
|
91
|
-
*
|
|
92
|
-
* // Use the SDK
|
|
93
|
-
* const stake = sdk.chain.btc.stake({
|
|
94
|
-
* destChain: Chain.ETHEREUM,
|
|
95
|
-
* assetOut: AssetId.LBTC,
|
|
96
|
-
* });
|
|
97
|
-
* ```
|
|
98
|
-
*/
|
|
99
|
-
export async function createLombardSDK<E extends Env = Env>(
|
|
100
|
-
options: (CreateConfigOptions & { env: E }) | LombardConfig,
|
|
101
|
-
): Promise<LombardSDK<E>> {
|
|
102
|
-
// If already a LombardConfig (validated), use it
|
|
103
|
-
// Otherwise, create config (sync validation)
|
|
104
|
-
const config: LombardConfig =
|
|
105
|
-
'modules' in options && Array.isArray(options.modules)
|
|
106
|
-
? (options as LombardConfig)
|
|
107
|
-
: createConfig(options as CreateConfigOptions & { env: E });
|
|
108
|
-
|
|
109
|
-
// Fetch catalog (async, cached per env)
|
|
110
|
-
const catalog = await fetchCatalogCached(config.env);
|
|
111
|
-
|
|
112
|
-
// Create resolved config with catalog
|
|
113
|
-
const resolvedConfig: ResolvedLombardConfig = {
|
|
114
|
-
...config,
|
|
115
|
-
catalog,
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
return new LombardSDK<E>(resolvedConfig);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Clear the catalog cache
|
|
123
|
-
*
|
|
124
|
-
* Useful for testing or forcing a fresh catalog fetch.
|
|
125
|
-
*
|
|
126
|
-
* @internal
|
|
127
|
-
*/
|
|
128
|
-
export function clearCatalogCache(): void {
|
|
129
|
-
catalogCache.clear();
|
|
130
|
-
}
|
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Address,
|
|
3
|
-
createWalletClient,
|
|
4
|
-
Hex,
|
|
5
|
-
http,
|
|
6
|
-
isHex,
|
|
7
|
-
LocalAccount,
|
|
8
|
-
TransactionSerializable,
|
|
9
|
-
WalletClient,
|
|
10
|
-
} from 'viem';
|
|
11
|
-
|
|
12
|
-
import { CHAIN_ID_TO_VIEM_CHAIN_MAP, ChainId } from '../common/chains';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* EVM transaction request structure compatible with unified bridge signers.
|
|
16
|
-
* This matches the shape expected by bridge-unified's EvmSigner interface.
|
|
17
|
-
*/
|
|
18
|
-
export interface EvmTransactionRequest {
|
|
19
|
-
/** Sender address */
|
|
20
|
-
from: Address;
|
|
21
|
-
/** Recipient address */
|
|
22
|
-
to?: Address;
|
|
23
|
-
/** Transaction data (calldata) */
|
|
24
|
-
data?: Hex;
|
|
25
|
-
/** Value to send in wei */
|
|
26
|
-
value?: bigint;
|
|
27
|
-
/** Gas limit */
|
|
28
|
-
gas?: bigint;
|
|
29
|
-
/** Maximum fee per gas (EIP-1559) */
|
|
30
|
-
maxFeePerGas?: bigint;
|
|
31
|
-
/** Maximum priority fee per gas (EIP-1559) */
|
|
32
|
-
maxPriorityFeePerGas?: bigint;
|
|
33
|
-
/** Chain ID in hex format (e.g., "0x1" for Ethereum mainnet) */
|
|
34
|
-
chainId?: string;
|
|
35
|
-
/** Transaction nonce */
|
|
36
|
-
nonce?: number;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Callback function to dispatch a signed transaction.
|
|
41
|
-
* This is called by the signer after signing to broadcast the transaction.
|
|
42
|
-
*
|
|
43
|
-
* @param serializedTx - The signed, serialized transaction (0x-prefixed hex string)
|
|
44
|
-
* @returns Promise resolving to the transaction hash
|
|
45
|
-
*/
|
|
46
|
-
export type DispatchCallback = (serializedTx: Hex) => Promise<Hex>;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Signer interface compatible with unified bridge's EvmSigner.
|
|
50
|
-
* Handles transaction signing and optionally broadcasting.
|
|
51
|
-
*
|
|
52
|
-
* @remarks
|
|
53
|
-
* The `sign` method receives a transaction request and a dispatch callback.
|
|
54
|
-
* The signer should:
|
|
55
|
-
* 1. Sign the transaction
|
|
56
|
-
* 2. Call the dispatch callback with the signed transaction
|
|
57
|
-
* 3. Return the transaction hash
|
|
58
|
-
*/
|
|
59
|
-
export interface SignerAdapter {
|
|
60
|
-
/**
|
|
61
|
-
* Signs a transaction and dispatches it via the provided callback.
|
|
62
|
-
*
|
|
63
|
-
* @param tx - The transaction request to sign
|
|
64
|
-
* @param dispatch - Callback to broadcast the signed transaction
|
|
65
|
-
* @returns Promise resolving to the transaction hash
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* ```ts
|
|
69
|
-
* const txHash = await signer.sign(
|
|
70
|
-
* { from, to, data, value },
|
|
71
|
-
* (signedTx) => publicClient.sendRawTransaction({ serializedTransaction: signedTx })
|
|
72
|
-
* );
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
sign: (tx: EvmTransactionRequest, dispatch: DispatchCallback) => Promise<Hex>;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Error thrown when transaction validation or signing fails.
|
|
80
|
-
*/
|
|
81
|
-
export class SignerError extends Error {
|
|
82
|
-
constructor(
|
|
83
|
-
public readonly code: string,
|
|
84
|
-
message: string,
|
|
85
|
-
public readonly context?: Record<string, unknown>,
|
|
86
|
-
) {
|
|
87
|
-
super(message);
|
|
88
|
-
this.name = 'SignerError';
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Validates an EVM transaction request.
|
|
94
|
-
* Throws SignerError if validation fails.
|
|
95
|
-
*
|
|
96
|
-
* @param tx - Transaction request to validate
|
|
97
|
-
* @throws {SignerError} If required fields are missing or invalid
|
|
98
|
-
*/
|
|
99
|
-
export function validateTransactionRequest(
|
|
100
|
-
tx: EvmTransactionRequest,
|
|
101
|
-
operation = 'transaction',
|
|
102
|
-
): void {
|
|
103
|
-
if (!tx.from) {
|
|
104
|
-
throw new SignerError(
|
|
105
|
-
'MISSING_FROM_ADDRESS',
|
|
106
|
-
`Missing 'from' address for ${operation}`,
|
|
107
|
-
{ transaction: tx, operation },
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (!tx.to) {
|
|
112
|
-
throw new SignerError(
|
|
113
|
-
'MISSING_TO_ADDRESS',
|
|
114
|
-
`Missing 'to' address for ${operation}`,
|
|
115
|
-
{ transaction: tx, operation },
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (tx.data !== undefined && !isHex(tx.data)) {
|
|
120
|
-
throw new SignerError(
|
|
121
|
-
'INVALID_DATA',
|
|
122
|
-
`Transaction data must be valid hex string for ${operation}`,
|
|
123
|
-
{ transaction: tx, operation, data: tx.data },
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
if (tx.chainId && !/^0x[0-9a-fA-F]+$/.test(tx.chainId)) {
|
|
128
|
-
throw new SignerError(
|
|
129
|
-
'INVALID_CHAIN_ID',
|
|
130
|
-
`Chain ID must be a hex string (e.g., "0x1") for ${operation}`,
|
|
131
|
-
{ transaction: tx, operation, chainId: tx.chainId },
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Creates a Viem LocalAccount from a SignerAdapter.
|
|
138
|
-
* This allows the unified bridge's EvmSigner to be used as a standard Viem account.
|
|
139
|
-
*
|
|
140
|
-
* @param signer - The SignerAdapter to wrap
|
|
141
|
-
* @param address - The account address
|
|
142
|
-
* @param chainId - The chain ID
|
|
143
|
-
* @returns A Viem LocalAccount that delegates signing to the SignerAdapter
|
|
144
|
-
*
|
|
145
|
-
* @remarks
|
|
146
|
-
* This adapter enables the SDK to use a unified-bridge EvmSigner with Viem's
|
|
147
|
-
* standard wallet client, eliminating the need for separate code paths.
|
|
148
|
-
*
|
|
149
|
-
* The adapter:
|
|
150
|
-
* - Validates transaction requests before signing
|
|
151
|
-
* - Converts between Viem and EvmSigner transaction formats
|
|
152
|
-
* - Provides proper error context for debugging
|
|
153
|
-
*
|
|
154
|
-
* @example
|
|
155
|
-
* ```ts
|
|
156
|
-
* const account = createAccountFromSigner(
|
|
157
|
-
* bridgeEvmSigner,
|
|
158
|
-
* '0x1234...',
|
|
159
|
-
* ChainId.ethereum
|
|
160
|
-
* );
|
|
161
|
-
*
|
|
162
|
-
* const walletClient = createWalletClient({
|
|
163
|
-
* account,
|
|
164
|
-
* chain: mainnet,
|
|
165
|
-
* transport: http(),
|
|
166
|
-
* });
|
|
167
|
-
*
|
|
168
|
-
* // Now walletClient.writeContract works with the EvmSigner!
|
|
169
|
-
* ```
|
|
170
|
-
*/
|
|
171
|
-
export function createAccountFromSigner(
|
|
172
|
-
signer: SignerAdapter,
|
|
173
|
-
address: Address,
|
|
174
|
-
chainId: ChainId,
|
|
175
|
-
): LocalAccount {
|
|
176
|
-
const chain = CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId];
|
|
177
|
-
|
|
178
|
-
if (!chain) {
|
|
179
|
-
throw new SignerError(
|
|
180
|
-
'UNSUPPORTED_CHAIN',
|
|
181
|
-
`Chain ID ${chainId} is not supported`,
|
|
182
|
-
{ chainId, availableChains: Object.keys(CHAIN_ID_TO_VIEM_CHAIN_MAP) },
|
|
183
|
-
);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Custom account implementation that delegates to SignerAdapter
|
|
188
|
-
*/
|
|
189
|
-
const customAccount: LocalAccount = {
|
|
190
|
-
address,
|
|
191
|
-
type: 'local' as const,
|
|
192
|
-
publicKey:
|
|
193
|
-
'0x0000000000000000000000000000000000000000000000000000000000000000' as Hex,
|
|
194
|
-
source: 'custom' as const,
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Signs a transaction using the SignerAdapter.
|
|
198
|
-
* This is called by Viem's wallet client when executing transactions.
|
|
199
|
-
*/
|
|
200
|
-
async signTransaction(transaction: TransactionSerializable): Promise<Hex> {
|
|
201
|
-
// Convert Viem transaction to EvmTransactionRequest format
|
|
202
|
-
const evmTx: EvmTransactionRequest = {
|
|
203
|
-
from: address,
|
|
204
|
-
to: transaction.to ?? undefined,
|
|
205
|
-
data: transaction.data,
|
|
206
|
-
value: transaction.value,
|
|
207
|
-
gas: transaction.gas,
|
|
208
|
-
maxFeePerGas: transaction.maxFeePerGas,
|
|
209
|
-
maxPriorityFeePerGas: transaction.maxPriorityFeePerGas,
|
|
210
|
-
chainId: transaction.chainId
|
|
211
|
-
? `0x${transaction.chainId.toString(16)}`
|
|
212
|
-
: `0x${chain.id.toString(16)}`,
|
|
213
|
-
nonce: transaction.nonce,
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
// Validate before signing
|
|
217
|
-
validateTransactionRequest(evmTx, 'signTransaction');
|
|
218
|
-
|
|
219
|
-
// Sign and return the serialized signed transaction
|
|
220
|
-
// The dispatch callback here just returns what was passed (identity function)
|
|
221
|
-
// because we want the signed transaction, not to broadcast it yet
|
|
222
|
-
let signedTx: Hex | undefined;
|
|
223
|
-
|
|
224
|
-
await signer.sign(evmTx, async serialized => {
|
|
225
|
-
signedTx = serialized;
|
|
226
|
-
// Return a dummy hash - the actual broadcasting happens via walletClient
|
|
227
|
-
return serialized;
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
if (!signedTx) {
|
|
231
|
-
throw new SignerError(
|
|
232
|
-
'SIGNING_FAILED',
|
|
233
|
-
'Signer did not return a signed transaction',
|
|
234
|
-
{ transaction: evmTx },
|
|
235
|
-
);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Ensure we return a Hex type (not null)
|
|
239
|
-
return signedTx as Hex;
|
|
240
|
-
},
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Signs a message (EIP-191).
|
|
244
|
-
* Not implemented as it's not needed for contract transactions.
|
|
245
|
-
*/
|
|
246
|
-
async signMessage(): Promise<Hex> {
|
|
247
|
-
throw new SignerError(
|
|
248
|
-
'NOT_IMPLEMENTED',
|
|
249
|
-
'Message signing is not supported by this adapter',
|
|
250
|
-
{ method: 'signMessage' },
|
|
251
|
-
);
|
|
252
|
-
},
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Signs typed data (EIP-712).
|
|
256
|
-
* Not implemented as it's not needed for contract transactions.
|
|
257
|
-
*/
|
|
258
|
-
async signTypedData(): Promise<Hex> {
|
|
259
|
-
throw new SignerError(
|
|
260
|
-
'NOT_IMPLEMENTED',
|
|
261
|
-
'Typed data signing is not supported by this adapter',
|
|
262
|
-
{ method: 'signTypedData' },
|
|
263
|
-
);
|
|
264
|
-
},
|
|
265
|
-
};
|
|
266
|
-
|
|
267
|
-
return customAccount;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Creates a Viem wallet client from a SignerAdapter.
|
|
272
|
-
* This is a convenience wrapper around createAccountFromSigner.
|
|
273
|
-
*
|
|
274
|
-
* @param signer - The SignerAdapter to use
|
|
275
|
-
* @param address - The account address
|
|
276
|
-
* @param chainId - The chain ID
|
|
277
|
-
* @returns A Viem wallet client configured with the SignerAdapter
|
|
278
|
-
*
|
|
279
|
-
* @example
|
|
280
|
-
* ```ts
|
|
281
|
-
* const walletClient = createWalletClientFromSigner(
|
|
282
|
-
* bridgeEvmSigner,
|
|
283
|
-
* '0x1234...',
|
|
284
|
-
* ChainId.ethereum
|
|
285
|
-
* );
|
|
286
|
-
*
|
|
287
|
-
* // Use like any Viem wallet client
|
|
288
|
-
* await walletClient.writeContract({ ... });
|
|
289
|
-
* ```
|
|
290
|
-
*/
|
|
291
|
-
export function createWalletClientFromSigner(
|
|
292
|
-
signer: SignerAdapter,
|
|
293
|
-
address: Address,
|
|
294
|
-
chainId: ChainId,
|
|
295
|
-
): WalletClient {
|
|
296
|
-
const chain = CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId];
|
|
297
|
-
|
|
298
|
-
if (!chain) {
|
|
299
|
-
throw new SignerError(
|
|
300
|
-
'UNSUPPORTED_CHAIN',
|
|
301
|
-
`Chain ID ${chainId} is not supported`,
|
|
302
|
-
{ chainId },
|
|
303
|
-
);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
const account = createAccountFromSigner(signer, address, chainId);
|
|
307
|
-
|
|
308
|
-
return createWalletClient({
|
|
309
|
-
account,
|
|
310
|
-
chain,
|
|
311
|
-
transport: http(), // Uses default RPC
|
|
312
|
-
});
|
|
313
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Env } from '@lombard.finance/sdk-common';
|
|
2
|
-
import { Chain, createPublicClient, http, PublicClient } from 'viem';
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
CHAIN_ID_TO_VIEM_CHAIN_MAP,
|
|
6
|
-
ChainId,
|
|
7
|
-
getChain,
|
|
8
|
-
} from '../common/chains';
|
|
9
|
-
import { determineEnv } from '../utils/env';
|
|
10
|
-
import { getRpcUrlConfig } from './rpc-url-config';
|
|
11
|
-
|
|
12
|
-
type MakePublicClientParameters = {
|
|
13
|
-
chainId: ChainId;
|
|
14
|
-
rpcUrl?: string;
|
|
15
|
-
env?: Env;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Creates the public (read-only) client for specified `chainId`.
|
|
20
|
-
* @param chainId - The chain id
|
|
21
|
-
* @param rpcUrl - The overridden RPC url for specified chain id.
|
|
22
|
-
* @returns The public client instance
|
|
23
|
-
*/
|
|
24
|
-
export function makePublicClient({
|
|
25
|
-
chainId,
|
|
26
|
-
rpcUrl,
|
|
27
|
-
env,
|
|
28
|
-
}: MakePublicClientParameters): PublicClient {
|
|
29
|
-
const override = rpcUrl ? { [chainId]: rpcUrl } : undefined;
|
|
30
|
-
|
|
31
|
-
const environment = env || determineEnv(chainId);
|
|
32
|
-
const rpcUrlConfig = getRpcUrlConfig(environment);
|
|
33
|
-
|
|
34
|
-
const rpcUrls = { ...rpcUrlConfig, ...override };
|
|
35
|
-
|
|
36
|
-
let chain: Chain | undefined = CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId];
|
|
37
|
-
if (!chain) {
|
|
38
|
-
chain = getChain(chainId);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const transport = http(rpcUrls[chainId]);
|
|
42
|
-
|
|
43
|
-
const publicClient = createPublicClient({
|
|
44
|
-
chain,
|
|
45
|
-
transport,
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
return publicClient as PublicClient<typeof transport>;
|
|
49
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Env } from '@lombard.finance/sdk-common';
|
|
2
|
-
|
|
3
|
-
import { getApiConfig } from '../common/api-config';
|
|
4
|
-
import { ChainId } from '../common/chains';
|
|
5
|
-
|
|
6
|
-
export type TRpcUrlConfig = Record<number, string>;
|
|
7
|
-
|
|
8
|
-
export const RPC_URL = 'https://bff.prod.lombard-fi.com/multi-rpc/proxy';
|
|
9
|
-
|
|
10
|
-
export const rpcUrlConfig: TRpcUrlConfig = {
|
|
11
|
-
[ChainId.ethereum]: `${RPC_URL}/eth`,
|
|
12
|
-
[ChainId.base]: `${RPC_URL}/base`,
|
|
13
|
-
// [ChainId.binanceSmartChain]: 'https://bsc-dataseed.bnbchain.org',
|
|
14
|
-
[ChainId.binanceSmartChain]: `${RPC_URL}/bsc`,
|
|
15
|
-
[ChainId.corn]: `${RPC_URL}/corn_maizenet`,
|
|
16
|
-
[ChainId.katana]: `${RPC_URL}/katana`,
|
|
17
|
-
[ChainId.megaeth]:
|
|
18
|
-
'https://alpha.megaeth.com/rpc?user=lombard+v1&token=1763427229-%2Bx6HFUDu9OhJwV%2FTCFOL0xTt%2FPJRAXPeirIcuytvnes%3D',
|
|
19
|
-
[ChainId.sonic]: `${RPC_URL}/sonic_mainnet`,
|
|
20
|
-
[ChainId.stable]:
|
|
21
|
-
'https://partners-rpc.stable.xyz/lombard.075830647a2c30190712a9d102011ffe5a2a01d24ff3405f711d6ea8aca10baf', // TODO: Update with the correct RPC URL once the stable network is live
|
|
22
|
-
[ChainId.tac]: `${RPC_URL}/tac`,
|
|
23
|
-
[ChainId.monad]: `${RPC_URL}/monad_mainnet`,
|
|
24
|
-
// Testnets:
|
|
25
|
-
[ChainId.baseSepoliaTestnet]: `${RPC_URL}/base_sepolia`,
|
|
26
|
-
[ChainId.binanceSmartChainTestnet]:
|
|
27
|
-
'https://bsc-testnet-dataseed.bnbchain.org',
|
|
28
|
-
[ChainId.holesky]: `${RPC_URL}/eth_holesky`,
|
|
29
|
-
[ChainId.katanaTatara]: `${RPC_URL}/katana_tatara`,
|
|
30
|
-
[ChainId.sepolia]: `${RPC_URL}/eth_sepolia`,
|
|
31
|
-
// Use direct Sonic Labs RPC for testnet (proxy returns 403)
|
|
32
|
-
[ChainId.sonicBlazeTestnet]: 'https://rpc.blaze.soniclabs.com',
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export function getRpcUrlConfig(env: Env) {
|
|
36
|
-
const { bffApiUrl: baseUrl } = getApiConfig(env);
|
|
37
|
-
|
|
38
|
-
const proxy = `${baseUrl}/multi-rpc/proxy`;
|
|
39
|
-
|
|
40
|
-
return {
|
|
41
|
-
[ChainId.ethereum]: `${proxy}/eth`,
|
|
42
|
-
[ChainId.base]: `${proxy}/base`,
|
|
43
|
-
[ChainId.binanceSmartChain]: 'https://bsc-dataseed.bnbchain.org',
|
|
44
|
-
[ChainId.corn]: `${proxy}/corn_maizenet`,
|
|
45
|
-
[ChainId.katana]: `${proxy}/katana`,
|
|
46
|
-
[ChainId.monad]: `${proxy}/monad_mainnet`,
|
|
47
|
-
[ChainId.megaeth]:
|
|
48
|
-
'https://alpha.megaeth.com/rpc?user=lombard+v1&token=1763427229-%2Bx6HFUDu9OhJwV%2FTCFOL0xTt%2FPJRAXPeirIcuytvnes%3D',
|
|
49
|
-
[ChainId.sonic]: `${proxy}/sonic_mainnet`,
|
|
50
|
-
[ChainId.tac]: `${proxy}/tac`,
|
|
51
|
-
|
|
52
|
-
// Testnets:
|
|
53
|
-
[ChainId.baseSepoliaTestnet]: `${proxy}/base_sepolia`,
|
|
54
|
-
[ChainId.binanceSmartChainTestnet]:
|
|
55
|
-
'https://bsc-testnet-dataseed.bnbchain.org',
|
|
56
|
-
[ChainId.holesky]: `${proxy}/eth_holesky`,
|
|
57
|
-
[ChainId.katanaTatara]: `${proxy}/katana_tatara`,
|
|
58
|
-
[ChainId.sepolia]: `${proxy}/eth_sepolia`,
|
|
59
|
-
// Use direct Sonic Labs RPC for testnet (proxy returns 403)
|
|
60
|
-
[ChainId.sonicBlazeTestnet]: 'https://rpc.blaze.soniclabs.com',
|
|
61
|
-
[ChainId.stable]:
|
|
62
|
-
'https://partners-rpc.stable.xyz/lombard.075830647a2c30190712a9d102011ffe5a2a01d24ff3405f711d6ea8aca10baf',
|
|
63
|
-
} as TRpcUrlConfig;
|
|
64
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createWalletClient,
|
|
3
|
-
custom,
|
|
4
|
-
EIP1193Provider,
|
|
5
|
-
WalletClient,
|
|
6
|
-
} from 'viem';
|
|
7
|
-
|
|
8
|
-
import { CHAIN_ID_TO_VIEM_CHAIN_MAP, ChainId } from '../common/chains';
|
|
9
|
-
|
|
10
|
-
type MakeClientParameters = {
|
|
11
|
-
provider: EIP1193Provider;
|
|
12
|
-
chainId: ChainId;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Creates the client for specified `chainId`.
|
|
17
|
-
* @param chainId - The chain id
|
|
18
|
-
* @param rpcUrl - The overridden RPC url for specified chain id.
|
|
19
|
-
* @returns The public client instance
|
|
20
|
-
*/
|
|
21
|
-
export function makeWalletClient({
|
|
22
|
-
provider,
|
|
23
|
-
chainId,
|
|
24
|
-
}: MakeClientParameters): WalletClient {
|
|
25
|
-
const chain = CHAIN_ID_TO_VIEM_CHAIN_MAP[chainId];
|
|
26
|
-
const transport = custom(provider);
|
|
27
|
-
|
|
28
|
-
const client = createWalletClient({
|
|
29
|
-
chain,
|
|
30
|
-
transport,
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
return client as WalletClient<typeof transport>;
|
|
34
|
-
}
|