@subwallet/extension-base 1.2.32-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 -12
- 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/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 -14
- 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/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/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
package/cjs/utils/index.js
CHANGED
|
@@ -8,11 +8,7 @@ var _exportNames = {
|
|
|
8
8
|
isDef: true,
|
|
9
9
|
nonEmptyArr: true,
|
|
10
10
|
isEmptyArray: true,
|
|
11
|
-
isAccountAll: true,
|
|
12
|
-
reformatAddress: true,
|
|
13
11
|
filterAddressByNetworkKey: true,
|
|
14
|
-
categoryAddresses: true,
|
|
15
|
-
categoryNetworks: true,
|
|
16
12
|
convertToEvmAddress: true,
|
|
17
13
|
isUrl: true,
|
|
18
14
|
inJestTest: true,
|
|
@@ -32,6 +28,8 @@ var _exportNames = {
|
|
|
32
28
|
filterAndSortingAccountByAuthType: true,
|
|
33
29
|
parseRawNumber: true,
|
|
34
30
|
isSameAddress: true,
|
|
31
|
+
isSameAddressType: true,
|
|
32
|
+
isAddressAndChainCompatible: true,
|
|
35
33
|
getDomainFromUrl: true,
|
|
36
34
|
waitTimeout: true,
|
|
37
35
|
stripUrl: true,
|
|
@@ -47,8 +45,6 @@ Object.defineProperty(exports, "canDerive", {
|
|
|
47
45
|
return _canDerive.canDerive;
|
|
48
46
|
}
|
|
49
47
|
});
|
|
50
|
-
exports.categoryAddresses = categoryAddresses;
|
|
51
|
-
exports.categoryNetworks = categoryNetworks;
|
|
52
48
|
exports.convertFundStatus = void 0;
|
|
53
49
|
exports.convertToEvmAddress = convertToEvmAddress;
|
|
54
50
|
exports.filterAddressByNetworkKey = filterAddressByNetworkKey;
|
|
@@ -58,15 +54,15 @@ exports.getNftProvider = void 0;
|
|
|
58
54
|
exports.hexToStr = hexToStr;
|
|
59
55
|
exports.hexToUTF16 = hexToUTF16;
|
|
60
56
|
exports.inJestTest = inJestTest;
|
|
61
|
-
exports.
|
|
57
|
+
exports.isAddressAndChainCompatible = isAddressAndChainCompatible;
|
|
62
58
|
exports.isEmptyArray = exports.isDef = exports.isAddressesEqual = void 0;
|
|
63
59
|
exports.isSameAddress = isSameAddress;
|
|
60
|
+
exports.isSameAddressType = isSameAddressType;
|
|
64
61
|
exports.isUrl = isUrl;
|
|
65
62
|
exports.isValidSubstrateAddress = exports.isValidProvider = void 0;
|
|
66
63
|
exports.mergeNetworkProviders = mergeNetworkProviders;
|
|
67
64
|
exports.parseIpfsLink = exports.notDef = exports.nonEmptyArr = void 0;
|
|
68
65
|
exports.parseRawNumber = parseRawNumber;
|
|
69
|
-
exports.reformatAddress = reformatAddress;
|
|
70
66
|
exports.stripUrl = void 0;
|
|
71
67
|
exports.sumBN = sumBN;
|
|
72
68
|
exports.toUnit = exports.swParseIPFSUrl = void 0;
|
|
@@ -74,8 +70,10 @@ exports.utf16ToString = utf16ToString;
|
|
|
74
70
|
exports.wait = wait;
|
|
75
71
|
exports.waitTimeout = waitTimeout;
|
|
76
72
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
77
|
-
var _constants = require("@subwallet/extension-base/constants");
|
|
78
73
|
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
74
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
75
|
+
var _account = require("@subwallet/extension-base/utils/account");
|
|
76
|
+
var _keyring = require("@subwallet/keyring");
|
|
79
77
|
var _i18next = require("i18next");
|
|
80
78
|
var _util = require("@polkadot/util");
|
|
81
79
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
@@ -104,15 +102,15 @@ Object.keys(_fetch).forEach(function (key) {
|
|
|
104
102
|
}
|
|
105
103
|
});
|
|
106
104
|
});
|
|
107
|
-
var
|
|
108
|
-
Object.keys(
|
|
105
|
+
var _account2 = require("./account");
|
|
106
|
+
Object.keys(_account2).forEach(function (key) {
|
|
109
107
|
if (key === "default" || key === "__esModule") return;
|
|
110
108
|
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
111
|
-
if (key in exports && exports[key] ===
|
|
109
|
+
if (key in exports && exports[key] === _account2[key]) return;
|
|
112
110
|
Object.defineProperty(exports, key, {
|
|
113
111
|
enumerable: true,
|
|
114
112
|
get: function () {
|
|
115
|
-
return
|
|
113
|
+
return _account2[key];
|
|
116
114
|
}
|
|
117
115
|
});
|
|
118
116
|
});
|
|
@@ -140,6 +138,18 @@ Object.keys(_asset).forEach(function (key) {
|
|
|
140
138
|
}
|
|
141
139
|
});
|
|
142
140
|
});
|
|
141
|
+
var _auth = require("./auth");
|
|
142
|
+
Object.keys(_auth).forEach(function (key) {
|
|
143
|
+
if (key === "default" || key === "__esModule") return;
|
|
144
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
145
|
+
if (key in exports && exports[key] === _auth[key]) return;
|
|
146
|
+
Object.defineProperty(exports, key, {
|
|
147
|
+
enumerable: true,
|
|
148
|
+
get: function () {
|
|
149
|
+
return _auth[key];
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
});
|
|
143
153
|
var _environment = require("./environment");
|
|
144
154
|
Object.keys(_environment).forEach(function (key) {
|
|
145
155
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -306,36 +316,11 @@ exports.isDef = isDef;
|
|
|
306
316
|
const nonEmptyArr = x => Array.isArray(x) && x.length > 0;
|
|
307
317
|
exports.nonEmptyArr = nonEmptyArr;
|
|
308
318
|
const isEmptyArray = x => !Array.isArray(x) || Array.isArray(x) && x.length === 0;
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* @deprecated
|
|
322
|
+
* */
|
|
309
323
|
exports.isEmptyArray = isEmptyArray;
|
|
310
|
-
function isAccountAll(address) {
|
|
311
|
-
return address === _constants.ALL_ACCOUNT_KEY;
|
|
312
|
-
}
|
|
313
|
-
function reformatAddress(address) {
|
|
314
|
-
let networkPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 42;
|
|
315
|
-
let isEthereum = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
316
|
-
try {
|
|
317
|
-
if (!address || address === '') {
|
|
318
|
-
return '';
|
|
319
|
-
}
|
|
320
|
-
if ((0, _utilCrypto.isEthereumAddress)(address)) {
|
|
321
|
-
return address;
|
|
322
|
-
}
|
|
323
|
-
if (isAccountAll(address)) {
|
|
324
|
-
return address;
|
|
325
|
-
}
|
|
326
|
-
const publicKey = (0, _utilCrypto.decodeAddress)(address);
|
|
327
|
-
if (isEthereum) {
|
|
328
|
-
return (0, _utilCrypto.ethereumEncode)(publicKey);
|
|
329
|
-
}
|
|
330
|
-
if (networkPrefix < 0) {
|
|
331
|
-
return address;
|
|
332
|
-
}
|
|
333
|
-
return (0, _utilCrypto.encodeAddress)(publicKey, networkPrefix);
|
|
334
|
-
} catch (e) {
|
|
335
|
-
console.warn('Get error while reformat address', address, e);
|
|
336
|
-
return address;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
324
|
function filterAddressByNetworkKey(addresses, networkKey, isEthereum) {
|
|
340
325
|
if (isEthereum) {
|
|
341
326
|
return addresses.filter(address => {
|
|
@@ -347,25 +332,12 @@ function filterAddressByNetworkKey(addresses, networkKey, isEthereum) {
|
|
|
347
332
|
});
|
|
348
333
|
}
|
|
349
334
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if ((0, _utilCrypto.isEthereumAddress)(address)) {
|
|
355
|
-
evmAddresses.push(address);
|
|
356
|
-
} else {
|
|
357
|
-
substrateAddresses.push(address);
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
return [substrateAddresses, evmAddresses];
|
|
361
|
-
}
|
|
362
|
-
function categoryNetworks(networks) {
|
|
363
|
-
const substrateAddresses = [];
|
|
364
|
-
const evmAddresses = [];
|
|
365
|
-
return [substrateAddresses, evmAddresses];
|
|
366
|
-
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* @deprecated
|
|
338
|
+
* */
|
|
367
339
|
function convertToEvmAddress(substrateAddress) {
|
|
368
|
-
const addressBytes = (0,
|
|
340
|
+
const addressBytes = (0, _keyring.decodeAddress)(substrateAddress);
|
|
369
341
|
return (0, _utilCrypto.ethereumEncode)('0x' + Buffer.from(addressBytes.subarray(0, 20)).toString('hex'));
|
|
370
342
|
}
|
|
371
343
|
function isUrl(targetString) {
|
|
@@ -436,7 +408,7 @@ function hexToUTF16(hex) {
|
|
|
436
408
|
}
|
|
437
409
|
const isValidSubstrateAddress = address => {
|
|
438
410
|
try {
|
|
439
|
-
(0,
|
|
411
|
+
(0, _keyring.encodeAddress)((0, _util.isHex)(address) ? (0, _util.hexToU8a)(address) : (0, _keyring.decodeAddress)(address));
|
|
440
412
|
return true;
|
|
441
413
|
} catch (error) {
|
|
442
414
|
return false;
|
|
@@ -579,9 +551,23 @@ function isSameAddress(address1, address2) {
|
|
|
579
551
|
if ((0, _utilCrypto.isEthereumAddress)(address1)) {
|
|
580
552
|
return address1.toLowerCase() === address2.toLowerCase();
|
|
581
553
|
}
|
|
582
|
-
return reformatAddress(address1, 0) === reformatAddress(address2, 0); // TODO: maybe there's a better way
|
|
554
|
+
return (0, _account.reformatAddress)(address1, 0) === (0, _account.reformatAddress)(address2, 0); // TODO: maybe there's a better way
|
|
583
555
|
}
|
|
584
556
|
|
|
557
|
+
function isSameAddressType(address1, address2) {
|
|
558
|
+
const isSameEvmAddress = (0, _utilCrypto.isEthereumAddress)(address1) && (0, _utilCrypto.isEthereumAddress)(address2);
|
|
559
|
+
const isSameTonAddress = (0, _keyring.isTonAddress)(address1) && (0, _keyring.isTonAddress)(address2);
|
|
560
|
+
const isSameSubstrateAddress = !(0, _utilCrypto.isEthereumAddress)(address1) && !(0, _keyring.isTonAddress)(address1) && !(0, _utilCrypto.isEthereumAddress)(address2) && !(0, _keyring.isTonAddress)(address2); // todo: need isSubstrateAddress util function to check exactly
|
|
561
|
+
|
|
562
|
+
return isSameEvmAddress || isSameTonAddress || isSameSubstrateAddress;
|
|
563
|
+
}
|
|
564
|
+
function isAddressAndChainCompatible(address, chain) {
|
|
565
|
+
const isEvmCompatible = (0, _utilCrypto.isEthereumAddress)(address) && (0, _utils._isChainEvmCompatible)(chain);
|
|
566
|
+
const isTonCompatible = (0, _keyring.isTonAddress)(address) && (0, _utils._isChainTonCompatible)(chain);
|
|
567
|
+
const isSubstrateCompatible = !(0, _utilCrypto.isEthereumAddress)(address) && !(0, _keyring.isTonAddress)(address) && (0, _utils._isChainSubstrateCompatible)(chain); // todo: need isSubstrateAddress util function to check exactly
|
|
568
|
+
|
|
569
|
+
return isEvmCompatible || isSubstrateCompatible || isTonCompatible;
|
|
570
|
+
}
|
|
585
571
|
function getDomainFromUrl(url) {
|
|
586
572
|
return url.replace(/^(https?:\/\/)?(www\.)?/, '').split('/')[0];
|
|
587
573
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isProductionMode: boolean;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
5
|
+
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
6
|
+
export const isProductionMode = PRODUCTION_BRANCHES.indexOf(branchName) > -1;
|
package/constants/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AccountAuthType } from '@subwallet/extension-base/background/types';
|
|
1
2
|
export declare const BASE_SECOND_INTERVAL = 1000;
|
|
2
3
|
export declare const BASE_MINUTE_INTERVAL: number;
|
|
3
4
|
export declare const CRON_REFRESH_PRICE_INTERVAL = 30000;
|
|
@@ -22,6 +23,7 @@ export declare const ALL_ACCOUNT_KEY = "ALL";
|
|
|
22
23
|
export declare const ALL_NETWORK_KEY = "all";
|
|
23
24
|
export declare const ALL_GENESIS_HASH: null;
|
|
24
25
|
export declare const IGNORE_GET_SUBSTRATE_FEATURES_LIST: string[];
|
|
26
|
+
export declare const ALL_ACCOUNT_AUTH_TYPES: AccountAuthType[];
|
|
25
27
|
export declare const IGNORE_QR_SIGNER: string[];
|
|
26
28
|
export declare const XCM_MIN_AMOUNT_RATIO = 1.2;
|
|
27
29
|
export declare const XCM_FEE_RATIO = 2;
|
|
@@ -30,6 +32,8 @@ export declare const NETWORK_MULTI_GAS_FEE: string[];
|
|
|
30
32
|
export declare const ORDINAL_COLLECTION = "__Ordinal__";
|
|
31
33
|
export declare const ORDINAL_METHODS: string[];
|
|
32
34
|
export declare const PERMISSIONS_TO_REVOKE: string[];
|
|
35
|
+
export * from './blocked-actions-list';
|
|
36
|
+
export * from './environment';
|
|
37
|
+
export * from './signing';
|
|
33
38
|
export * from './staking';
|
|
34
39
|
export * from './storage';
|
|
35
|
-
export * from './blocked-actions-list';
|
package/constants/index.js
CHANGED
|
@@ -25,6 +25,7 @@ export const ALL_ACCOUNT_KEY = 'ALL';
|
|
|
25
25
|
export const ALL_NETWORK_KEY = 'all';
|
|
26
26
|
export const ALL_GENESIS_HASH = null;
|
|
27
27
|
export const IGNORE_GET_SUBSTRATE_FEATURES_LIST = ['astarEvm', 'ethereum', 'ethereum_goerli', 'binance', 'binance_test', 'boba_rinkeby', 'boba', 'bobabase', 'bobabeam'];
|
|
28
|
+
export const ALL_ACCOUNT_AUTH_TYPES = ['evm', 'substrate', 'ton'];
|
|
28
29
|
export const IGNORE_QR_SIGNER = [];
|
|
29
30
|
export const XCM_MIN_AMOUNT_RATIO = 1.2;
|
|
30
31
|
export const XCM_FEE_RATIO = 2;
|
|
@@ -33,6 +34,8 @@ export const NETWORK_MULTI_GAS_FEE = ['*'];
|
|
|
33
34
|
export const ORDINAL_COLLECTION = '__Ordinal__';
|
|
34
35
|
export const ORDINAL_METHODS = ['drc-20', 'pol-20'];
|
|
35
36
|
export const PERMISSIONS_TO_REVOKE = ['eth_accounts'];
|
|
37
|
+
export * from "./blocked-actions-list.js";
|
|
38
|
+
export * from "./environment.js";
|
|
39
|
+
export * from "./signing.js";
|
|
36
40
|
export * from "./staking.js";
|
|
37
|
-
export * from "./storage.js";
|
|
38
|
-
export * from "./blocked-actions-list.js";
|
|
41
|
+
export * from "./storage.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ChainType } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
|
+
import { AccountChainType } from '@subwallet/extension-base/types';
|
|
3
|
+
export declare const SIGNING_COMPATIBLE_MAP: Record<ChainType, AccountChainType[]>;
|
|
4
|
+
export declare const LEDGER_SIGNING_COMPATIBLE_MAP: Record<ChainType, AccountChainType[]>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { ChainType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
|
+
import { AccountChainType } from '@subwallet/extension-base/types';
|
|
6
|
+
export const SIGNING_COMPATIBLE_MAP = {
|
|
7
|
+
[ChainType.SUBSTRATE]: [AccountChainType.SUBSTRATE, AccountChainType.ETHEREUM],
|
|
8
|
+
[ChainType.EVM]: [AccountChainType.ETHEREUM],
|
|
9
|
+
[ChainType.TON]: [AccountChainType.TON]
|
|
10
|
+
};
|
|
11
|
+
export const LEDGER_SIGNING_COMPATIBLE_MAP = {
|
|
12
|
+
[ChainType.SUBSTRATE]: [AccountChainType.SUBSTRATE],
|
|
13
|
+
[ChainType.EVM]: [AccountChainType.ETHEREUM],
|
|
14
|
+
[ChainType.TON]: [AccountChainType.TON]
|
|
15
|
+
};
|
package/constants/storage.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export declare const DEFAULT_LANGUAGE = "en";
|
|
|
3
3
|
export declare const CURRENCY = "current-currency";
|
|
4
4
|
export declare const REMIND_EXPORT_ACCOUNT = "remind_export_account";
|
|
5
5
|
export declare const LATEST_SESSION = "general.latest-session";
|
|
6
|
+
export declare const UPGRADE_DUPLICATE_ACCOUNT_NAME = "general.upgrade-duplicate-account-name";
|
package/constants/storage.js
CHANGED
|
@@ -5,4 +5,5 @@ export const LANGUAGE = 'current-language';
|
|
|
5
5
|
export const DEFAULT_LANGUAGE = 'en';
|
|
6
6
|
export const CURRENCY = 'current-currency';
|
|
7
7
|
export const REMIND_EXPORT_ACCOUNT = 'remind_export_account';
|
|
8
|
-
export const LATEST_SESSION = 'general.latest-session';
|
|
8
|
+
export const LATEST_SESSION = 'general.latest-session';
|
|
9
|
+
export const UPGRADE_DUPLICATE_ACCOUNT_NAME = 'general.upgrade-duplicate-account-name';
|
package/core/consts.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LEDGER_GENERIC_ALLOW_NETWORKS: string[];
|
package/core/consts.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
export const LEDGER_GENERIC_ALLOW_NETWORKS = ['polkadot', 'statemint', 'bridgeHubPolkadot', 'collectives', 'centrifuge', 'manta_network', 'ajunaPolkadot', 'astar', 'bifrost_dot', 'hydradx_main', 'kusama', 'encointer', 'statemine', 'bridgeHubKusama', 'peopleKusama', 'altair', 'bajun', 'bifrost', 'calamari', 'shiden', 'tinkernet', 'rococo', 'rococo_assethub', 'hydradx_rococo', 'bifrost_testnet', 'westend', 'shibuya'];
|
|
5
|
+
|
|
6
|
+
// export const ERROR_MESSAGE_MAP: Record<ValidationCondition, string> = {
|
|
7
|
+
// IS_NOT_NULL: 'Recipient address is required.',
|
|
8
|
+
// IS_ADDRESS: 'Invalid recipient address.',
|
|
9
|
+
// IS_VALID_ADDRESS_FOR_ECOSYSTEM: 'The recipient address must be {{chainType}} type',
|
|
10
|
+
// IS_VALID_SUBSTRATE_ADDRESS_FORMAT: 'Recipient should be a valid {{destChainName}} address',
|
|
11
|
+
// IS_NOT_DUPLICATE_ADDRESS: 'The recipient address can not be the same as the sender address',
|
|
12
|
+
// IS_SUPPORT_LEDGER_ACCOUNT: 'Ledger {{ledgerType}} address is not supported for this transfer'
|
|
13
|
+
// };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { ActionType, ValidationCondition } from '@subwallet/extension-base/core/types';
|
|
5
|
+
import { _isAddress, _isNotDuplicateAddress, _isNotNull, _isSupportLedgerAccount, _isValidAddressForEcosystem, _isValidSubstrateAddressFormat, _isValidTonAddressFormat } from '@subwallet/extension-base/core/utils';
|
|
6
|
+
import { AccountSignMode } from '@subwallet/extension-base/types';
|
|
7
|
+
import { detectTranslate } from '@subwallet/extension-base/utils';
|
|
8
|
+
import { isSubstrateAddress, isTonAddress } from '@subwallet/keyring';
|
|
9
|
+
function getConditions(validateRecipientParams) {
|
|
10
|
+
const {
|
|
11
|
+
account,
|
|
12
|
+
actionType,
|
|
13
|
+
autoFormatValue,
|
|
14
|
+
destChainInfo,
|
|
15
|
+
srcChain,
|
|
16
|
+
toAddress
|
|
17
|
+
} = validateRecipientParams;
|
|
18
|
+
const conditions = [];
|
|
19
|
+
const isSendAction = [ActionType.SEND_FUND, ActionType.SEND_NFT].includes(actionType);
|
|
20
|
+
conditions.push(ValidationCondition.IS_NOT_NULL);
|
|
21
|
+
conditions.push(ValidationCondition.IS_ADDRESS);
|
|
22
|
+
conditions.push(ValidationCondition.IS_VALID_ADDRESS_FOR_ECOSYSTEM);
|
|
23
|
+
if (isSubstrateAddress(toAddress) && !autoFormatValue) {
|
|
24
|
+
// todo: need isSubstrateAddress util function to check exactly
|
|
25
|
+
conditions.push(ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT);
|
|
26
|
+
}
|
|
27
|
+
if (isTonAddress(toAddress)) {
|
|
28
|
+
conditions.push(ValidationCondition.IS_VALID_TON_ADDRESS_FORMAT);
|
|
29
|
+
}
|
|
30
|
+
if (srcChain === destChainInfo.slug && isSendAction && !destChainInfo.tonInfo) {
|
|
31
|
+
conditions.push(ValidationCondition.IS_NOT_DUPLICATE_ADDRESS);
|
|
32
|
+
}
|
|
33
|
+
if (account !== null && account !== void 0 && account.isHardware) {
|
|
34
|
+
conditions.push(ValidationCondition.IS_SUPPORT_LEDGER_ACCOUNT);
|
|
35
|
+
if (account.signMode === AccountSignMode.LEGACY_LEDGER) {
|
|
36
|
+
conditions.push(ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return conditions;
|
|
40
|
+
}
|
|
41
|
+
function getValidationFunctions(conditions) {
|
|
42
|
+
const validationFunctions = [];
|
|
43
|
+
for (const condition of conditions) {
|
|
44
|
+
switch (condition) {
|
|
45
|
+
case ValidationCondition.IS_NOT_NULL:
|
|
46
|
+
{
|
|
47
|
+
validationFunctions.push(_isNotNull);
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case ValidationCondition.IS_ADDRESS:
|
|
51
|
+
{
|
|
52
|
+
validationFunctions.push(_isAddress);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case ValidationCondition.IS_VALID_ADDRESS_FOR_ECOSYSTEM:
|
|
56
|
+
{
|
|
57
|
+
validationFunctions.push(_isValidAddressForEcosystem);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT:
|
|
61
|
+
{
|
|
62
|
+
validationFunctions.push(_isValidSubstrateAddressFormat);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case ValidationCondition.IS_VALID_TON_ADDRESS_FORMAT:
|
|
66
|
+
{
|
|
67
|
+
validationFunctions.push(_isValidTonAddressFormat);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case ValidationCondition.IS_NOT_DUPLICATE_ADDRESS:
|
|
71
|
+
{
|
|
72
|
+
validationFunctions.push(_isNotDuplicateAddress);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case ValidationCondition.IS_SUPPORT_LEDGER_ACCOUNT:
|
|
76
|
+
{
|
|
77
|
+
validationFunctions.push(_isSupportLedgerAccount);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return validationFunctions;
|
|
83
|
+
}
|
|
84
|
+
function runValidationFunctions(validateRecipientParams, validationFunctions) {
|
|
85
|
+
const validationResults = [];
|
|
86
|
+
for (const validationFunction of validationFunctions) {
|
|
87
|
+
validationResults.push(validationFunction(validateRecipientParams));
|
|
88
|
+
}
|
|
89
|
+
for (const result of validationResults) {
|
|
90
|
+
if (result) {
|
|
91
|
+
return Promise.reject(detectTranslate(result));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return Promise.resolve();
|
|
95
|
+
}
|
|
96
|
+
export function validateRecipientAddress(validateRecipientParams) {
|
|
97
|
+
const conditions = getConditions(validateRecipientParams);
|
|
98
|
+
const validationFunctions = getValidationFunctions(conditions);
|
|
99
|
+
return runValidationFunctions(validateRecipientParams, validationFunctions);
|
|
100
|
+
}
|
|
@@ -4,10 +4,12 @@
|
|
|
4
4
|
import { typedSignatureHash } from '@metamask/eth-sig-util';
|
|
5
5
|
import { EvmProviderError } from '@subwallet/extension-base/background/errors/EvmProviderError';
|
|
6
6
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
7
|
-
import {
|
|
7
|
+
import { EvmProviderErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
8
8
|
import { calculateGasFeeParams } from '@subwallet/extension-base/services/fee-service/utils';
|
|
9
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
9
10
|
import { BN_ZERO, createPromiseHandler, isSameAddress, stripUrl, wait } from '@subwallet/extension-base/utils';
|
|
10
11
|
import { isContractAddress, parseContractInput } from '@subwallet/extension-base/utils/eth/parseTransaction';
|
|
12
|
+
import { isSubstrateAddress } from '@subwallet/keyring';
|
|
11
13
|
import { keyring } from '@subwallet/ui-keyring';
|
|
12
14
|
import { getSdkError } from '@walletconnect/utils';
|
|
13
15
|
import BigN from 'bignumber.js';
|
|
@@ -237,8 +239,7 @@ export async function validationEvmDataTransactionMiddleware(koni, url, payload)
|
|
|
237
239
|
const transactionParams = payload.payloadAfterValidated;
|
|
238
240
|
const {
|
|
239
241
|
address: fromAddress,
|
|
240
|
-
networkKey
|
|
241
|
-
pair
|
|
242
|
+
networkKey
|
|
242
243
|
} = payload;
|
|
243
244
|
const evmApi = koni.getEvmApi(networkKey || '');
|
|
244
245
|
const web3 = evmApi === null || evmApi === void 0 ? void 0 : evmApi.api;
|
|
@@ -357,11 +358,6 @@ export async function validationEvmDataTransactionMiddleware(koni, url, payload)
|
|
|
357
358
|
handleError(e.message);
|
|
358
359
|
}
|
|
359
360
|
}
|
|
360
|
-
const pair_ = pair || keyring.getPair(fromAddress);
|
|
361
|
-
const account = {
|
|
362
|
-
address: fromAddress,
|
|
363
|
-
...(pair_ === null || pair_ === void 0 ? void 0 : pair_.meta)
|
|
364
|
-
};
|
|
365
361
|
try {
|
|
366
362
|
transaction.nonce = await web3.eth.getTransactionCount(fromAddress);
|
|
367
363
|
} catch (e) {
|
|
@@ -384,7 +380,7 @@ export async function validationEvmDataTransactionMiddleware(koni, url, payload)
|
|
|
384
380
|
errors,
|
|
385
381
|
payloadAfterValidated: {
|
|
386
382
|
...transaction,
|
|
387
|
-
|
|
383
|
+
address: fromAddress,
|
|
388
384
|
estimateGas,
|
|
389
385
|
hashPayload,
|
|
390
386
|
isToContract,
|
|
@@ -419,10 +415,6 @@ export async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
419
415
|
handleError('Not found address or payload to sign');
|
|
420
416
|
}
|
|
421
417
|
const pair = pair_ || keyring.getPair(address);
|
|
422
|
-
const account = {
|
|
423
|
-
address: pair.address,
|
|
424
|
-
...pair.meta
|
|
425
|
-
};
|
|
426
418
|
if (method) {
|
|
427
419
|
if (['eth_sign', 'personal_sign', 'eth_signTypedData', 'eth_signTypedData_v1', 'eth_signTypedData_v3', 'eth_signTypedData_v4'].indexOf(method) < 0) {
|
|
428
420
|
handleError('Unsupported action');
|
|
@@ -438,13 +430,13 @@ export async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
438
430
|
hashPayload = payload;
|
|
439
431
|
break;
|
|
440
432
|
case 'eth_sign':
|
|
441
|
-
if (!
|
|
433
|
+
if (!pair.meta.isExternal) {
|
|
442
434
|
canSign = true;
|
|
443
435
|
}
|
|
444
436
|
break;
|
|
445
437
|
case 'eth_signTypedData':
|
|
446
438
|
case 'eth_signTypedData_v1':
|
|
447
|
-
if (!
|
|
439
|
+
if (!pair.meta.isExternal) {
|
|
448
440
|
canSign = true;
|
|
449
441
|
}
|
|
450
442
|
payload = validateTypedSignMessageDataV1({
|
|
@@ -454,7 +446,7 @@ export async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
454
446
|
break;
|
|
455
447
|
case 'eth_signTypedData_v3':
|
|
456
448
|
case 'eth_signTypedData_v4':
|
|
457
|
-
if (!
|
|
449
|
+
if (!pair.meta.isExternal) {
|
|
458
450
|
canSign = true;
|
|
459
451
|
}
|
|
460
452
|
payload = validateTypedSignMessageDataV3V4({
|
|
@@ -473,7 +465,7 @@ export async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
473
465
|
handleError('Unsupported method');
|
|
474
466
|
}
|
|
475
467
|
const payloadAfterValidated = {
|
|
476
|
-
|
|
468
|
+
address,
|
|
477
469
|
type: method || '',
|
|
478
470
|
payload: payload,
|
|
479
471
|
hashPayload: hashPayload,
|
|
@@ -505,7 +497,7 @@ export function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
505
497
|
if (isEthereumAddress(address)) {
|
|
506
498
|
var _requestSession$names;
|
|
507
499
|
sessionAccounts = ((_requestSession$names = requestSession.namespaces.eip155.accounts) === null || _requestSession$names === void 0 ? void 0 : _requestSession$names.map(account => account.split(':')[2])) || sessionAccounts;
|
|
508
|
-
} else {
|
|
500
|
+
} else if (isSubstrateAddress(address)) {
|
|
509
501
|
var _requestSession$names2;
|
|
510
502
|
sessionAccounts = ((_requestSession$names2 = requestSession.namespaces.polkadot.accounts) === null || _requestSession$names2 === void 0 ? void 0 : _requestSession$names2.map(account => account.split(':')[2])) || sessionAccounts;
|
|
511
503
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
5
5
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
6
|
-
import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
6
|
import { _getAssetDecimals, _getTokenMinAmount, _isChainEvmCompatible, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
7
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
8
8
|
import { SwapErrorType } from '@subwallet/extension-base/types/swap';
|
|
9
9
|
import { formatNumber } from '@subwallet/extension-base/utils';
|
|
10
10
|
import BigN from 'bignumber.js';
|
|
@@ -2,7 +2,7 @@ import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
|
2
2
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
3
3
|
import { _Address, AmountData, ExtrinsicType, FeeData } from '@subwallet/extension-base/background/KoniTypes';
|
|
4
4
|
import { TransactionWarning } from '@subwallet/extension-base/background/warnings/TransactionWarning';
|
|
5
|
-
import { _EvmApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
5
|
+
import { _EvmApi, _TonApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
6
6
|
import { OptionalSWTransaction, SWTransactionInput, SWTransactionResponse } from '@subwallet/extension-base/services/transaction-service/types';
|
|
7
7
|
import { KeyringPair } from '@subwallet/keyring/types';
|
|
8
8
|
import BigN from 'bignumber.js';
|
|
@@ -14,5 +14,6 @@ export declare function checkSupportForFeature(validationResponse: SWTransaction
|
|
|
14
14
|
export declare function checkSupportForAction(validationResponse: SWTransactionResponse, blockedActionsMap: Record<ExtrinsicType, string[]>): void;
|
|
15
15
|
export declare function checkSupportForTransaction(validationResponse: SWTransactionResponse, transaction: OptionalSWTransaction): void;
|
|
16
16
|
export declare function estimateFeeForTransaction(validationResponse: SWTransactionResponse, transaction: OptionalSWTransaction, chainInfo: _ChainInfo, evmApi: _EvmApi): Promise<FeeData>;
|
|
17
|
-
export declare function checkSigningAccountForTransaction(validationResponse: SWTransactionResponse): void;
|
|
17
|
+
export declare function checkSigningAccountForTransaction(validationResponse: SWTransactionResponse, chainInfoMap: Record<string, _ChainInfo>): void;
|
|
18
18
|
export declare function checkBalanceWithTransactionFee(validationResponse: SWTransactionResponse, transactionInput: SWTransactionInput, nativeTokenInfo: _ChainAsset, nativeTokenAvailable: AmountData): void;
|
|
19
|
+
export declare function checkTonAddressBounceableAndAccountNotActive(tonApi: _TonApi, validationResponse: SWTransactionResponse): Promise<void>;
|
|
@@ -2,15 +2,18 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
5
|
-
import {
|
|
5
|
+
import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
6
|
import { TransactionWarning } from '@subwallet/extension-base/background/warnings/TransactionWarning';
|
|
7
|
-
import { XCM_MIN_AMOUNT_RATIO } from '@subwallet/extension-base/constants';
|
|
7
|
+
import { LEDGER_SIGNING_COMPATIBLE_MAP, SIGNING_COMPATIBLE_MAP, XCM_MIN_AMOUNT_RATIO } from '@subwallet/extension-base/constants';
|
|
8
8
|
import { _canAccountBeReaped } from '@subwallet/extension-base/core/substrate/system-pallet';
|
|
9
|
+
import { isBounceableAddress } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils';
|
|
9
10
|
import { _TRANSFER_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
10
|
-
import { _getChainExistentialDeposit, _getChainNativeTokenBasicInfo, _getContractAddressOfToken, _getTokenMinAmount, _isNativeToken, _isTokenEvmSmartContract } from '@subwallet/extension-base/services/chain-service/utils';
|
|
11
|
+
import { _getChainExistentialDeposit, _getChainNativeTokenBasicInfo, _getContractAddressOfToken, _getTokenMinAmount, _isNativeToken, _isTokenEvmSmartContract, _isTokenTonSmartContract } from '@subwallet/extension-base/services/chain-service/utils';
|
|
11
12
|
import { calculateGasFeeParams } from '@subwallet/extension-base/services/fee-service/utils';
|
|
12
|
-
import { isSubstrateTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
|
|
13
|
-
import {
|
|
13
|
+
import { isSubstrateTransaction, isTonTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
|
|
14
|
+
import { AccountSignMode, BasicTxErrorType, BasicTxWarningCode, TransferTxErrorType } from '@subwallet/extension-base/types';
|
|
15
|
+
import { balanceFormatter, formatNumber, pairToAccount } from '@subwallet/extension-base/utils';
|
|
16
|
+
import { isTonAddress } from '@subwallet/keyring';
|
|
14
17
|
import { keyring } from '@subwallet/ui-keyring';
|
|
15
18
|
import BigN from 'bignumber.js';
|
|
16
19
|
import { t } from 'i18next';
|
|
@@ -35,6 +38,9 @@ export function validateTransferRequest(tokenInfo, from, to, value, transferAll)
|
|
|
35
38
|
if (isEthereumAddress(from) && isEthereumAddress(to) && _isTokenEvmSmartContract(tokenInfo) && _getContractAddressOfToken(tokenInfo).length === 0) {
|
|
36
39
|
errors.push(new TransactionError(BasicTxErrorType.INVALID_PARAMS, t('Not found ERC20 address for this token')));
|
|
37
40
|
}
|
|
41
|
+
if (isTonAddress(from) && isTonAddress(to) && _isTokenTonSmartContract(tokenInfo) && _getContractAddressOfToken(tokenInfo).length === 0) {
|
|
42
|
+
errors.push(new TransactionError(BasicTxErrorType.INVALID_PARAMS, t('Not found TEP74 address for this token')));
|
|
43
|
+
}
|
|
38
44
|
return [errors, keypair, transferValue];
|
|
39
45
|
}
|
|
40
46
|
export function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, receiverTransferTokenFreeBalance, transferAmount, senderTransferTokenTransferable, receiverNativeTransferable) {
|
|
@@ -333,6 +339,8 @@ export async function estimateFeeForTransaction(validationResponse, transaction,
|
|
|
333
339
|
try {
|
|
334
340
|
if (isSubstrateTransaction(transaction)) {
|
|
335
341
|
estimateFee.value = (await transaction.paymentInfo(validationResponse.address)).partialFee.toString();
|
|
342
|
+
} else if (isTonTransaction(transaction)) {
|
|
343
|
+
estimateFee.value = transaction.estimateFee; // todo: might need to update logic estimate fee inside for future actions excluding normal transfer Ton and Jetton
|
|
336
344
|
} else {
|
|
337
345
|
const gasLimit = await evmApi.api.eth.estimateGas(transaction);
|
|
338
346
|
const priority = await calculateGasFeeParams(evmApi, chainInfo.slug);
|
|
@@ -354,14 +362,30 @@ export async function estimateFeeForTransaction(validationResponse, transaction,
|
|
|
354
362
|
}
|
|
355
363
|
return estimateFee;
|
|
356
364
|
}
|
|
357
|
-
export function checkSigningAccountForTransaction(validationResponse) {
|
|
358
|
-
const
|
|
365
|
+
export function checkSigningAccountForTransaction(validationResponse, chainInfoMap) {
|
|
366
|
+
const {
|
|
367
|
+
address,
|
|
368
|
+
chain,
|
|
369
|
+
chainType,
|
|
370
|
+
extrinsicType
|
|
371
|
+
} = validationResponse;
|
|
372
|
+
const pair = keyring.getPair(address);
|
|
359
373
|
if (!pair) {
|
|
360
374
|
validationResponse.errors.push(new TransactionError(BasicTxErrorType.INTERNAL_ERROR, t('Unable to find account')));
|
|
361
375
|
} else {
|
|
362
|
-
|
|
363
|
-
if (
|
|
364
|
-
|
|
376
|
+
const accountJson = pairToAccount(pair, chainInfoMap);
|
|
377
|
+
if (!accountJson.transactionActions.includes(extrinsicType)) {
|
|
378
|
+
// check if the account can sign the transaction type
|
|
379
|
+
validationResponse.errors.push(new TransactionError(BasicTxErrorType.INVALID_PARAMS, t('This feature is not available with this account')));
|
|
380
|
+
} else if (accountJson.specialChain && accountJson.specialChain !== chain) {
|
|
381
|
+
// check if the account can only be used on a specific chain (for ledger legacy)
|
|
382
|
+
validationResponse.errors.push(new TransactionError(BasicTxErrorType.INVALID_PARAMS, t('This feature is not available with this account')));
|
|
383
|
+
} else {
|
|
384
|
+
const compatibleMap = [AccountSignMode.LEGACY_LEDGER, AccountSignMode.GENERIC_LEDGER].includes(accountJson.signMode) ? LEDGER_SIGNING_COMPATIBLE_MAP : SIGNING_COMPATIBLE_MAP;
|
|
385
|
+
if (!compatibleMap[chainType].includes(accountJson.chainType)) {
|
|
386
|
+
// check if the account chain type is compatible with the transaction chain type
|
|
387
|
+
validationResponse.errors.push(new TransactionError(BasicTxErrorType.INVALID_PARAMS, t('This feature is not available with this account')));
|
|
388
|
+
}
|
|
365
389
|
}
|
|
366
390
|
}
|
|
367
391
|
}
|
|
@@ -396,4 +420,20 @@ export function checkBalanceWithTransactionFee(validationResponse, transactionIn
|
|
|
396
420
|
if (isNeedCheckRemainingBalance && isRemainingBalanceValid) {
|
|
397
421
|
edAsWarning ? validationResponse.warnings.push(new TransactionWarning(BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT)) : validationResponse.errors.push(new TransactionError(BasicTxErrorType.NOT_ENOUGH_EXISTENTIAL_DEPOSIT));
|
|
398
422
|
}
|
|
423
|
+
}
|
|
424
|
+
export async function checkTonAddressBounceableAndAccountNotActive(tonApi, validationResponse) {
|
|
425
|
+
const {
|
|
426
|
+
to
|
|
427
|
+
} = validationResponse.data;
|
|
428
|
+
const isActive = await isAccountActive(tonApi, to);
|
|
429
|
+
if (isTonAddressBounceable(to) && !isActive) {
|
|
430
|
+
validationResponse.warnings.push(new TransactionWarning(BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS));
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
function isTonAddressBounceable(address) {
|
|
434
|
+
return isBounceableAddress(address);
|
|
435
|
+
}
|
|
436
|
+
async function isAccountActive(tonApi, address) {
|
|
437
|
+
const state = await tonApi.getAccountState(address);
|
|
438
|
+
return state === 'active';
|
|
399
439
|
}
|