@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,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deposit Monitor Utility
|
|
3
|
-
*
|
|
4
|
-
* Shared monitoring logic for tracking Bitcoin deposit confirmations
|
|
5
|
-
* and minting status. Used by BtcStake, BtcDeposit, and BtcStakeAndDeploy actions.
|
|
6
|
-
*
|
|
7
|
-
* @module shared/monitoring/depositMonitor
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { StepStatus } from '../../core';
|
|
11
|
-
import type { BtcService } from '../../modules/btcModule';
|
|
12
|
-
|
|
13
|
-
/** Bitcoin network mode */
|
|
14
|
-
export type NetworkMode = 'mainnet' | 'testnet';
|
|
15
|
-
|
|
16
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
17
|
-
// Types
|
|
18
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Deposit information returned by fetch function
|
|
22
|
-
*/
|
|
23
|
-
export interface DepositInfo {
|
|
24
|
-
/** Block height where deposit was confirmed */
|
|
25
|
-
blockHeight?: number;
|
|
26
|
-
/** Whether LBTC has been minted/claimed */
|
|
27
|
-
isClaimed?: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Progress information emitted during monitoring
|
|
32
|
-
*/
|
|
33
|
-
export interface MonitorProgress {
|
|
34
|
-
/** Current confirmations */
|
|
35
|
-
confirmations: number;
|
|
36
|
-
/** Required confirmations for finality */
|
|
37
|
-
requiredConfirmations: number;
|
|
38
|
-
/** Whether deposit has enough confirmations */
|
|
39
|
-
hasEnoughConfirmations: boolean;
|
|
40
|
-
/** Whether LBTC has been claimed */
|
|
41
|
-
isClaimed: boolean;
|
|
42
|
-
/** Step statuses for UI */
|
|
43
|
-
steps: {
|
|
44
|
-
created: StepStatus;
|
|
45
|
-
verifying: StepStatus;
|
|
46
|
-
issuing: StepStatus;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Options for deposit monitoring
|
|
52
|
-
*/
|
|
53
|
-
export interface MonitorOptions {
|
|
54
|
-
/** Function to fetch deposit information */
|
|
55
|
-
fetchDeposit: () => Promise<DepositInfo | undefined>;
|
|
56
|
-
/** Bitcoin network mode */
|
|
57
|
-
network: NetworkMode;
|
|
58
|
-
/** BTC service for block height queries */
|
|
59
|
-
btcService: BtcService;
|
|
60
|
-
/** Number of confirmations required (default: 6) */
|
|
61
|
-
requiredConfirmations?: number;
|
|
62
|
-
/** Callback for progress updates */
|
|
63
|
-
onProgress?: (progress: MonitorProgress) => void;
|
|
64
|
-
/** Callback when deposit is fully claimed */
|
|
65
|
-
onComplete?: () => void;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
69
|
-
// Monitor Function
|
|
70
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Monitor a Bitcoin deposit for confirmations and minting
|
|
74
|
-
*
|
|
75
|
-
* This is a single-shot check. For continuous monitoring, call this
|
|
76
|
-
* function repeatedly with a timer/interval.
|
|
77
|
-
*
|
|
78
|
-
* @param options - Monitoring options
|
|
79
|
-
* @returns Progress information or undefined if deposit not found
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* ```typescript
|
|
83
|
-
* const progress = await monitorDeposit({
|
|
84
|
-
* fetchDeposit: async () => {
|
|
85
|
-
* const deposits = await getDepositsByAddress({ address, env });
|
|
86
|
-
* return deposits.find(d => d.depositAddress === myAddress);
|
|
87
|
-
* },
|
|
88
|
-
* network: 'mainnet',
|
|
89
|
-
* btcService: ctx.btc,
|
|
90
|
-
* onProgress: (p) => console.log(`${p.confirmations}/${p.requiredConfirmations}`),
|
|
91
|
-
* onComplete: () => console.log('Deposit complete!'),
|
|
92
|
-
* });
|
|
93
|
-
* ```
|
|
94
|
-
*/
|
|
95
|
-
export async function monitorDeposit(
|
|
96
|
-
options: MonitorOptions,
|
|
97
|
-
): Promise<MonitorProgress | undefined> {
|
|
98
|
-
const {
|
|
99
|
-
fetchDeposit,
|
|
100
|
-
network,
|
|
101
|
-
btcService,
|
|
102
|
-
requiredConfirmations = 6,
|
|
103
|
-
onProgress,
|
|
104
|
-
onComplete,
|
|
105
|
-
} = options;
|
|
106
|
-
|
|
107
|
-
// Fetch current deposit status
|
|
108
|
-
const deposit = await fetchDeposit();
|
|
109
|
-
if (!deposit) {
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const blockHeight = deposit.blockHeight;
|
|
114
|
-
if (typeof blockHeight !== 'number') {
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Get current block height and calculate confirmations
|
|
119
|
-
const currentBlockHeight = await btcService.getCurrentBlockHeight(network);
|
|
120
|
-
const confirmations = Math.max(0, currentBlockHeight - blockHeight);
|
|
121
|
-
const hasEnoughConfirmations = confirmations >= requiredConfirmations;
|
|
122
|
-
const isClaimed = deposit.isClaimed ?? false;
|
|
123
|
-
|
|
124
|
-
// Build progress object
|
|
125
|
-
const progress: MonitorProgress = {
|
|
126
|
-
confirmations,
|
|
127
|
-
requiredConfirmations,
|
|
128
|
-
hasEnoughConfirmations,
|
|
129
|
-
isClaimed,
|
|
130
|
-
steps: {
|
|
131
|
-
created: StepStatus.COMPLETE,
|
|
132
|
-
verifying: hasEnoughConfirmations
|
|
133
|
-
? StepStatus.COMPLETE
|
|
134
|
-
: StepStatus.PENDING,
|
|
135
|
-
issuing: isClaimed ? StepStatus.COMPLETE : StepStatus.PENDING,
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
// Emit callbacks
|
|
140
|
-
onProgress?.(progress);
|
|
141
|
-
if (isClaimed) {
|
|
142
|
-
onComplete?.();
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return progress;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Create a polling monitor that checks deposit status at intervals
|
|
150
|
-
*
|
|
151
|
-
* @param options - Monitoring options
|
|
152
|
-
* @param intervalMs - Polling interval in milliseconds (default: 30000)
|
|
153
|
-
* @returns Stop function to cancel monitoring
|
|
154
|
-
*
|
|
155
|
-
* @example
|
|
156
|
-
* ```typescript
|
|
157
|
-
* const stop = createPollingMonitor({
|
|
158
|
-
* fetchDeposit,
|
|
159
|
-
* network: 'mainnet',
|
|
160
|
-
* btcService: ctx.btc,
|
|
161
|
-
* onProgress: updateUI,
|
|
162
|
-
* onComplete: () => {
|
|
163
|
-
* stop(); // Stop polling when complete
|
|
164
|
-
* showSuccess();
|
|
165
|
-
* },
|
|
166
|
-
* }, 30000);
|
|
167
|
-
*
|
|
168
|
-
* // Later: stop monitoring
|
|
169
|
-
* stop();
|
|
170
|
-
* ```
|
|
171
|
-
*/
|
|
172
|
-
export function createPollingMonitor(
|
|
173
|
-
options: MonitorOptions,
|
|
174
|
-
intervalMs = 30000,
|
|
175
|
-
): () => void {
|
|
176
|
-
let stopped = false;
|
|
177
|
-
let timeoutId: ReturnType<typeof setTimeout> | undefined;
|
|
178
|
-
|
|
179
|
-
const poll = async () => {
|
|
180
|
-
if (stopped) return;
|
|
181
|
-
|
|
182
|
-
try {
|
|
183
|
-
const progress = await monitorDeposit(options);
|
|
184
|
-
|
|
185
|
-
// Stop polling if claimed
|
|
186
|
-
if (progress?.isClaimed) {
|
|
187
|
-
stopped = true;
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
} catch (error) {
|
|
191
|
-
// Continue polling on error
|
|
192
|
-
console.warn('Deposit monitor poll failed:', error);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// Schedule next poll
|
|
196
|
-
if (!stopped) {
|
|
197
|
-
timeoutId = setTimeout(poll, intervalMs);
|
|
198
|
-
}
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
// Start polling
|
|
202
|
-
poll();
|
|
203
|
-
|
|
204
|
-
// Return stop function
|
|
205
|
-
return () => {
|
|
206
|
-
stopped = true;
|
|
207
|
-
if (timeoutId) {
|
|
208
|
-
clearTimeout(timeoutId);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Monitoring Utilities
|
|
3
|
-
*
|
|
4
|
-
* @module shared/monitoring
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export {
|
|
8
|
-
createPollingMonitor,
|
|
9
|
-
type DepositInfo,
|
|
10
|
-
monitorDeposit,
|
|
11
|
-
type MonitorOptions,
|
|
12
|
-
type MonitorProgress,
|
|
13
|
-
type NetworkMode,
|
|
14
|
-
} from './depositMonitor';
|
|
15
|
-
|
|
16
|
-
// Re-export existing utilities
|
|
17
|
-
export {
|
|
18
|
-
createEventEmitter,
|
|
19
|
-
type EventEmitter,
|
|
20
|
-
type EventHandler,
|
|
21
|
-
} from './createEventEmitter';
|
|
22
|
-
export {
|
|
23
|
-
createProgressEmitter,
|
|
24
|
-
type ProgressEmitter,
|
|
25
|
-
} from './createProgressEmitter';
|
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validation Schemas
|
|
3
|
-
*
|
|
4
|
-
* Centralized Zod schemas for validating SDK inputs.
|
|
5
|
-
* These provide type-safe, declarative validation with clear error messages.
|
|
6
|
-
*
|
|
7
|
-
* @module shared/validation
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import * as bitcoin from 'bitcoinjs-lib';
|
|
11
|
-
import { z } from 'zod';
|
|
12
|
-
|
|
13
|
-
import { MIN_STAKE_AMOUNT_BTC } from '../../common/constants';
|
|
14
|
-
|
|
15
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
16
|
-
// Address Validation Helpers
|
|
17
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Validate a Bitcoin address using bitcoinjs-lib
|
|
21
|
-
* This validates the checksum for all address types:
|
|
22
|
-
* - Legacy P2PKH (1..., m..., n...)
|
|
23
|
-
* - P2SH (3..., 2...)
|
|
24
|
-
* - SegWit bech32 (bc1q..., tb1q...)
|
|
25
|
-
* - Taproot bech32m (bc1p..., tb1p...)
|
|
26
|
-
*
|
|
27
|
-
* @param address - The address to validate
|
|
28
|
-
* @returns true if valid, false otherwise
|
|
29
|
-
*/
|
|
30
|
-
export function isValidBitcoinAddress(address: string): boolean {
|
|
31
|
-
if (!address || typeof address !== 'string') {
|
|
32
|
-
return false;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Bech32/Bech32m addresses (bc1..., tb1...)
|
|
36
|
-
if (address.startsWith('bc1') || address.startsWith('tb1')) {
|
|
37
|
-
try {
|
|
38
|
-
bitcoin.address.fromBech32(address);
|
|
39
|
-
return true;
|
|
40
|
-
} catch {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Legacy and P2SH addresses (base58check)
|
|
46
|
-
try {
|
|
47
|
-
bitcoin.address.fromBase58Check(address);
|
|
48
|
-
return true;
|
|
49
|
-
} catch {
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Validate a Solana address (base58 with proper structure)
|
|
56
|
-
* Solana addresses are ed25519 public keys encoded in base58
|
|
57
|
-
*
|
|
58
|
-
* Note: Unlike Bitcoin, Solana addresses don't have a built-in checksum.
|
|
59
|
-
* We validate that the address decodes to exactly 32 bytes.
|
|
60
|
-
*
|
|
61
|
-
* @param address - The address to validate
|
|
62
|
-
* @returns true if valid, false otherwise
|
|
63
|
-
*/
|
|
64
|
-
export function isValidSolanaAddress(address: string): boolean {
|
|
65
|
-
// Base58 character set (no 0, O, I, l)
|
|
66
|
-
const base58Regex = /^[1-9A-HJ-NP-Za-km-z]+$/;
|
|
67
|
-
|
|
68
|
-
if (!address || typeof address !== 'string') {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (!base58Regex.test(address)) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Solana addresses are exactly 32 bytes when decoded
|
|
77
|
-
// In base58, this results in 32-44 characters
|
|
78
|
-
if (address.length < 32 || address.length > 44) {
|
|
79
|
-
return false;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Validate the base58 decoding produces exactly 32 bytes
|
|
83
|
-
try {
|
|
84
|
-
const decoded = decodeBase58(address);
|
|
85
|
-
return decoded.length === 32;
|
|
86
|
-
} catch {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Base58 decoder for validation purposes
|
|
93
|
-
* Based on the Bitcoin/Solana base58 alphabet
|
|
94
|
-
*/
|
|
95
|
-
function decodeBase58(str: string): Uint8Array {
|
|
96
|
-
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
97
|
-
const ALPHABET_MAP: Record<string, number> = {};
|
|
98
|
-
for (let i = 0; i < ALPHABET.length; i++) {
|
|
99
|
-
ALPHABET_MAP[ALPHABET[i]] = i;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (str.length === 0) {
|
|
103
|
-
return new Uint8Array(0);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// Count leading zeros (represented by '1' in base58)
|
|
107
|
-
let leadingZeros = 0;
|
|
108
|
-
for (let i = 0; i < str.length && str[i] === '1'; i++) {
|
|
109
|
-
leadingZeros++;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Decode the rest
|
|
113
|
-
const size = Math.ceil((str.length * Math.log(58)) / Math.log(256));
|
|
114
|
-
const bytes = new Uint8Array(size);
|
|
115
|
-
|
|
116
|
-
for (let i = leadingZeros; i < str.length; i++) {
|
|
117
|
-
const value = ALPHABET_MAP[str[i]];
|
|
118
|
-
if (value === undefined) {
|
|
119
|
-
throw new Error(`Invalid base58 character: ${str[i]}`);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
let carry = value;
|
|
123
|
-
for (let j = size - 1; j >= 0; j--) {
|
|
124
|
-
carry += 58 * bytes[j];
|
|
125
|
-
bytes[j] = carry % 256;
|
|
126
|
-
carry = Math.floor(carry / 256);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Find first non-zero byte
|
|
131
|
-
let firstNonZero = 0;
|
|
132
|
-
while (firstNonZero < bytes.length && bytes[firstNonZero] === 0) {
|
|
133
|
-
firstNonZero++;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Combine leading zeros with decoded bytes
|
|
137
|
-
const result = new Uint8Array(leadingZeros + (bytes.length - firstNonZero));
|
|
138
|
-
result.fill(0, 0, leadingZeros);
|
|
139
|
-
result.set(bytes.subarray(firstNonZero), leadingZeros);
|
|
140
|
-
|
|
141
|
-
return result;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
145
|
-
// Amount Schemas
|
|
146
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Create an amount schema with configurable minimum
|
|
150
|
-
*
|
|
151
|
-
* @param minAmount - Minimum amount in human-readable format (e.g., 0.0002)
|
|
152
|
-
* @returns Zod schema for amount validation
|
|
153
|
-
*/
|
|
154
|
-
export function createAmountSchema(minAmount?: number) {
|
|
155
|
-
const baseSchema = z
|
|
156
|
-
.string({ message: 'Amount is required' })
|
|
157
|
-
.min(1, 'Amount is required')
|
|
158
|
-
.refine(val => val !== '0', {
|
|
159
|
-
message: 'Amount must be greater than 0',
|
|
160
|
-
})
|
|
161
|
-
.refine(
|
|
162
|
-
val => {
|
|
163
|
-
const num = Number.parseFloat(val);
|
|
164
|
-
return !Number.isNaN(num) && num > 0;
|
|
165
|
-
},
|
|
166
|
-
{ message: 'Invalid amount format' },
|
|
167
|
-
);
|
|
168
|
-
|
|
169
|
-
if (minAmount !== undefined && minAmount > 0) {
|
|
170
|
-
return baseSchema.refine(
|
|
171
|
-
val => {
|
|
172
|
-
const num = Number.parseFloat(val);
|
|
173
|
-
return num >= minAmount;
|
|
174
|
-
},
|
|
175
|
-
{ message: `Amount must be at least ${minAmount}` },
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return baseSchema;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Amount validation (human-readable string, e.g., "0.1")
|
|
184
|
-
*
|
|
185
|
-
* Validates:
|
|
186
|
-
* - Non-empty string
|
|
187
|
-
* - Not "0"
|
|
188
|
-
* - Parses to positive number
|
|
189
|
-
*
|
|
190
|
-
* Used for both BTC and EVM amounts.
|
|
191
|
-
*/
|
|
192
|
-
export const amountSchema = createAmountSchema();
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* BTC stake amount schema with minimum 0.0002 BTC
|
|
196
|
-
*/
|
|
197
|
-
export const btcStakeAmountSchema = createAmountSchema(MIN_STAKE_AMOUNT_BTC);
|
|
198
|
-
|
|
199
|
-
/** @deprecated Use amountSchema instead */
|
|
200
|
-
export const btcAmountSchema = amountSchema;
|
|
201
|
-
|
|
202
|
-
/** Alias for EVM operations */
|
|
203
|
-
export const evmAmountSchema = amountSchema;
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Satoshi amount validation (bigint or number)
|
|
207
|
-
*/
|
|
208
|
-
export const satoshiAmountSchema = z
|
|
209
|
-
.union([z.bigint(), z.number()])
|
|
210
|
-
.refine(val => val > 0, { message: 'Amount must be greater than 0' });
|
|
211
|
-
|
|
212
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
213
|
-
// Address Schemas
|
|
214
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* EVM address validation (0x + 40 hex chars)
|
|
218
|
-
*/
|
|
219
|
-
export const evmAddressSchema = z
|
|
220
|
-
.string({ message: 'Address is required' })
|
|
221
|
-
.regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid EVM address format');
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Solana address validation (base58, exactly 32 bytes when decoded)
|
|
225
|
-
* Uses proper base58 decoding to verify the address structure
|
|
226
|
-
*/
|
|
227
|
-
export const solanaAddressSchema = z
|
|
228
|
-
.string({ message: 'Address is required' })
|
|
229
|
-
.refine(isValidSolanaAddress, { message: 'Invalid Solana address format' });
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Sui address validation (0x + 64 hex chars)
|
|
233
|
-
*/
|
|
234
|
-
export const suiAddressSchema = z
|
|
235
|
-
.string({ message: 'Address is required' })
|
|
236
|
-
.regex(/^0x[a-fA-F0-9]{64}$/, 'Invalid Sui address format');
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Starknet address validation (0x + 1-64 hex chars)
|
|
240
|
-
*/
|
|
241
|
-
export const starknetAddressSchema = z
|
|
242
|
-
.string({ message: 'Address is required' })
|
|
243
|
-
.regex(/^0x[a-fA-F0-9]{1,64}$/, 'Invalid Starknet address format');
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Bitcoin address validation with proper checksum verification
|
|
247
|
-
* Uses bitcoinjs-lib to validate all address formats:
|
|
248
|
-
* - Legacy P2PKH (1..., m..., n...)
|
|
249
|
-
* - P2SH (3..., 2...)
|
|
250
|
-
* - SegWit bech32 (bc1q..., tb1q...)
|
|
251
|
-
* - Taproot bech32m (bc1p..., tb1p...)
|
|
252
|
-
*/
|
|
253
|
-
export const bitcoinAddressSchema = z
|
|
254
|
-
.string({ message: 'Address is required' })
|
|
255
|
-
.refine(isValidBitcoinAddress, { message: 'Invalid Bitcoin address format' });
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Map of chain type to address schema
|
|
259
|
-
*/
|
|
260
|
-
export const addressSchemasByChainType = {
|
|
261
|
-
evm: evmAddressSchema,
|
|
262
|
-
solana: solanaAddressSchema,
|
|
263
|
-
sui: suiAddressSchema,
|
|
264
|
-
starknet: starknetAddressSchema,
|
|
265
|
-
bitcoin: bitcoinAddressSchema,
|
|
266
|
-
} as const;
|
|
267
|
-
|
|
268
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
269
|
-
// Common Schemas
|
|
270
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* Referral code validation (optional string)
|
|
274
|
-
*/
|
|
275
|
-
export const referralCodeSchema = z.string().optional();
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Transaction hash validation (0x + 64 hex chars)
|
|
279
|
-
*/
|
|
280
|
-
export const txHashSchema = z
|
|
281
|
-
.string()
|
|
282
|
-
.regex(/^0x[a-fA-F0-9]{64}$/, 'Invalid transaction hash');
|
|
283
|
-
|
|
284
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
285
|
-
// BTC Stake Schemas
|
|
286
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* BTC Stake prepare params schema (base - recipient validated separately per chain)
|
|
290
|
-
*/
|
|
291
|
-
export const btcStakePrepareBaseSchema = z.object({
|
|
292
|
-
amount: btcStakeAmountSchema,
|
|
293
|
-
recipient: z
|
|
294
|
-
.string({ message: 'Recipient is required' })
|
|
295
|
-
.min(1, 'Recipient is required'),
|
|
296
|
-
referralCode: referralCodeSchema,
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Create a prepare schema with chain-specific address validation
|
|
301
|
-
*/
|
|
302
|
-
export function createBtcStakePrepareSchema(addressSchema: z.ZodString) {
|
|
303
|
-
return z.object({
|
|
304
|
-
amount: btcStakeAmountSchema,
|
|
305
|
-
recipient: addressSchema,
|
|
306
|
-
referralCode: referralCodeSchema,
|
|
307
|
-
});
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
311
|
-
// Type Exports
|
|
312
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
313
|
-
|
|
314
|
-
export type Amount = z.infer<typeof amountSchema>;
|
|
315
|
-
/** @deprecated Use Amount instead */
|
|
316
|
-
export type BtcAmount = Amount;
|
|
317
|
-
export type EvmAddress = z.infer<typeof evmAddressSchema>;
|
|
318
|
-
export type SolanaAddress = z.infer<typeof solanaAddressSchema>;
|
|
319
|
-
export type SuiAddress = z.infer<typeof suiAddressSchema>;
|
|
320
|
-
export type StarknetAddress = z.infer<typeof starknetAddressSchema>;
|
|
321
|
-
export type BitcoinAddress = z.infer<typeof bitcoinAddressSchema>;
|
|
322
|
-
export type BtcStakePrepareParams = z.infer<typeof btcStakePrepareBaseSchema>;
|
|
323
|
-
|
|
324
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
325
|
-
// Validation Helpers
|
|
326
|
-
// ═══════════════════════════════════════════════════════════════════════════
|
|
327
|
-
|
|
328
|
-
import type { Chain } from '../../core';
|
|
329
|
-
import { LombardError } from '../errors';
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* Validation error handler configuration
|
|
333
|
-
*/
|
|
334
|
-
export interface ValidationErrorConfig {
|
|
335
|
-
/** Chain for address validation errors (optional) */
|
|
336
|
-
destChain?: Chain;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
/**
|
|
340
|
-
* Validate prepare params with standard error handling
|
|
341
|
-
*
|
|
342
|
-
* This helper provides consistent Zod validation with LombardError mapping:
|
|
343
|
-
* - 'amount' field → LombardError.invalidAmount()
|
|
344
|
-
* - 'recipient' field → LombardError.invalidAddress()
|
|
345
|
-
* - Other fields → LombardError.invalidParameter()
|
|
346
|
-
*
|
|
347
|
-
* @example
|
|
348
|
-
* ```typescript
|
|
349
|
-
* private validatePrepareParams(params: PrepareParams) {
|
|
350
|
-
* return validatePrepareParams(this.prepareSchema, params, {
|
|
351
|
-
* destChain: this.params.destChain,
|
|
352
|
-
* });
|
|
353
|
-
* }
|
|
354
|
-
* ```
|
|
355
|
-
*/
|
|
356
|
-
export function validatePrepareParams<T>(
|
|
357
|
-
schema: z.ZodSchema<T>,
|
|
358
|
-
params: unknown,
|
|
359
|
-
config: ValidationErrorConfig = {},
|
|
360
|
-
): T {
|
|
361
|
-
const result = schema.safeParse(params);
|
|
362
|
-
|
|
363
|
-
if (!result.success) {
|
|
364
|
-
const firstIssue = result.error.issues[0];
|
|
365
|
-
const path = firstIssue?.path[0];
|
|
366
|
-
const message = firstIssue?.message ?? 'Invalid parameter';
|
|
367
|
-
|
|
368
|
-
if (path === 'amount') {
|
|
369
|
-
throw LombardError.invalidAmount(message);
|
|
370
|
-
}
|
|
371
|
-
if (path === 'recipient') {
|
|
372
|
-
throw LombardError.invalidAddress(
|
|
373
|
-
(params as Record<string, unknown>)?.recipient as string,
|
|
374
|
-
config.destChain,
|
|
375
|
-
);
|
|
376
|
-
}
|
|
377
|
-
throw LombardError.invalidParameter(String(path), message);
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
return result.data;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* Validate and parse input, throwing error on failure
|
|
385
|
-
*/
|
|
386
|
-
export function validateOrThrow<T>(
|
|
387
|
-
schema: z.ZodSchema<T>,
|
|
388
|
-
data: unknown,
|
|
389
|
-
errorFactory: (message: string) => Error,
|
|
390
|
-
): T {
|
|
391
|
-
const result = schema.safeParse(data);
|
|
392
|
-
if (!result.success) {
|
|
393
|
-
const firstIssue = result.error.issues[0];
|
|
394
|
-
throw errorFactory(firstIssue?.message ?? 'Validation failed');
|
|
395
|
-
}
|
|
396
|
-
return result.data;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
/**
|
|
400
|
-
* Validate input, returning result object
|
|
401
|
-
*/
|
|
402
|
-
export function validate<T>(
|
|
403
|
-
schema: z.ZodSchema<T>,
|
|
404
|
-
data: unknown,
|
|
405
|
-
): { success: true; data: T } | { success: false; error: z.ZodError } {
|
|
406
|
-
const result = schema.safeParse(data);
|
|
407
|
-
if (result.success) {
|
|
408
|
-
return { success: true, data: result.data };
|
|
409
|
-
}
|
|
410
|
-
return { success: false, error: result.error };
|
|
411
|
-
}
|
package/src/stories/arg-types.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Env } from '@lombard.finance/sdk-common';
|
|
2
|
-
import { ArgTypes } from 'storybook/internal/types';
|
|
3
|
-
|
|
4
|
-
import { ChainId } from '../common/chains';
|
|
5
|
-
import { Token } from '../tokens/token-addresses';
|
|
6
|
-
|
|
7
|
-
export const chainSelector: Partial<ArgTypes> = {
|
|
8
|
-
chainId: {
|
|
9
|
-
mapping: ChainId,
|
|
10
|
-
options: Object.keys(ChainId),
|
|
11
|
-
control: { type: 'select' },
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export const envSelector: Partial<ArgTypes> = {
|
|
16
|
-
env: {
|
|
17
|
-
mapping: Env,
|
|
18
|
-
options: Object.keys(Env),
|
|
19
|
-
control: { type: 'select' },
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
export const makeTokenSelector = (
|
|
24
|
-
tokens?: Token[],
|
|
25
|
-
fieldName = 'token',
|
|
26
|
-
): Partial<ArgTypes> => ({
|
|
27
|
-
[fieldName]: {
|
|
28
|
-
mapping: Token,
|
|
29
|
-
options: Object.keys(Token).filter(tk => {
|
|
30
|
-
if (!tokens) return true;
|
|
31
|
-
|
|
32
|
-
const entries = Object.entries(Token);
|
|
33
|
-
const keys = tokens.map(tv => entries.find(([, v]) => v === tv)?.[0]);
|
|
34
|
-
return keys.includes(tk);
|
|
35
|
-
}),
|
|
36
|
-
control: { type: 'select' },
|
|
37
|
-
},
|
|
38
|
-
});
|