@subwallet/extension-base 1.2.31-0 → 1.2.33-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/KoniTypes.d.ts +78 -227
- package/background/KoniTypes.js +3 -40
- package/background/errors/SWError.d.ts +4 -7
- package/background/errors/SWError.js +4 -0
- package/background/errors/TransactionError.d.ts +2 -2
- package/background/errors/TransactionError.js +2 -4
- package/background/handlers/State.d.ts +0 -12
- package/background/types.d.ts +9 -134
- package/background/warnings/TransactionWarning.d.ts +1 -1
- package/background/warnings/TransactionWarning.js +5 -1
- package/cjs/background/KoniTypes.js +4 -44
- package/cjs/background/errors/SWError.js +4 -0
- package/cjs/background/errors/TransactionError.js +13 -15
- package/cjs/background/warnings/TransactionWarning.js +6 -2
- package/cjs/constants/environment.js +13 -0
- package/cjs/constants/index.js +40 -13
- package/cjs/constants/signing.js +23 -0
- package/cjs/constants/storage.js +4 -2
- package/cjs/core/consts.js +20 -0
- package/cjs/core/logic-validation/recipientAddress.js +106 -0
- package/cjs/core/logic-validation/request.js +11 -19
- package/cjs/core/logic-validation/swap.js +5 -5
- package/cjs/core/logic-validation/transfer.js +83 -42
- package/cjs/core/types.js +26 -0
- package/cjs/core/utils.js +113 -0
- package/cjs/koni/api/dotsama/crowdloan.js +1 -1
- package/cjs/koni/api/nft/index.js +14 -5
- package/cjs/koni/api/staking/bonding/paraChain.js +8 -8
- package/cjs/koni/api/staking/bonding/relayChain.js +9 -9
- package/cjs/koni/api/staking/index.js +4 -1
- package/cjs/koni/background/cron.js +7 -7
- package/cjs/koni/background/handlers/Extension.js +510 -1446
- package/cjs/koni/background/handlers/State.js +61 -238
- package/cjs/koni/background/handlers/Tabs.js +143 -107
- package/cjs/koni/background/subscription.js +5 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/Accounts.js +2 -5
- package/cjs/page/SubWalleEvmProvider.js +1 -1
- package/cjs/page/index.js +2 -1
- package/cjs/services/balance-service/BalanceMapImpl.js +48 -20
- package/cjs/services/balance-service/helpers/subscribe/index.js +27 -15
- package/cjs/services/balance-service/helpers/subscribe/ton/consts.js +40 -0
- package/cjs/services/balance-service/helpers/subscribe/ton/ton.js +120 -0
- package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +181 -0
- package/cjs/services/balance-service/index.js +25 -13
- package/cjs/services/balance-service/transfer/token.js +41 -24
- package/cjs/services/balance-service/transfer/ton-transfer.js +136 -0
- package/cjs/services/buy-service/index.js +5 -1
- package/cjs/services/chain-service/constants.js +1 -1
- package/cjs/services/chain-service/handler/SubstrateApi.js +1 -0
- package/cjs/services/chain-service/handler/TonApi.js +213 -0
- package/cjs/services/chain-service/handler/TonChainHandler.js +81 -0
- package/cjs/services/chain-service/index.js +32 -8
- package/cjs/services/chain-service/utils/index.js +78 -22
- package/cjs/services/earning-service/constants/chains.js +3 -1
- package/cjs/services/earning-service/handlers/base.js +2 -1
- package/cjs/services/earning-service/handlers/lending/base.js +8 -9
- package/cjs/services/earning-service/handlers/lending/interlay.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +9 -10
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/astar.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +13 -13
- package/cjs/services/earning-service/handlers/native-staking/base.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +15 -15
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +14 -14
- package/cjs/services/earning-service/handlers/special.js +10 -10
- package/cjs/services/earning-service/service.js +26 -17
- package/cjs/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
- package/cjs/services/history-service/index.js +29 -11
- package/cjs/services/history-service/subscan-history.js +9 -21
- package/cjs/services/keyring-service/context/account-context.js +259 -0
- package/cjs/services/keyring-service/context/handlers/Base.js +20 -0
- package/cjs/services/keyring-service/context/handlers/Derive.js +377 -0
- package/cjs/services/keyring-service/context/handlers/Inject.js +75 -0
- package/cjs/services/keyring-service/context/handlers/Json.js +348 -0
- package/cjs/services/keyring-service/context/handlers/Ledger.js +165 -0
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +218 -0
- package/cjs/services/keyring-service/context/handlers/Modify.js +258 -0
- package/cjs/services/keyring-service/context/handlers/Secret.js +310 -0
- package/cjs/services/keyring-service/context/handlers/index.js +82 -0
- package/cjs/services/keyring-service/context/state.js +649 -0
- package/cjs/services/keyring-service/context/stores/AccountProxy.js +32 -0
- package/cjs/services/keyring-service/context/stores/Base.js +37 -0
- package/cjs/services/keyring-service/context/stores/CurrentAccount.js +28 -0
- package/cjs/services/keyring-service/context/stores/ModifyPair.js +19 -0
- package/cjs/services/keyring-service/context/stores/index.js +38 -0
- package/cjs/services/keyring-service/index.js +20 -164
- package/cjs/services/migration-service/scripts/index.js +6 -4
- package/cjs/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
- package/cjs/services/migration-service/scripts/keyring/MigratePairData.js +28 -0
- package/cjs/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
- package/cjs/services/request-service/constants.js +5 -3
- package/cjs/services/request-service/handler/AuthRequestHandler.js +104 -57
- package/cjs/services/request-service/handler/EvmRequestHandler.js +3 -4
- package/cjs/services/request-service/handler/SubstrateRequestHandler.js +5 -11
- package/cjs/services/request-service/handler/TonRequestHandler.js +175 -0
- package/cjs/services/request-service/index.js +24 -5
- package/cjs/services/swap-service/handler/asset-hub/handler.js +6 -5
- package/cjs/services/swap-service/handler/base-handler.js +8 -8
- package/cjs/services/swap-service/handler/chainflip-handler.js +5 -4
- package/cjs/services/swap-service/handler/hydradx-handler.js +4 -3
- package/cjs/services/swap-service/index.js +4 -4
- package/cjs/services/transaction-service/helpers/index.js +6 -1
- package/cjs/services/transaction-service/index.js +184 -84
- package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
- package/cjs/stores/AccountProxyStore.js +18 -0
- package/cjs/stores/ModifyPairStore.js +18 -0
- package/cjs/stores/index.js +23 -2
- package/cjs/types/account/action/add/index.js +38 -0
- package/cjs/types/account/action/add/json.js +1 -0
- package/cjs/types/account/action/add/mnemonic.js +1 -0
- package/cjs/types/account/action/add/secret.js +1 -0
- package/cjs/types/account/action/derive.js +1 -0
- package/cjs/types/account/action/edit.js +1 -0
- package/cjs/types/account/action/export.js +1 -0
- package/cjs/types/account/action/index.js +71 -0
- package/cjs/types/account/action/subscribe.js +16 -0
- package/cjs/types/account/action/validate.js +1 -0
- package/cjs/types/account/error/common.js +40 -0
- package/cjs/types/account/error/derive.js +55 -0
- package/cjs/types/account/error/index.js +27 -0
- package/cjs/types/account/index.js +38 -0
- package/cjs/types/account/info/current.js +1 -0
- package/cjs/types/account/info/index.js +38 -0
- package/cjs/types/account/info/keyring.js +90 -0
- package/cjs/types/account/info/proxy.js +49 -0
- package/cjs/types/error.js +1 -0
- package/cjs/types/index.js +44 -0
- package/cjs/types/transaction/data.js +1 -0
- package/cjs/types/transaction/error.js +53 -0
- package/cjs/types/transaction/index.js +49 -0
- package/cjs/types/transaction/request.js +1 -0
- package/cjs/types/transaction/warning.js +14 -0
- package/cjs/types/yield/actions/join/validate.js +1 -16
- package/cjs/utils/account/analyze.js +166 -0
- package/cjs/utils/account/common.js +121 -0
- package/cjs/utils/account/derive/index.js +27 -0
- package/cjs/utils/account/derive/info/index.js +27 -0
- package/cjs/utils/account/derive/info/solo.js +246 -0
- package/cjs/utils/account/derive/info/unified.js +112 -0
- package/cjs/utils/account/derive/validate.js +177 -0
- package/cjs/utils/account/index.js +49 -0
- package/cjs/utils/account/transform.js +566 -0
- package/cjs/utils/auth.js +46 -0
- package/cjs/utils/getId.js +8 -1
- package/cjs/utils/index.js +48 -62
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +6 -0
- package/constants/index.d.ts +5 -1
- package/constants/index.js +5 -2
- package/constants/signing.d.ts +4 -0
- package/constants/signing.js +15 -0
- package/constants/storage.d.ts +1 -0
- package/constants/storage.js +2 -1
- package/core/consts.d.ts +1 -0
- package/core/consts.js +13 -0
- package/core/logic-validation/recipientAddress.d.ts +2 -0
- package/core/logic-validation/recipientAddress.js +100 -0
- package/core/logic-validation/request.js +10 -18
- package/core/logic-validation/swap.js +1 -1
- package/core/logic-validation/transfer.d.ts +3 -2
- package/core/logic-validation/transfer.js +50 -10
- package/core/types.d.ts +26 -0
- package/core/types.js +19 -0
- package/core/utils.d.ts +10 -0
- package/core/utils.js +105 -0
- package/koni/api/dotsama/crowdloan.js +1 -1
- package/koni/api/nft/index.js +14 -5
- package/koni/api/staking/bonding/paraChain.js +2 -2
- package/koni/api/staking/bonding/relayChain.js +2 -2
- package/koni/api/staking/index.js +4 -1
- package/koni/background/cron.js +7 -7
- package/koni/background/handlers/Extension.d.ts +26 -35
- package/koni/background/handlers/Extension.js +337 -1242
- package/koni/background/handlers/State.d.ts +12 -19
- package/koni/background/handlers/State.js +57 -231
- package/koni/background/handlers/Tabs.d.ts +2 -3
- package/koni/background/handlers/Tabs.js +105 -61
- package/koni/background/subscription.js +5 -5
- package/package.json +352 -53
- package/packageInfo.js +1 -1
- package/page/Accounts.js +2 -5
- package/page/SubWalleEvmProvider.js +1 -1
- package/page/index.js +2 -1
- package/services/balance-service/BalanceMapImpl.d.ts +6 -4
- package/services/balance-service/BalanceMapImpl.js +44 -18
- package/services/balance-service/helpers/subscribe/index.d.ts +3 -4
- package/services/balance-service/helpers/subscribe/index.js +29 -17
- package/services/balance-service/helpers/subscribe/ton/consts.d.ts +18 -0
- package/services/balance-service/helpers/subscribe/ton/consts.js +28 -0
- package/services/balance-service/helpers/subscribe/ton/ton.d.ts +3 -0
- package/services/balance-service/helpers/subscribe/ton/ton.js +111 -0
- package/services/balance-service/helpers/subscribe/ton/types.d.ts +26 -0
- package/services/balance-service/helpers/subscribe/ton/utils.d.ts +32 -0
- package/services/balance-service/helpers/subscribe/ton/utils.js +159 -0
- package/services/balance-service/index.js +25 -13
- package/services/balance-service/transfer/token.d.ts +2 -2
- package/services/balance-service/transfer/token.js +18 -1
- package/services/balance-service/transfer/ton-transfer.d.ts +25 -0
- package/services/balance-service/transfer/ton-transfer.js +127 -0
- package/services/buy-service/index.js +5 -1
- package/services/buy-service/types.d.ts +2 -2
- package/services/chain-service/constants.js +1 -1
- package/services/chain-service/handler/SubstrateApi.js +1 -0
- package/services/chain-service/handler/TonApi.d.ts +52 -0
- package/services/chain-service/handler/TonApi.js +204 -0
- package/services/chain-service/handler/TonChainHandler.d.ts +17 -0
- package/services/chain-service/handler/TonChainHandler.js +73 -0
- package/services/chain-service/index.d.ts +5 -1
- package/services/chain-service/index.js +32 -8
- package/services/chain-service/types.d.ts +24 -0
- package/services/chain-service/utils/index.d.ts +10 -2
- package/services/chain-service/utils/index.js +59 -18
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +1 -0
- package/services/earning-service/handlers/base.js +3 -2
- package/services/earning-service/handlers/lending/base.js +1 -2
- package/services/earning-service/handlers/lending/interlay.js +2 -2
- package/services/earning-service/handlers/liquid-staking/base.js +1 -2
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
- package/services/earning-service/handlers/native-staking/amplitude.js +2 -2
- package/services/earning-service/handlers/native-staking/astar.js +2 -2
- package/services/earning-service/handlers/native-staking/base-para.js +2 -2
- package/services/earning-service/handlers/native-staking/base.js +2 -2
- package/services/earning-service/handlers/native-staking/para-chain.js +2 -2
- package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
- package/services/earning-service/handlers/nomination-pool/index.js +2 -2
- package/services/earning-service/handlers/special.js +2 -2
- package/services/earning-service/service.js +18 -9
- package/services/event-service/types.d.ts +3 -1
- package/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
- package/services/history-service/index.d.ts +4 -1
- package/services/history-service/index.js +29 -11
- package/services/history-service/subscan-history.js +8 -20
- package/services/keyring-service/context/account-context.d.ts +87 -0
- package/services/keyring-service/context/account-context.js +250 -0
- package/services/keyring-service/context/handlers/Base.d.ts +11 -0
- package/services/keyring-service/context/handlers/Base.js +13 -0
- package/services/keyring-service/context/handlers/Derive.d.ts +29 -0
- package/services/keyring-service/context/handlers/Derive.js +365 -0
- package/services/keyring-service/context/handlers/Inject.d.ts +11 -0
- package/services/keyring-service/context/handlers/Inject.js +69 -0
- package/services/keyring-service/context/handlers/Json.d.ts +18 -0
- package/services/keyring-service/context/handlers/Json.js +328 -0
- package/services/keyring-service/context/handlers/Ledger.d.ts +11 -0
- package/services/keyring-service/context/handlers/Ledger.js +158 -0
- package/services/keyring-service/context/handlers/Mnemonic.d.ts +15 -0
- package/services/keyring-service/context/handlers/Mnemonic.js +206 -0
- package/services/keyring-service/context/handlers/Modify.d.ts +16 -0
- package/services/keyring-service/context/handlers/Modify.js +250 -0
- package/services/keyring-service/context/handlers/Secret.d.ts +16 -0
- package/services/keyring-service/context/handlers/Secret.js +299 -0
- package/services/keyring-service/context/handlers/index.d.ts +7 -0
- package/services/keyring-service/context/handlers/index.js +10 -0
- package/services/keyring-service/context/state.d.ts +92 -0
- package/services/keyring-service/context/state.js +629 -0
- package/services/keyring-service/context/stores/AccountProxy.d.ts +13 -0
- package/services/keyring-service/context/stores/AccountProxy.js +25 -0
- package/services/keyring-service/context/stores/Base.d.ts +22 -0
- package/services/keyring-service/context/stores/Base.js +30 -0
- package/services/keyring-service/context/stores/CurrentAccount.d.ts +15 -0
- package/services/keyring-service/context/stores/CurrentAccount.js +21 -0
- package/services/keyring-service/context/stores/ModifyPair.d.ts +10 -0
- package/services/keyring-service/context/stores/ModifyPair.js +12 -0
- package/services/keyring-service/context/stores/index.d.ts +3 -0
- package/services/keyring-service/context/stores/index.js +6 -0
- package/services/keyring-service/index.d.ts +10 -22
- package/services/keyring-service/index.js +20 -161
- package/services/migration-service/scripts/index.js +6 -4
- package/services/migration-service/scripts/{MigrateLedgerAccountV2.d.ts → keyring/MigrateLedgerAccountV2.d.ts} +1 -1
- package/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
- package/services/migration-service/scripts/keyring/MigratePairData.d.ts +4 -0
- package/services/migration-service/scripts/keyring/MigratePairData.js +20 -0
- package/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
- package/services/mkt-campaign-service/types.d.ts +4 -0
- package/services/request-service/constants.d.ts +1 -1
- package/services/request-service/constants.js +2 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
- package/services/request-service/handler/AuthRequestHandler.js +93 -45
- package/services/request-service/handler/EvmRequestHandler.js +3 -4
- package/services/request-service/handler/SubstrateRequestHandler.d.ts +2 -2
- package/services/request-service/handler/SubstrateRequestHandler.js +5 -11
- package/services/request-service/handler/TonRequestHandler.d.ts +17 -0
- package/services/request-service/handler/TonRequestHandler.js +168 -0
- package/services/request-service/index.d.ts +8 -3
- package/services/request-service/index.js +23 -5
- package/services/request-service/types.d.ts +6 -3
- package/services/swap-service/handler/asset-hub/handler.d.ts +1 -1
- package/services/swap-service/handler/asset-hub/handler.js +2 -1
- package/services/swap-service/handler/base-handler.js +1 -1
- package/services/swap-service/handler/chainflip-handler.d.ts +1 -1
- package/services/swap-service/handler/chainflip-handler.js +4 -3
- package/services/swap-service/handler/hydradx-handler.d.ts +1 -1
- package/services/swap-service/handler/hydradx-handler.js +2 -1
- package/services/swap-service/index.js +1 -1
- package/services/transaction-service/helpers/index.d.ts +2 -0
- package/services/transaction-service/helpers/index.js +4 -0
- package/services/transaction-service/index.d.ts +1 -0
- package/services/transaction-service/index.js +114 -17
- package/services/transaction-service/types.d.ts +4 -2
- package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
- package/stores/AccountProxyStore.d.ts +5 -0
- package/stores/AccountProxyStore.js +10 -0
- package/stores/Authorize.d.ts +1 -1
- package/stores/CurrentAccountStore.d.ts +1 -1
- package/stores/ModifyPairStore.d.ts +5 -0
- package/stores/ModifyPairStore.js +10 -0
- package/stores/index.d.ts +4 -1
- package/stores/index.js +5 -2
- package/types/account/action/add/index.d.ts +3 -0
- package/types/account/action/add/index.js +6 -0
- package/types/account/action/add/json.d.ts +29 -0
- package/types/account/action/add/json.js +1 -0
- package/types/account/action/add/mnemonic.d.ts +77 -0
- package/types/account/action/add/mnemonic.js +1 -0
- package/types/account/action/add/secret.d.ts +55 -0
- package/types/account/action/add/secret.js +1 -0
- package/types/account/action/derive.d.ts +77 -0
- package/types/account/action/derive.js +1 -0
- package/types/account/action/edit.d.ts +31 -0
- package/types/account/action/edit.js +1 -0
- package/types/account/action/export.d.ts +15 -0
- package/types/account/action/export.js +1 -0
- package/types/account/action/index.d.ts +6 -0
- package/types/account/action/index.js +9 -0
- package/types/account/action/subscribe.d.ts +22 -0
- package/types/account/action/subscribe.js +10 -0
- package/types/account/action/validate.d.ts +17 -0
- package/types/account/action/validate.js +1 -0
- package/types/account/error/common.d.ts +10 -0
- package/types/account/error/common.js +33 -0
- package/types/account/error/derive.d.ts +13 -0
- package/types/account/error/derive.js +48 -0
- package/types/account/error/index.d.ts +2 -0
- package/types/account/error/index.js +5 -0
- package/types/account/index.d.ts +3 -0
- package/types/account/index.js +6 -0
- package/types/account/info/current.d.ts +10 -0
- package/types/account/info/current.js +1 -0
- package/types/account/info/index.d.ts +3 -0
- package/types/account/info/index.js +6 -0
- package/types/account/info/keyring.d.ts +161 -0
- package/types/account/info/keyring.js +88 -0
- package/types/account/info/proxy.d.ts +73 -0
- package/types/account/info/proxy.js +46 -0
- package/types/balance/index.d.ts +4 -1
- package/types/buy.d.ts +3 -1
- package/types/error.d.ts +8 -0
- package/types/error.js +1 -0
- package/types/index.d.ts +4 -0
- package/types/index.js +5 -1
- package/types/transaction/data.d.ts +17 -0
- package/types/transaction/data.js +1 -0
- package/types/transaction/error.d.ts +39 -0
- package/types/transaction/error.js +44 -0
- package/types/transaction/index.d.ts +4 -0
- package/types/transaction/index.js +7 -0
- package/types/transaction/request.d.ts +24 -0
- package/types/transaction/request.js +1 -0
- package/types/transaction/warning.d.ts +5 -0
- package/types/transaction/warning.js +8 -0
- package/types/yield/actions/join/submit.d.ts +2 -2
- package/types/yield/actions/join/validate.d.ts +1 -6
- package/types/yield/actions/join/validate.js +1 -10
- package/types/yield/actions/others.d.ts +1 -1
- package/utils/account/analyze.d.ts +4 -0
- package/utils/account/analyze.js +159 -0
- package/utils/account/common.d.ts +16 -0
- package/utils/account/common.js +104 -0
- package/utils/account/derive/index.d.ts +2 -0
- package/utils/account/derive/index.js +5 -0
- package/utils/account/derive/info/index.d.ts +2 -0
- package/utils/account/derive/info/index.js +5 -0
- package/utils/account/derive/info/solo.d.ts +11 -0
- package/utils/account/derive/info/solo.js +230 -0
- package/utils/account/derive/info/unified.d.ts +7 -0
- package/utils/account/derive/info/unified.js +102 -0
- package/utils/account/derive/validate.d.ts +8 -0
- package/utils/account/derive/validate.js +165 -0
- package/utils/account/index.d.ts +4 -0
- package/utils/account/index.js +7 -0
- package/utils/account/transform.d.ts +41 -0
- package/utils/account/transform.js +533 -0
- package/utils/auth.d.ts +2 -0
- package/utils/auth.js +39 -0
- package/utils/canDerive.d.ts +1 -1
- package/utils/eth/mergeTransactionAndSignature.d.ts +1 -1
- package/utils/getId.d.ts +1 -0
- package/utils/getId.js +3 -1
- package/utils/index.d.ts +12 -5
- package/utils/index.js +28 -47
- package/cjs/signers/substrates/KeyringSigner.js +0 -35
- package/cjs/signers/substrates/LedgerSigner.js +0 -44
- package/cjs/signers/substrates/QrSigner.js +0 -63
- package/cjs/signers/types.js +0 -15
- package/cjs/signers/web3/QrSigner.js +0 -67
- package/cjs/utils/account.js +0 -34
- package/signers/substrates/KeyringSigner.d.ts +0 -13
- package/signers/substrates/KeyringSigner.js +0 -27
- package/signers/substrates/LedgerSigner.d.ts +0 -13
- package/signers/substrates/LedgerSigner.js +0 -37
- package/signers/substrates/QrSigner.d.ts +0 -20
- package/signers/substrates/QrSigner.js +0 -55
- package/signers/types.d.ts +0 -34
- package/signers/types.js +0 -9
- package/signers/web3/QrSigner.d.ts +0 -18
- package/signers/web3/QrSigner.js +0 -59
- package/types/transaction.d.ts +0 -3
- package/utils/account.d.ts +0 -5
- package/utils/account.js +0 -24
- /package/cjs/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
- /package/cjs/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
- /package/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
- /package/services/migration-service/scripts/{MigrateLedgerAccount.d.ts → keyring/MigrateLedgerAccount.d.ts} +0 -0
- /package/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
- /package/services/migration-service/scripts/{MigrateRemoveGenesisHash.d.ts → keyring/MigrateRemoveGenesisHash.d.ts} +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateRecipientAddress = validateRecipientAddress;
|
|
7
|
+
var _types = require("@subwallet/extension-base/core/types");
|
|
8
|
+
var _utils = require("@subwallet/extension-base/core/utils");
|
|
9
|
+
var _types2 = require("@subwallet/extension-base/types");
|
|
10
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
11
|
+
var _keyring = require("@subwallet/keyring");
|
|
12
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
13
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
14
|
+
|
|
15
|
+
function getConditions(validateRecipientParams) {
|
|
16
|
+
const {
|
|
17
|
+
account,
|
|
18
|
+
actionType,
|
|
19
|
+
autoFormatValue,
|
|
20
|
+
destChainInfo,
|
|
21
|
+
srcChain,
|
|
22
|
+
toAddress
|
|
23
|
+
} = validateRecipientParams;
|
|
24
|
+
const conditions = [];
|
|
25
|
+
const isSendAction = [_types.ActionType.SEND_FUND, _types.ActionType.SEND_NFT].includes(actionType);
|
|
26
|
+
conditions.push(_types.ValidationCondition.IS_NOT_NULL);
|
|
27
|
+
conditions.push(_types.ValidationCondition.IS_ADDRESS);
|
|
28
|
+
conditions.push(_types.ValidationCondition.IS_VALID_ADDRESS_FOR_ECOSYSTEM);
|
|
29
|
+
if ((0, _keyring.isSubstrateAddress)(toAddress) && !autoFormatValue) {
|
|
30
|
+
// todo: need isSubstrateAddress util function to check exactly
|
|
31
|
+
conditions.push(_types.ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT);
|
|
32
|
+
}
|
|
33
|
+
if ((0, _keyring.isTonAddress)(toAddress)) {
|
|
34
|
+
conditions.push(_types.ValidationCondition.IS_VALID_TON_ADDRESS_FORMAT);
|
|
35
|
+
}
|
|
36
|
+
if (srcChain === destChainInfo.slug && isSendAction && !destChainInfo.tonInfo) {
|
|
37
|
+
conditions.push(_types.ValidationCondition.IS_NOT_DUPLICATE_ADDRESS);
|
|
38
|
+
}
|
|
39
|
+
if (account !== null && account !== void 0 && account.isHardware) {
|
|
40
|
+
conditions.push(_types.ValidationCondition.IS_SUPPORT_LEDGER_ACCOUNT);
|
|
41
|
+
if (account.signMode === _types2.AccountSignMode.LEGACY_LEDGER) {
|
|
42
|
+
conditions.push(_types.ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return conditions;
|
|
46
|
+
}
|
|
47
|
+
function getValidationFunctions(conditions) {
|
|
48
|
+
const validationFunctions = [];
|
|
49
|
+
for (const condition of conditions) {
|
|
50
|
+
switch (condition) {
|
|
51
|
+
case _types.ValidationCondition.IS_NOT_NULL:
|
|
52
|
+
{
|
|
53
|
+
validationFunctions.push(_utils._isNotNull);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
case _types.ValidationCondition.IS_ADDRESS:
|
|
57
|
+
{
|
|
58
|
+
validationFunctions.push(_utils._isAddress);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
case _types.ValidationCondition.IS_VALID_ADDRESS_FOR_ECOSYSTEM:
|
|
62
|
+
{
|
|
63
|
+
validationFunctions.push(_utils._isValidAddressForEcosystem);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case _types.ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT:
|
|
67
|
+
{
|
|
68
|
+
validationFunctions.push(_utils._isValidSubstrateAddressFormat);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case _types.ValidationCondition.IS_VALID_TON_ADDRESS_FORMAT:
|
|
72
|
+
{
|
|
73
|
+
validationFunctions.push(_utils._isValidTonAddressFormat);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case _types.ValidationCondition.IS_NOT_DUPLICATE_ADDRESS:
|
|
77
|
+
{
|
|
78
|
+
validationFunctions.push(_utils._isNotDuplicateAddress);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case _types.ValidationCondition.IS_SUPPORT_LEDGER_ACCOUNT:
|
|
82
|
+
{
|
|
83
|
+
validationFunctions.push(_utils._isSupportLedgerAccount);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return validationFunctions;
|
|
89
|
+
}
|
|
90
|
+
function runValidationFunctions(validateRecipientParams, validationFunctions) {
|
|
91
|
+
const validationResults = [];
|
|
92
|
+
for (const validationFunction of validationFunctions) {
|
|
93
|
+
validationResults.push(validationFunction(validateRecipientParams));
|
|
94
|
+
}
|
|
95
|
+
for (const result of validationResults) {
|
|
96
|
+
if (result) {
|
|
97
|
+
return Promise.reject((0, _utils2.detectTranslate)(result));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return Promise.resolve();
|
|
101
|
+
}
|
|
102
|
+
function validateRecipientAddress(validateRecipientParams) {
|
|
103
|
+
const conditions = getConditions(validateRecipientParams);
|
|
104
|
+
const validationFunctions = getValidationFunctions(conditions);
|
|
105
|
+
return runValidationFunctions(validateRecipientParams, validationFunctions);
|
|
106
|
+
}
|
|
@@ -21,8 +21,10 @@ var _EvmProviderError = require("@subwallet/extension-base/background/errors/Evm
|
|
|
21
21
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
22
22
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
23
23
|
var _utils = require("@subwallet/extension-base/services/fee-service/utils");
|
|
24
|
+
var _types = require("@subwallet/extension-base/types");
|
|
24
25
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
25
26
|
var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
|
|
27
|
+
var _keyring = require("@subwallet/keyring");
|
|
26
28
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
27
29
|
var _utils3 = require("@walletconnect/utils");
|
|
28
30
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
@@ -256,8 +258,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
256
258
|
const transactionParams = payload.payloadAfterValidated;
|
|
257
259
|
const {
|
|
258
260
|
address: fromAddress,
|
|
259
|
-
networkKey
|
|
260
|
-
pair
|
|
261
|
+
networkKey
|
|
261
262
|
} = payload;
|
|
262
263
|
const evmApi = koni.getEvmApi(networkKey || '');
|
|
263
264
|
const web3 = evmApi === null || evmApi === void 0 ? void 0 : evmApi.api;
|
|
@@ -273,7 +274,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
273
274
|
payload.errorPosition = 'ui';
|
|
274
275
|
payload.confirmationType = 'evmWatchTransactionRequest';
|
|
275
276
|
const [message, name] = convertErrorMessage(message_);
|
|
276
|
-
const error = new _TransactionError.TransactionError(
|
|
277
|
+
const error = new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, message, undefined, name);
|
|
277
278
|
console.error(error);
|
|
278
279
|
errors.push(error);
|
|
279
280
|
};
|
|
@@ -341,7 +342,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
341
342
|
}
|
|
342
343
|
}
|
|
343
344
|
if (!transaction.gas) {
|
|
344
|
-
handleError(new _TransactionError.TransactionError(
|
|
345
|
+
handleError(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR).message);
|
|
345
346
|
} else {
|
|
346
347
|
if (transactionParams.maxPriorityFeePerGas && transactionParams.maxFeePerGas) {
|
|
347
348
|
const maxFee = new _bignumber.default(transactionParams.maxFeePerGas);
|
|
@@ -376,11 +377,6 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
376
377
|
handleError(e.message);
|
|
377
378
|
}
|
|
378
379
|
}
|
|
379
|
-
const pair_ = pair || _uiKeyring.keyring.getPair(fromAddress);
|
|
380
|
-
const account = {
|
|
381
|
-
address: fromAddress,
|
|
382
|
-
...(pair_ === null || pair_ === void 0 ? void 0 : pair_.meta)
|
|
383
|
-
};
|
|
384
380
|
try {
|
|
385
381
|
transaction.nonce = await web3.eth.getTransactionCount(fromAddress);
|
|
386
382
|
} catch (e) {
|
|
@@ -403,7 +399,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
403
399
|
errors,
|
|
404
400
|
payloadAfterValidated: {
|
|
405
401
|
...transaction,
|
|
406
|
-
|
|
402
|
+
address: fromAddress,
|
|
407
403
|
estimateGas,
|
|
408
404
|
hashPayload,
|
|
409
405
|
isToContract,
|
|
@@ -438,10 +434,6 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
438
434
|
handleError('Not found address or payload to sign');
|
|
439
435
|
}
|
|
440
436
|
const pair = pair_ || _uiKeyring.keyring.getPair(address);
|
|
441
|
-
const account = {
|
|
442
|
-
address: pair.address,
|
|
443
|
-
...pair.meta
|
|
444
|
-
};
|
|
445
437
|
if (method) {
|
|
446
438
|
if (['eth_sign', 'personal_sign', 'eth_signTypedData', 'eth_signTypedData_v1', 'eth_signTypedData_v3', 'eth_signTypedData_v4'].indexOf(method) < 0) {
|
|
447
439
|
handleError('Unsupported action');
|
|
@@ -457,13 +449,13 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
457
449
|
hashPayload = payload;
|
|
458
450
|
break;
|
|
459
451
|
case 'eth_sign':
|
|
460
|
-
if (!
|
|
452
|
+
if (!pair.meta.isExternal) {
|
|
461
453
|
canSign = true;
|
|
462
454
|
}
|
|
463
455
|
break;
|
|
464
456
|
case 'eth_signTypedData':
|
|
465
457
|
case 'eth_signTypedData_v1':
|
|
466
|
-
if (!
|
|
458
|
+
if (!pair.meta.isExternal) {
|
|
467
459
|
canSign = true;
|
|
468
460
|
}
|
|
469
461
|
payload = validateTypedSignMessageDataV1({
|
|
@@ -473,7 +465,7 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
473
465
|
break;
|
|
474
466
|
case 'eth_signTypedData_v3':
|
|
475
467
|
case 'eth_signTypedData_v4':
|
|
476
|
-
if (!
|
|
468
|
+
if (!pair.meta.isExternal) {
|
|
477
469
|
canSign = true;
|
|
478
470
|
}
|
|
479
471
|
payload = validateTypedSignMessageDataV3V4({
|
|
@@ -492,7 +484,7 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
492
484
|
handleError('Unsupported method');
|
|
493
485
|
}
|
|
494
486
|
const payloadAfterValidated = {
|
|
495
|
-
|
|
487
|
+
address,
|
|
496
488
|
type: method || '',
|
|
497
489
|
payload: payload,
|
|
498
490
|
hashPayload: hashPayload,
|
|
@@ -524,7 +516,7 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
524
516
|
if ((0, _utilCrypto.isEthereumAddress)(address)) {
|
|
525
517
|
var _requestSession$names;
|
|
526
518
|
sessionAccounts = ((_requestSession$names = requestSession.namespaces.eip155.accounts) === null || _requestSession$names === void 0 ? void 0 : _requestSession$names.map(account => account.split(':')[2])) || sessionAccounts;
|
|
527
|
-
} else {
|
|
519
|
+
} else if ((0, _keyring.isSubstrateAddress)(address)) {
|
|
528
520
|
var _requestSession$names2;
|
|
529
521
|
sessionAccounts = ((_requestSession$names2 = requestSession.namespaces.polkadot.accounts) === null || _requestSession$names2 === void 0 ? void 0 : _requestSession$names2.map(account => account.split(':')[2])) || sessionAccounts;
|
|
530
522
|
}
|
|
@@ -12,8 +12,8 @@ exports._validateBalanceToSwapOnAssetHub = _validateBalanceToSwapOnAssetHub;
|
|
|
12
12
|
exports._validateSwapRecipient = _validateSwapRecipient;
|
|
13
13
|
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
14
14
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
15
|
-
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
16
15
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
16
|
+
var _types = require("@subwallet/extension-base/types");
|
|
17
17
|
var _swap = require("@subwallet/extension-base/types/swap");
|
|
18
18
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
19
19
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
@@ -28,12 +28,12 @@ function _validateBalanceToSwapOnAssetHub(fromToken, feeToken, feeTokenChainInfo
|
|
|
28
28
|
return new _TransactionError.TransactionError(_swap.SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
|
|
29
29
|
}
|
|
30
30
|
if (new _bignumber.default(feeTokenBalance).lte(feeAmount)) {
|
|
31
|
-
return new _TransactionError.TransactionError(
|
|
31
|
+
return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
|
|
32
32
|
}
|
|
33
33
|
if (!(0, _utils._isNativeToken)(fromToken) && fromToken.slug === feeToken.slug) {
|
|
34
34
|
// todo: need review and refactor
|
|
35
35
|
if (bnFromTokenBalance.lte(new _bignumber.default(feeAmount).plus(swapAmount))) {
|
|
36
|
-
return new _TransactionError.TransactionError(
|
|
36
|
+
return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
if (isXcmOk) {
|
|
@@ -56,12 +56,12 @@ function _validateBalanceToSwapOnAssetHub(fromToken, feeToken, feeTokenChainInfo
|
|
|
56
56
|
function _validateBalanceToSwap(fromToken, feeToken, feeTokenChainInfo, feeAmount, fromTokenBalance, feeTokenBalance, swapAmount, isXcmOk, minSwap) {
|
|
57
57
|
const bnFromTokenBalance = new _bignumber.default(fromTokenBalance);
|
|
58
58
|
if (new _bignumber.default(feeTokenBalance).lte(feeAmount)) {
|
|
59
|
-
return new _TransactionError.TransactionError(
|
|
59
|
+
return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
|
|
60
60
|
}
|
|
61
61
|
if (fromToken.slug === feeToken.slug) {
|
|
62
62
|
// todo: need review and refactor
|
|
63
63
|
if (bnFromTokenBalance.lte(new _bignumber.default(feeAmount).plus(swapAmount))) {
|
|
64
|
-
return new _TransactionError.TransactionError(
|
|
64
|
+
return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
if (isXcmOk) {
|
|
@@ -11,6 +11,7 @@ exports.checkSigningAccountForTransaction = checkSigningAccountForTransaction;
|
|
|
11
11
|
exports.checkSupportForAction = checkSupportForAction;
|
|
12
12
|
exports.checkSupportForFeature = checkSupportForFeature;
|
|
13
13
|
exports.checkSupportForTransaction = checkSupportForTransaction;
|
|
14
|
+
exports.checkTonAddressBounceableAndAccountNotActive = checkTonAddressBounceableAndAccountNotActive;
|
|
14
15
|
exports.estimateFeeForTransaction = estimateFeeForTransaction;
|
|
15
16
|
exports.validateTransferRequest = validateTransferRequest;
|
|
16
17
|
exports.validateXcmTransferRequest = validateXcmTransferRequest;
|
|
@@ -19,11 +20,14 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
19
20
|
var _TransactionWarning = require("@subwallet/extension-base/background/warnings/TransactionWarning");
|
|
20
21
|
var _constants = require("@subwallet/extension-base/constants");
|
|
21
22
|
var _systemPallet = require("@subwallet/extension-base/core/substrate/system-pallet");
|
|
23
|
+
var _utils = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
|
|
22
24
|
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
23
|
-
var
|
|
24
|
-
var
|
|
25
|
+
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
26
|
+
var _utils3 = require("@subwallet/extension-base/services/fee-service/utils");
|
|
25
27
|
var _helpers = require("@subwallet/extension-base/services/transaction-service/helpers");
|
|
26
|
-
var
|
|
28
|
+
var _types = require("@subwallet/extension-base/types");
|
|
29
|
+
var _utils4 = require("@subwallet/extension-base/utils");
|
|
30
|
+
var _keyring = require("@subwallet/keyring");
|
|
27
31
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
28
32
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
29
33
|
var _i18next = require("i18next");
|
|
@@ -38,30 +42,33 @@ function validateTransferRequest(tokenInfo, from, to, value, transferAll) {
|
|
|
38
42
|
let transferValue;
|
|
39
43
|
if (!transferAll) {
|
|
40
44
|
if (value === undefined) {
|
|
41
|
-
errors.push(new _TransactionError.TransactionError(
|
|
45
|
+
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Transfer amount is required')));
|
|
42
46
|
}
|
|
43
47
|
if (value) {
|
|
44
48
|
transferValue = new _bignumber.default(value);
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
if (!tokenInfo) {
|
|
48
|
-
errors.push(new _TransactionError.TransactionError(
|
|
52
|
+
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found token from registry')));
|
|
49
53
|
}
|
|
50
|
-
if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0,
|
|
51
|
-
errors.push(new _TransactionError.TransactionError(
|
|
54
|
+
if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils2._isTokenEvmSmartContract)(tokenInfo) && (0, _utils2._getContractAddressOfToken)(tokenInfo).length === 0) {
|
|
55
|
+
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found ERC20 address for this token')));
|
|
56
|
+
}
|
|
57
|
+
if ((0, _keyring.isTonAddress)(from) && (0, _keyring.isTonAddress)(to) && (0, _utils2._isTokenTonSmartContract)(tokenInfo) && (0, _utils2._getContractAddressOfToken)(tokenInfo).length === 0) {
|
|
58
|
+
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found TEP74 address for this token')));
|
|
52
59
|
}
|
|
53
60
|
return [errors, keypair, transferValue];
|
|
54
61
|
}
|
|
55
62
|
function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, receiverTransferTokenFreeBalance, transferAmount, senderTransferTokenTransferable, receiverNativeTransferable) {
|
|
56
|
-
const minAmount = (0,
|
|
57
|
-
const nativeMinAmount = (0,
|
|
63
|
+
const minAmount = (0, _utils2._getTokenMinAmount)(tokenInfo);
|
|
64
|
+
const nativeMinAmount = (0, _utils2._getTokenMinAmount)(nativeTokenInfo);
|
|
58
65
|
const warnings = [];
|
|
59
66
|
const errors = [];
|
|
60
67
|
|
|
61
68
|
// Check ed of not native token for sender after sending
|
|
62
69
|
if (extrinsicType === _KoniTypes.ExtrinsicType.TRANSFER_TOKEN && senderTransferTokenTransferable) {
|
|
63
70
|
if (new _bignumber.default(senderTransferTokenTransferable).minus(transferAmount).lt(minAmount)) {
|
|
64
|
-
const warning = new _TransactionWarning.TransactionWarning(
|
|
71
|
+
const warning = new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
|
|
65
72
|
warnings.push(warning);
|
|
66
73
|
}
|
|
67
74
|
}
|
|
@@ -69,7 +76,7 @@ function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, r
|
|
|
69
76
|
// Check ed for receiver before sending
|
|
70
77
|
if (extrinsicType === _KoniTypes.ExtrinsicType.TRANSFER_TOKEN && receiverNativeTransferable) {
|
|
71
78
|
if (new _bignumber.default(receiverNativeTransferable).lt(nativeMinAmount)) {
|
|
72
|
-
const error = new _TransactionError.TransactionError(
|
|
79
|
+
const error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('The recipient account has {{amount}} {{nativeSymbol}} which can lead to your {{localSymbol}} being lost. Change recipient account and try again', {
|
|
73
80
|
replace: {
|
|
74
81
|
amount: receiverNativeTransferable,
|
|
75
82
|
nativeSymbol: nativeTokenInfo.symbol,
|
|
@@ -83,10 +90,10 @@ function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, r
|
|
|
83
90
|
// Check ed for receiver after sending
|
|
84
91
|
if (new _bignumber.default(receiverTransferTokenFreeBalance).plus(transferAmount).lt(minAmount)) {
|
|
85
92
|
const atLeast = new _bignumber.default(minAmount).minus(receiverTransferTokenFreeBalance).plus((tokenInfo.decimals || 0) === 0 ? 0 : 1);
|
|
86
|
-
const atLeastStr = (0,
|
|
93
|
+
const atLeastStr = (0, _utils4.formatNumber)(atLeast, tokenInfo.decimals || 0, _utils4.balanceFormatter, {
|
|
87
94
|
maxNumberFormat: tokenInfo.decimals || 6
|
|
88
95
|
});
|
|
89
|
-
const error = new _TransactionError.TransactionError(
|
|
96
|
+
const error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
|
|
90
97
|
replace: {
|
|
91
98
|
amount: atLeastStr,
|
|
92
99
|
symbol: tokenInfo.symbol
|
|
@@ -103,23 +110,23 @@ function validateXcmTransferRequest(destTokenInfo, sender, sendingValue) {
|
|
|
103
110
|
const keypair = _uiKeyring.keyring.getPair(sender);
|
|
104
111
|
const transferValue = new _bignumber.default(sendingValue);
|
|
105
112
|
if (!destTokenInfo) {
|
|
106
|
-
errors.push(new _TransactionError.TransactionError(
|
|
113
|
+
errors.push(new _TransactionError.TransactionError(_types.TransferTxErrorType.INVALID_TOKEN, (0, _i18next.t)('Not found token from registry')));
|
|
107
114
|
}
|
|
108
115
|
return [errors, keypair, transferValue];
|
|
109
116
|
}
|
|
110
117
|
function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, sendingAmount, senderTransferable, receiverNativeBalance, destChainInfo) {
|
|
111
118
|
let isSnowBridge = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
112
|
-
const destMinAmount = (0,
|
|
119
|
+
const destMinAmount = (0, _utils2._getTokenMinAmount)(destinationTokenInfo);
|
|
113
120
|
const minSendingRequired = new _bignumber.default(destMinAmount).multipliedBy(_constants.XCM_MIN_AMOUNT_RATIO);
|
|
114
121
|
let error;
|
|
115
122
|
let warning;
|
|
116
123
|
|
|
117
124
|
// Check sending token ED for receiver
|
|
118
125
|
if (new _bignumber.default(sendingAmount).lt(minSendingRequired)) {
|
|
119
|
-
const atLeastStr = (0,
|
|
126
|
+
const atLeastStr = (0, _utils4.formatNumber)(minSendingRequired, destinationTokenInfo.decimals || 0, _utils4.balanceFormatter, {
|
|
120
127
|
maxNumberFormat: destinationTokenInfo.decimals || 6
|
|
121
128
|
});
|
|
122
|
-
error = new _TransactionError.TransactionError(
|
|
129
|
+
error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
|
|
123
130
|
replace: {
|
|
124
131
|
amount: atLeastStr,
|
|
125
132
|
symbol: originTokenInfo.symbol
|
|
@@ -128,16 +135,16 @@ function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, se
|
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
// check native token ED on dest chain for receiver
|
|
131
|
-
const bnKeepAliveBalance = (0,
|
|
132
|
-
if (isSnowBridge && bnKeepAliveBalance.lt((0,
|
|
138
|
+
const bnKeepAliveBalance = (0, _utils2._isNativeToken)(destinationTokenInfo) ? new _bignumber.default(receiverNativeBalance).plus(sendingAmount) : new _bignumber.default(receiverNativeBalance);
|
|
139
|
+
if (isSnowBridge && bnKeepAliveBalance.lt((0, _utils2._getChainExistentialDeposit)(destChainInfo))) {
|
|
133
140
|
const {
|
|
134
141
|
decimals,
|
|
135
142
|
symbol
|
|
136
|
-
} = (0,
|
|
137
|
-
const atLeastStr = (0,
|
|
143
|
+
} = (0, _utils2._getChainNativeTokenBasicInfo)(destChainInfo);
|
|
144
|
+
const atLeastStr = (0, _utils4.formatNumber)((0, _utils2._getChainExistentialDeposit)(destChainInfo), decimals || 0, _utils4.balanceFormatter, {
|
|
138
145
|
maxNumberFormat: 6
|
|
139
146
|
});
|
|
140
|
-
error = new _TransactionError.TransactionError(
|
|
147
|
+
error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)(' Insufficient {{symbol}} on {{chain}} to cover min balance ({{amount}} {{symbol}})', {
|
|
141
148
|
replace: {
|
|
142
149
|
amount: atLeastStr,
|
|
143
150
|
symbol,
|
|
@@ -147,9 +154,9 @@ function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, se
|
|
|
147
154
|
}
|
|
148
155
|
|
|
149
156
|
// Check ed for sender
|
|
150
|
-
if (!(0,
|
|
151
|
-
if (new _bignumber.default(senderTransferable).minus(sendingAmount).lt((0,
|
|
152
|
-
warning = new _TransactionWarning.TransactionWarning(
|
|
157
|
+
if (!(0, _utils2._isNativeToken)(originTokenInfo)) {
|
|
158
|
+
if (new _bignumber.default(senderTransferable).minus(sendingAmount).lt((0, _utils2._getTokenMinAmount)(originTokenInfo))) {
|
|
159
|
+
warning = new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
|
|
153
160
|
}
|
|
154
161
|
}
|
|
155
162
|
return [warning, error];
|
|
@@ -159,7 +166,7 @@ function checkSupportForFeature(validationResponse, blockedFeaturesList, chainIn
|
|
|
159
166
|
const chain = validationResponse.chain;
|
|
160
167
|
const currentFeature = `${extrinsicType}___${chain}`;
|
|
161
168
|
if (blockedFeaturesList.includes(currentFeature)) {
|
|
162
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
169
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)(`Feature under maintenance on ${chainInfo.name} network. Try again later`)));
|
|
163
170
|
}
|
|
164
171
|
}
|
|
165
172
|
function checkSupportForAction(validationResponse, blockedActionsMap) {
|
|
@@ -315,7 +322,7 @@ function checkSupportForAction(validationResponse, blockedActionsMap) {
|
|
|
315
322
|
}
|
|
316
323
|
const blockedActionsList = Object.values(blockedActionsMap).flat();
|
|
317
324
|
if (blockedActionsList.includes(currentAction)) {
|
|
318
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
325
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('Feature under maintenance. Try again later')));
|
|
319
326
|
}
|
|
320
327
|
}
|
|
321
328
|
|
|
@@ -326,9 +333,9 @@ function checkSupportForTransaction(validationResponse, transaction) {
|
|
|
326
333
|
} = validationResponse;
|
|
327
334
|
if (!transaction) {
|
|
328
335
|
if (extrinsicType === _KoniTypes.ExtrinsicType.SEND_NFT) {
|
|
329
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
336
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('This feature is not yet available for this NFT')));
|
|
330
337
|
} else {
|
|
331
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
338
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
|
|
332
339
|
}
|
|
333
340
|
}
|
|
334
341
|
}
|
|
@@ -342,16 +349,18 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
342
349
|
const {
|
|
343
350
|
decimals,
|
|
344
351
|
symbol
|
|
345
|
-
} = (0,
|
|
352
|
+
} = (0, _utils2._getChainNativeTokenBasicInfo)(chainInfo);
|
|
346
353
|
estimateFee.decimals = decimals;
|
|
347
354
|
estimateFee.symbol = symbol;
|
|
348
355
|
if (transaction) {
|
|
349
356
|
try {
|
|
350
357
|
if ((0, _helpers.isSubstrateTransaction)(transaction)) {
|
|
351
358
|
estimateFee.value = (await transaction.paymentInfo(validationResponse.address)).partialFee.toString();
|
|
359
|
+
} else if ((0, _helpers.isTonTransaction)(transaction)) {
|
|
360
|
+
estimateFee.value = transaction.estimateFee; // todo: might need to update logic estimate fee inside for future actions excluding normal transfer Ton and Jetton
|
|
352
361
|
} else {
|
|
353
362
|
const gasLimit = await evmApi.api.eth.estimateGas(transaction);
|
|
354
|
-
const priority = await (0,
|
|
363
|
+
const priority = await (0, _utils3.calculateGasFeeParams)(evmApi, chainInfo.slug);
|
|
355
364
|
if (priority.baseGasFee) {
|
|
356
365
|
const maxFee = priority.maxFeePerGas; // TODO: Need review
|
|
357
366
|
|
|
@@ -364,20 +373,36 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
364
373
|
} catch (e) {
|
|
365
374
|
const error = e;
|
|
366
375
|
if (error.message.includes('gas required exceeds allowance') && error.message.includes('insufficient funds')) {
|
|
367
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
376
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE));
|
|
368
377
|
}
|
|
369
378
|
}
|
|
370
379
|
}
|
|
371
380
|
return estimateFee;
|
|
372
381
|
}
|
|
373
|
-
function checkSigningAccountForTransaction(validationResponse) {
|
|
374
|
-
const
|
|
382
|
+
function checkSigningAccountForTransaction(validationResponse, chainInfoMap) {
|
|
383
|
+
const {
|
|
384
|
+
address,
|
|
385
|
+
chain,
|
|
386
|
+
chainType,
|
|
387
|
+
extrinsicType
|
|
388
|
+
} = validationResponse;
|
|
389
|
+
const pair = _uiKeyring.keyring.getPair(address);
|
|
375
390
|
if (!pair) {
|
|
376
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
391
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR, (0, _i18next.t)('Unable to find account')));
|
|
377
392
|
} else {
|
|
378
|
-
|
|
379
|
-
if (
|
|
380
|
-
|
|
393
|
+
const accountJson = (0, _utils4.pairToAccount)(pair, chainInfoMap);
|
|
394
|
+
if (!accountJson.transactionActions.includes(extrinsicType)) {
|
|
395
|
+
// check if the account can sign the transaction type
|
|
396
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('This feature is not available with this account')));
|
|
397
|
+
} else if (accountJson.specialChain && accountJson.specialChain !== chain) {
|
|
398
|
+
// check if the account can only be used on a specific chain (for ledger legacy)
|
|
399
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('This feature is not available with this account')));
|
|
400
|
+
} else {
|
|
401
|
+
const compatibleMap = [_types.AccountSignMode.LEGACY_LEDGER, _types.AccountSignMode.GENERIC_LEDGER].includes(accountJson.signMode) ? _constants.LEDGER_SIGNING_COMPATIBLE_MAP : _constants.SIGNING_COMPATIBLE_MAP;
|
|
402
|
+
if (!compatibleMap[chainType].includes(accountJson.chainType)) {
|
|
403
|
+
// check if the account chain type is compatible with the transaction chain type
|
|
404
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('This feature is not available with this account')));
|
|
405
|
+
}
|
|
381
406
|
}
|
|
382
407
|
}
|
|
383
408
|
}
|
|
@@ -399,17 +424,33 @@ function checkBalanceWithTransactionFee(validationResponse, transactionInput, na
|
|
|
399
424
|
const bnNativeTokenAvailable = new _bignumber.default(nativeTokenAvailable.value);
|
|
400
425
|
const bnNativeTokenTransferAmount = new _bignumber.default(validationResponse.transferNativeAmount || '0');
|
|
401
426
|
if (!bnNativeTokenAvailable.gt(0)) {
|
|
402
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
427
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE));
|
|
403
428
|
}
|
|
404
429
|
const isChainNotSupportTransferAll = [..._constants2._TRANSFER_CHAIN_GROUP.acala, ..._constants2._TRANSFER_CHAIN_GROUP.genshiro, ..._constants2._TRANSFER_CHAIN_GROUP.bitcountry, ..._constants2._TRANSFER_CHAIN_GROUP.statemine].includes(nativeTokenInfo.originChain);
|
|
405
430
|
if (bnNativeTokenTransferAmount.plus(bnFee).gt(bnNativeTokenAvailable) && (!isTransferAll || isChainNotSupportTransferAll)) {
|
|
406
|
-
validationResponse.errors.push(new _TransactionError.TransactionError(
|
|
431
|
+
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE)); // todo: should be generalized and reused in all features
|
|
407
432
|
}
|
|
408
433
|
|
|
409
434
|
// todo: only system.pallet has metadata, we should add for other pallets and mechanisms as well
|
|
410
435
|
const isNeedCheckRemainingBalance = !isTransferAll && extrinsicType === _KoniTypes.ExtrinsicType.TRANSFER_BALANCE && nativeTokenAvailable.metadata && (0, _systemPallet._canAccountBeReaped)(nativeTokenAvailable.metadata);
|
|
411
|
-
const isRemainingBalanceValid = bnNativeTokenAvailable.minus(bnNativeTokenTransferAmount).minus(bnFee).lt((0,
|
|
436
|
+
const isRemainingBalanceValid = bnNativeTokenAvailable.minus(bnNativeTokenTransferAmount).minus(bnFee).lt((0, _utils2._getTokenMinAmount)(nativeTokenInfo));
|
|
412
437
|
if (isNeedCheckRemainingBalance && isRemainingBalanceValid) {
|
|
413
|
-
edAsWarning ? validationResponse.warnings.push(new _TransactionWarning.TransactionWarning(
|
|
438
|
+
edAsWarning ? validationResponse.warnings.push(new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT)) : validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_EXISTENTIAL_DEPOSIT));
|
|
414
439
|
}
|
|
440
|
+
}
|
|
441
|
+
async function checkTonAddressBounceableAndAccountNotActive(tonApi, validationResponse) {
|
|
442
|
+
const {
|
|
443
|
+
to
|
|
444
|
+
} = validationResponse.data;
|
|
445
|
+
const isActive = await isAccountActive(tonApi, to);
|
|
446
|
+
if (isTonAddressBounceable(to) && !isActive) {
|
|
447
|
+
validationResponse.warnings.push(new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS));
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
function isTonAddressBounceable(address) {
|
|
451
|
+
return (0, _utils.isBounceableAddress)(address);
|
|
452
|
+
}
|
|
453
|
+
async function isAccountActive(tonApi, address) {
|
|
454
|
+
const state = await tonApi.getAccountState(address);
|
|
455
|
+
return state === 'active';
|
|
415
456
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ValidationCondition = exports.ActionType = void 0;
|
|
7
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
8
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
let ValidationCondition;
|
|
10
|
+
exports.ValidationCondition = ValidationCondition;
|
|
11
|
+
(function (ValidationCondition) {
|
|
12
|
+
ValidationCondition["IS_NOT_NULL"] = "IS_NOT_NULL";
|
|
13
|
+
ValidationCondition["IS_ADDRESS"] = "IS_ADDRESS";
|
|
14
|
+
ValidationCondition["IS_VALID_ADDRESS_FOR_ECOSYSTEM"] = "IS_VALID_ADDRESS_FOR_ECOSYSTEM";
|
|
15
|
+
ValidationCondition["IS_VALID_SUBSTRATE_ADDRESS_FORMAT"] = "IS_VALID_SUBSTRATE_ADDRESS_FORMAT";
|
|
16
|
+
ValidationCondition["IS_VALID_TON_ADDRESS_FORMAT"] = "IS_VALID_TON_ADDRESS_FORMAT";
|
|
17
|
+
ValidationCondition["IS_NOT_DUPLICATE_ADDRESS"] = "IS_NOT_DUPLICATE_ADDRESS";
|
|
18
|
+
ValidationCondition["IS_SUPPORT_LEDGER_ACCOUNT"] = "IS_SUPPORT_LEDGER_ACCOUNT";
|
|
19
|
+
})(ValidationCondition || (exports.ValidationCondition = ValidationCondition = {}));
|
|
20
|
+
let ActionType;
|
|
21
|
+
exports.ActionType = ActionType;
|
|
22
|
+
(function (ActionType) {
|
|
23
|
+
ActionType["SEND_FUND"] = "SEND_FUND";
|
|
24
|
+
ActionType["SEND_NFT"] = "SEND_NFT";
|
|
25
|
+
ActionType["SWAP"] = "SWAP";
|
|
26
|
+
})(ActionType || (exports.ActionType = ActionType = {}));
|