@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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
import TonRequestHandler from "./handler/TonRequestHandler.js";
|
|
4
5
|
import { AuthRequestHandler, ConnectWCRequestHandler, EvmRequestHandler, MetadataRequestHandler, NotSupportWCRequestHandler, PopupHandler, SubstrateRequestHandler } from "./handler/index.js";
|
|
5
6
|
export default class RequestService {
|
|
6
7
|
// Common
|
|
@@ -10,6 +11,7 @@ export default class RequestService {
|
|
|
10
11
|
#authRequestHandler;
|
|
11
12
|
#substrateRequestHandler;
|
|
12
13
|
#evmRequestHandler;
|
|
14
|
+
#tonRequestHandler;
|
|
13
15
|
#connectWCRequestHandler;
|
|
14
16
|
#notSupportWCRequestHandler;
|
|
15
17
|
|
|
@@ -23,6 +25,7 @@ export default class RequestService {
|
|
|
23
25
|
this.#authRequestHandler = new AuthRequestHandler(this, this.#chainService, this.keyringService);
|
|
24
26
|
this.#substrateRequestHandler = new SubstrateRequestHandler(this);
|
|
25
27
|
this.#evmRequestHandler = new EvmRequestHandler(this);
|
|
28
|
+
this.#tonRequestHandler = new TonRequestHandler(this);
|
|
26
29
|
this.#connectWCRequestHandler = new ConnectWCRequestHandler(this);
|
|
27
30
|
this.#notSupportWCRequestHandler = new NotSupportWCRequestHandler(this);
|
|
28
31
|
|
|
@@ -30,13 +33,13 @@ export default class RequestService {
|
|
|
30
33
|
this.updateIconV2();
|
|
31
34
|
}
|
|
32
35
|
get numAllRequests() {
|
|
33
|
-
return this.allSubstrateRequests.length + this.numEvmRequests;
|
|
36
|
+
return this.allSubstrateRequests.length + this.numEvmRequests + this.numTonRequests;
|
|
34
37
|
}
|
|
35
38
|
updateIconV2(shouldClose) {
|
|
36
39
|
this.#popupHandler.updateIconV2(shouldClose);
|
|
37
40
|
}
|
|
38
41
|
getAddressList(value = false) {
|
|
39
|
-
const addressList = Object.keys(this.keyringService.
|
|
42
|
+
const addressList = Object.keys(this.keyringService.context.pairs);
|
|
40
43
|
return addressList.reduce((addressList, v) => ({
|
|
41
44
|
...addressList,
|
|
42
45
|
[v]: value
|
|
@@ -125,8 +128,8 @@ export default class RequestService {
|
|
|
125
128
|
get allSubstrateRequests() {
|
|
126
129
|
return this.#substrateRequestHandler.allSubstrateRequests;
|
|
127
130
|
}
|
|
128
|
-
sign(url, request,
|
|
129
|
-
return this.#substrateRequestHandler.sign(url, request,
|
|
131
|
+
sign(url, request, id) {
|
|
132
|
+
return this.#substrateRequestHandler.sign(url, request, id);
|
|
130
133
|
}
|
|
131
134
|
get numSubstrateRequests() {
|
|
132
135
|
return this.#substrateRequestHandler.numSubstrateRequests;
|
|
@@ -136,9 +139,15 @@ export default class RequestService {
|
|
|
136
139
|
get numEvmRequests() {
|
|
137
140
|
return this.#evmRequestHandler.numEvmRequests;
|
|
138
141
|
}
|
|
142
|
+
get numTonRequests() {
|
|
143
|
+
return this.#tonRequestHandler.numTonRequests;
|
|
144
|
+
}
|
|
139
145
|
get confirmationsQueueSubject() {
|
|
140
146
|
return this.#evmRequestHandler.getConfirmationsQueueSubject();
|
|
141
147
|
}
|
|
148
|
+
get confirmationsQueueSubjectTon() {
|
|
149
|
+
return this.#tonRequestHandler.getConfirmationsQueueSubjectTon();
|
|
150
|
+
}
|
|
142
151
|
getSignRequest(id) {
|
|
143
152
|
return this.#substrateRequestHandler.getSignRequest(id);
|
|
144
153
|
}
|
|
@@ -148,9 +157,17 @@ export default class RequestService {
|
|
|
148
157
|
addConfirmation(id, url, type, payload, options = {}, validator) {
|
|
149
158
|
return this.#evmRequestHandler.addConfirmation(id, url, type, payload, options, validator);
|
|
150
159
|
}
|
|
160
|
+
addConfirmationTon(id, url, type, payload,
|
|
161
|
+
// todo: messages <-> payload
|
|
162
|
+
options = {}, validator) {
|
|
163
|
+
return this.#tonRequestHandler.addConfirmationTon(id, url, type, payload, options, validator);
|
|
164
|
+
}
|
|
151
165
|
async completeConfirmation(request) {
|
|
152
166
|
return await this.#evmRequestHandler.completeConfirmation(request);
|
|
153
167
|
}
|
|
168
|
+
async completeConfirmationTon(request) {
|
|
169
|
+
return await this.#tonRequestHandler.completeConfirmationTon(request);
|
|
170
|
+
}
|
|
154
171
|
updateConfirmation(id, type, payload, options = {}, validator) {
|
|
155
172
|
return this.#evmRequestHandler.updateConfirmation(id, type, payload, options, validator);
|
|
156
173
|
}
|
|
@@ -191,12 +208,13 @@ export default class RequestService {
|
|
|
191
208
|
|
|
192
209
|
// General methods
|
|
193
210
|
get numRequests() {
|
|
194
|
-
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests;
|
|
211
|
+
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests + this.numTonRequests;
|
|
195
212
|
}
|
|
196
213
|
resetWallet() {
|
|
197
214
|
this.#authRequestHandler.resetWallet();
|
|
198
215
|
this.#substrateRequestHandler.resetWallet();
|
|
199
216
|
this.#evmRequestHandler.resetWallet();
|
|
217
|
+
this.#tonRequestHandler.resetWallet();
|
|
200
218
|
this.#metadataRequestHandler.resetWallet();
|
|
201
219
|
this.#connectWCRequestHandler.resetWallet();
|
|
202
220
|
this.#notSupportWCRequestHandler.resetWallet();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { AccountAuthType,
|
|
1
|
+
import { AccountAuthType, RequestSign, Resolver, ResponseSigning } from '@subwallet/extension-base/background/types';
|
|
2
2
|
import { MetadataDef } from '@subwallet/extension-inject/types';
|
|
3
3
|
export interface SignRequest extends Resolver<ResponseSigning> {
|
|
4
|
-
|
|
4
|
+
address: string;
|
|
5
5
|
id: string;
|
|
6
6
|
request: RequestSign;
|
|
7
7
|
url: string;
|
|
@@ -17,8 +17,11 @@ export interface AuthUrlInfo {
|
|
|
17
17
|
isAllowed: boolean;
|
|
18
18
|
origin: string;
|
|
19
19
|
url: string;
|
|
20
|
-
|
|
20
|
+
accountAuthTypes: AccountAuthType[];
|
|
21
21
|
isAllowedMap: Record<string, boolean>;
|
|
22
22
|
currentEvmNetworkKey?: string;
|
|
23
23
|
}
|
|
24
|
+
export interface AuthUrlInfoNeedMigration extends Omit<AuthUrlInfo, 'accountAuthTypes'> {
|
|
25
|
+
accountAuthType?: AccountAuthType | 'both';
|
|
26
|
+
}
|
|
24
27
|
export declare type AuthUrls = Record<string, AuthUrlInfo>;
|
|
@@ -14,7 +14,7 @@ export declare class AssetHubSwapHandler implements SwapBaseInterface {
|
|
|
14
14
|
constructor(chainService: ChainService, balanceService: BalanceService, chain: string);
|
|
15
15
|
get chainService(): ChainService;
|
|
16
16
|
get balanceService(): BalanceService;
|
|
17
|
-
get providerInfo(): import("@subwallet/extension-base/types
|
|
17
|
+
get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
|
|
18
18
|
get name(): string;
|
|
19
19
|
get slug(): string;
|
|
20
20
|
init(): Promise<void>;
|
|
@@ -3,11 +3,12 @@
|
|
|
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 {
|
|
6
|
+
import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
7
|
import { _getEarlyAssetHubValidationError, _validateBalanceToSwapOnAssetHub, _validateSwapRecipient } from '@subwallet/extension-base/core/logic-validation/swap';
|
|
8
8
|
import { createXcmExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/xcm';
|
|
9
9
|
import { _getChainNativeTokenSlug, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
10
10
|
import { convertSwapRate, getSwapAlternativeAsset, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
|
|
11
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
11
12
|
import { CommonStepType } from '@subwallet/extension-base/types/service-base';
|
|
12
13
|
import { SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
|
|
13
14
|
import BigN from 'bignumber.js';
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
5
|
-
import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
5
|
import { _validateBalanceToSwap, _validateSwapRecipient } from '@subwallet/extension-base/core/logic-validation/swap';
|
|
7
6
|
import { _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
7
|
import { getSwapAlternativeAsset } from '@subwallet/extension-base/services/swap-service/utils';
|
|
8
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
9
9
|
import { DEFAULT_FIRST_STEP, MOCK_STEP_FEE } from '@subwallet/extension-base/types/service-base';
|
|
10
10
|
import { SwapErrorType, SwapFeeType } from '@subwallet/extension-base/types/swap';
|
|
11
11
|
import { formatNumber } from '@subwallet/extension-base/utils';
|
|
@@ -16,7 +16,7 @@ export declare class ChainflipSwapHandler implements SwapBaseInterface {
|
|
|
16
16
|
constructor(chainService: ChainService, balanceService: BalanceService, isTestnet?: boolean);
|
|
17
17
|
get chainService(): ChainService;
|
|
18
18
|
get balanceService(): BalanceService;
|
|
19
|
-
get providerInfo(): import("@subwallet/extension-base/types
|
|
19
|
+
get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
|
|
20
20
|
get name(): string;
|
|
21
21
|
get slug(): string;
|
|
22
22
|
get assetMapping(): Record<string, Asset>;
|
|
@@ -5,13 +5,14 @@ import { SwapSDK } from '@chainflip/sdk/swap';
|
|
|
5
5
|
import { COMMON_ASSETS } from '@subwallet/chain-list';
|
|
6
6
|
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
7
7
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
8
|
-
import {
|
|
8
|
+
import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
9
9
|
import { _getChainflipEarlyValidationError } from '@subwallet/extension-base/core/logic-validation/swap';
|
|
10
10
|
import { getERC20TransactionObject, getEVMTransactionObject } from '@subwallet/extension-base/services/balance-service/transfer/smart-contract';
|
|
11
11
|
import { createTransferExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/token';
|
|
12
|
-
import { _getAssetDecimals, _getAssetSymbol, _getChainNativeTokenSlug, _getContractAddressOfToken, _isNativeToken, _isSmartContractToken
|
|
12
|
+
import { _getAssetDecimals, _getAssetSymbol, _getChainNativeTokenSlug, _getContractAddressOfToken, _isChainSubstrateCompatible, _isNativeToken, _isSmartContractToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
13
13
|
import { SwapBaseHandler } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
|
|
14
14
|
import { calculateSwapRate, CHAIN_FLIP_SUPPORTED_MAINNET_ASSET_MAPPING, CHAIN_FLIP_SUPPORTED_MAINNET_MAPPING, CHAIN_FLIP_SUPPORTED_TESTNET_ASSET_MAPPING, CHAIN_FLIP_SUPPORTED_TESTNET_MAPPING, getChainflipOptions, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
|
|
15
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
15
16
|
import { CommonStepType } from '@subwallet/extension-base/types/service-base';
|
|
16
17
|
import { SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
|
|
17
18
|
import BigNumber from 'bignumber.js';
|
|
@@ -340,7 +341,7 @@ export class ChainflipSwapHandler {
|
|
|
340
341
|
const fromAsset = this.chainService.getAssetBySlug(pair.from);
|
|
341
342
|
const toAsset = this.chainService.getAssetBySlug(pair.to);
|
|
342
343
|
const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
343
|
-
const chainType =
|
|
344
|
+
const chainType = _isChainSubstrateCompatible(chainInfo) ? ChainType.SUBSTRATE : ChainType.EVM;
|
|
344
345
|
const receiver = recipient !== null && recipient !== void 0 ? recipient : address;
|
|
345
346
|
const srcChainId = this.chainMapping[fromAsset.originChain];
|
|
346
347
|
const destChainId = this.chainMapping[toAsset.originChain];
|
|
@@ -16,7 +16,7 @@ export declare class HydradxHandler implements SwapBaseInterface {
|
|
|
16
16
|
chain: () => string;
|
|
17
17
|
get chainService(): ChainService;
|
|
18
18
|
get balanceService(): BalanceService;
|
|
19
|
-
get providerInfo(): import("@subwallet/extension-base/types
|
|
19
|
+
get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
|
|
20
20
|
get name(): string;
|
|
21
21
|
get slug(): string;
|
|
22
22
|
getXcmStep(params: OptimalSwapPathParams): Promise<[BaseStepDetail, CommonStepFeeInfo] | undefined>;
|
|
@@ -6,12 +6,13 @@ import { COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
|
|
|
6
6
|
import { _AssetType } from '@subwallet/chain-list/types';
|
|
7
7
|
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
8
8
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
9
|
-
import {
|
|
9
|
+
import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
10
10
|
import { _getEarlyHydradxValidationError } from '@subwallet/extension-base/core/logic-validation/swap';
|
|
11
11
|
import { createXcmExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/xcm';
|
|
12
12
|
import { _getAssetDecimals, _getChainNativeTokenSlug, _getTokenOnChainAssetId, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
13
13
|
import { SwapBaseHandler } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
|
|
14
14
|
import { calculateSwapRate, getSwapAlternativeAsset, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
|
|
15
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
15
16
|
import { CommonStepType } from '@subwallet/extension-base/types/service-base';
|
|
16
17
|
import { SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
|
|
17
18
|
import BigNumber from 'bignumber.js';
|
|
@@ -3,12 +3,12 @@
|
|
|
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 { ServiceStatus } from '@subwallet/extension-base/services/base/types';
|
|
8
7
|
import { AssetHubSwapHandler } from '@subwallet/extension-base/services/swap-service/handler/asset-hub';
|
|
9
8
|
import { ChainflipSwapHandler } from '@subwallet/extension-base/services/swap-service/handler/chainflip-handler';
|
|
10
9
|
import { HydradxHandler } from '@subwallet/extension-base/services/swap-service/handler/hydradx-handler';
|
|
11
10
|
import { _PROVIDER_TO_SUPPORTED_PAIR_MAP, getSwapAltToken, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
|
|
11
|
+
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
12
12
|
import { DEFAULT_FIRST_STEP, MOCK_STEP_FEE } from '@subwallet/extension-base/types/service-base';
|
|
13
13
|
import { _SUPPORTED_SWAP_PROVIDERS, SwapErrorType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
|
|
14
14
|
import { createPromiseHandler } from '@subwallet/extension-base/utils';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
|
+
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
2
3
|
import { SWTransaction } from '@subwallet/extension-base/services/transaction-service/types';
|
|
3
4
|
import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
|
|
4
5
|
export declare const getTransactionId: (chainType: string, chain: string, isInternal: boolean, isWalletConnect?: boolean) => string;
|
|
5
6
|
export declare const getValidationId: (chainType: string, chain: string) => string;
|
|
6
7
|
export declare const isSubstrateTransaction: (tx: SWTransaction['transaction']) => tx is SubmittableExtrinsic;
|
|
8
|
+
export declare const isTonTransaction: (tx: SWTransaction['transaction']) => tx is TonTransactionConfig;
|
|
7
9
|
export declare const getBaseTransactionInfo: (transaction: SWTransaction, chainInfoMap: Record<string, _ChainInfo>) => string;
|
|
@@ -13,6 +13,10 @@ export const getValidationId = (chainType, chain) => {
|
|
|
13
13
|
export const isSubstrateTransaction = tx => {
|
|
14
14
|
return !!tx.send;
|
|
15
15
|
};
|
|
16
|
+
export const isTonTransaction = tx => {
|
|
17
|
+
const tonTransactionConfig = tx;
|
|
18
|
+
return Boolean(tonTransactionConfig.messagePayload) && tonTransactionConfig.seqno >= 0;
|
|
19
|
+
};
|
|
16
20
|
const typeName = type => {
|
|
17
21
|
switch (type) {
|
|
18
22
|
case ExtrinsicType.TRANSFER_BALANCE:
|
|
@@ -39,6 +39,7 @@ export default class TransactionService {
|
|
|
39
39
|
generateHashPayload(chain: string, transaction: TransactionConfig): HexString;
|
|
40
40
|
private signAndSendEvmTransaction;
|
|
41
41
|
private signAndSendSubstrateTransaction;
|
|
42
|
+
private signAndSendTonTransaction;
|
|
42
43
|
private handleTransactionTimeout;
|
|
43
44
|
private handlePostEarningTransaction;
|
|
44
45
|
resetWallet(): void;
|
|
@@ -3,18 +3,19 @@
|
|
|
3
3
|
|
|
4
4
|
import { EvmProviderError } from '@subwallet/extension-base/background/errors/EvmProviderError';
|
|
5
5
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
6
|
-
import {
|
|
6
|
+
import { ChainType, EvmProviderErrorType, ExtrinsicStatus, ExtrinsicType, NotificationType, TransactionDirection } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
7
|
import { ALL_ACCOUNT_KEY, fetchLastestBlockedActionsAndFeatures } from '@subwallet/extension-base/constants';
|
|
8
8
|
import { checkBalanceWithTransactionFee, checkSigningAccountForTransaction, checkSupportForAction, checkSupportForFeature, checkSupportForTransaction, estimateFeeForTransaction } from '@subwallet/extension-base/core/logic-validation/transfer';
|
|
9
|
+
import { cellToBase64Str, externalMessage, getTransferCellPromise } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils';
|
|
9
10
|
import { _getAssetDecimals, _getAssetSymbol, _getChainNativeTokenBasicInfo, _getEvmChainId, _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
|
|
10
11
|
import { EXTENSION_REQUEST_URL } from '@subwallet/extension-base/services/request-service/constants';
|
|
11
12
|
import { TRANSACTION_TIMEOUT } from '@subwallet/extension-base/services/transaction-service/constants';
|
|
12
13
|
import { parseLiquidStakingEvents, parseLiquidStakingFastUnstakeEvents, parseTransferEventLogs, parseXcmEventLogs } from '@subwallet/extension-base/services/transaction-service/event-parser';
|
|
13
|
-
import { getBaseTransactionInfo, getTransactionId, isSubstrateTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
|
|
14
|
+
import { getBaseTransactionInfo, getTransactionId, isSubstrateTransaction, isTonTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
|
|
14
15
|
import { getExplorerLink, parseTransactionData } from '@subwallet/extension-base/services/transaction-service/utils';
|
|
15
16
|
import { isWalletConnectRequest } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
|
|
16
|
-
import { YieldPoolType } from '@subwallet/extension-base/types';
|
|
17
|
-
import { _isRuntimeUpdated, anyNumberToBN, reformatAddress } from '@subwallet/extension-base/utils';
|
|
17
|
+
import { BasicTxErrorType, YieldPoolType } from '@subwallet/extension-base/types';
|
|
18
|
+
import { _isRuntimeUpdated, anyNumberToBN, pairToAccount, reformatAddress } from '@subwallet/extension-base/utils';
|
|
18
19
|
import { mergeTransactionAndSignature } from '@subwallet/extension-base/utils/eth/mergeTransactionAndSignature';
|
|
19
20
|
import { isContractAddress, parseContractInput } from '@subwallet/extension-base/utils/eth/parseTransaction';
|
|
20
21
|
import { BN_ZERO } from '@subwallet/extension-base/utils/number';
|
|
@@ -24,7 +25,7 @@ import { ethers } from 'ethers';
|
|
|
24
25
|
import EventEmitter from 'eventemitter3';
|
|
25
26
|
import { t } from 'i18next';
|
|
26
27
|
import { BehaviorSubject, interval as rxjsInterval } from 'rxjs';
|
|
27
|
-
import { isHex } from '@polkadot/util';
|
|
28
|
+
import { hexToU8a, isHex } from '@polkadot/util';
|
|
28
29
|
export default class TransactionService {
|
|
29
30
|
transactionSubject = new BehaviorSubject({});
|
|
30
31
|
watchTransactionSubscribes = {};
|
|
@@ -86,22 +87,30 @@ export default class TransactionService {
|
|
|
86
87
|
validationResponse.errors.push(new TransactionError(BasicTxErrorType.INTERNAL_ERROR, t('Cannot find network')));
|
|
87
88
|
}
|
|
88
89
|
const evmApi = this.state.chainService.getEvmApi(chainInfo.slug);
|
|
89
|
-
const
|
|
90
|
-
|
|
90
|
+
const tonApi = this.state.chainService.getTonApi(chainInfo.slug);
|
|
91
|
+
const isNoEvmApi = transaction && !isSubstrateTransaction(transaction) && !isTonTransaction(transaction) && !evmApi; // todo: should split isEvmTx && isNoEvmApi. Because other chains type also has no Evm Api
|
|
92
|
+
const isNoTonApi = transaction && isTonTransaction(transaction) && !tonApi;
|
|
93
|
+
if (isNoEvmApi || isNoTonApi) {
|
|
91
94
|
validationResponse.errors.push(new TransactionError(BasicTxErrorType.CHAIN_DISCONNECTED, undefined));
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
// Estimate fee for transaction
|
|
95
98
|
validationResponse.estimateFee = await estimateFeeForTransaction(validationResponse, transaction, chainInfo, evmApi);
|
|
99
|
+
const chainInfoMap = this.state.chainService.getChainInfoMap();
|
|
96
100
|
|
|
97
101
|
// Check account signing transaction
|
|
98
|
-
checkSigningAccountForTransaction(validationResponse);
|
|
102
|
+
checkSigningAccountForTransaction(validationResponse, chainInfoMap);
|
|
99
103
|
const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(chain);
|
|
100
104
|
const nativeTokenAvailable = await this.state.balanceService.getTransferableBalance(address, chain, nativeTokenInfo.slug, extrinsicType);
|
|
101
105
|
|
|
102
106
|
// Check available balance against transaction fee
|
|
103
107
|
checkBalanceWithTransactionFee(validationResponse, transactionInput, nativeTokenInfo, nativeTokenAvailable);
|
|
104
108
|
|
|
109
|
+
// Warnings Ton address if bounceable and not active
|
|
110
|
+
// if (transaction && isTonTransaction(transaction) && tonApi) {
|
|
111
|
+
// await checkTonAddressBounceableAndAccountNotActive(tonApi, validationResponse);
|
|
112
|
+
// }
|
|
113
|
+
|
|
105
114
|
// Check additional validations
|
|
106
115
|
additionalValidator && (await additionalValidator(validationResponse));
|
|
107
116
|
return validationResponse;
|
|
@@ -153,8 +162,9 @@ export default class TransactionService {
|
|
|
153
162
|
}
|
|
154
163
|
async handleTransaction(transaction) {
|
|
155
164
|
const validatedTransaction = await this.validateTransaction(transaction);
|
|
165
|
+
const ignoreWarnings = validatedTransaction.ignoreWarnings || [];
|
|
156
166
|
const stopByErrors = validatedTransaction.errors.length > 0;
|
|
157
|
-
const stopByWarnings = validatedTransaction.warnings.length > 0 &&
|
|
167
|
+
const stopByWarnings = validatedTransaction.warnings.length > 0 && validatedTransaction.warnings.some(warning => !ignoreWarnings.includes(warning.warningType));
|
|
158
168
|
if (stopByErrors || stopByWarnings) {
|
|
159
169
|
// @ts-ignore
|
|
160
170
|
'transaction' in validatedTransaction && delete validatedTransaction.transaction;
|
|
@@ -195,7 +205,7 @@ export default class TransactionService {
|
|
|
195
205
|
}
|
|
196
206
|
async sendTransaction(transaction) {
|
|
197
207
|
// Send Transaction
|
|
198
|
-
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : this.signAndSendEvmTransaction(transaction));
|
|
208
|
+
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : this.signAndSendTonTransaction(transaction));
|
|
199
209
|
const {
|
|
200
210
|
eventsHandler
|
|
201
211
|
} = transaction;
|
|
@@ -829,13 +839,7 @@ export default class TransactionService {
|
|
|
829
839
|
const chainInfo = this.state.chainService.getChainInfoByKey(chain);
|
|
830
840
|
const hasError = !!(payload.errors && payload.errors.length > 0);
|
|
831
841
|
const accountPair = keyring.getPair(address);
|
|
832
|
-
const account =
|
|
833
|
-
address,
|
|
834
|
-
...accountPair.meta
|
|
835
|
-
};
|
|
836
|
-
if (!payload.account) {
|
|
837
|
-
payload.account = account;
|
|
838
|
-
}
|
|
842
|
+
const account = pairToAccount(accountPair);
|
|
839
843
|
|
|
840
844
|
// Allow sign transaction
|
|
841
845
|
payload.canSign = true;
|
|
@@ -851,6 +855,9 @@ export default class TransactionService {
|
|
|
851
855
|
payload.parseData = payload.data;
|
|
852
856
|
}
|
|
853
857
|
}
|
|
858
|
+
if (!payload.address) {
|
|
859
|
+
payload.address = address;
|
|
860
|
+
}
|
|
854
861
|
if ('data' in payload && payload.data === undefined) {
|
|
855
862
|
delete payload.data;
|
|
856
863
|
}
|
|
@@ -1117,6 +1124,96 @@ export default class TransactionService {
|
|
|
1117
1124
|
});
|
|
1118
1125
|
return emitter;
|
|
1119
1126
|
}
|
|
1127
|
+
signAndSendTonTransaction({
|
|
1128
|
+
address,
|
|
1129
|
+
chain,
|
|
1130
|
+
extrinsicType,
|
|
1131
|
+
id,
|
|
1132
|
+
transaction,
|
|
1133
|
+
url
|
|
1134
|
+
}) {
|
|
1135
|
+
const walletContract = keyring.getPair(address).ton.currentContract;
|
|
1136
|
+
const emitter = new EventEmitter();
|
|
1137
|
+
const eventData = {
|
|
1138
|
+
id,
|
|
1139
|
+
errors: [],
|
|
1140
|
+
warnings: [],
|
|
1141
|
+
extrinsicHash: id
|
|
1142
|
+
};
|
|
1143
|
+
const payload = transaction;
|
|
1144
|
+
const signer = message => {
|
|
1145
|
+
return new Promise(resolve => {
|
|
1146
|
+
this.state.requestService.addConfirmationTon(id, url || EXTENSION_REQUEST_URL, 'tonSendTransactionRequest', {
|
|
1147
|
+
...payload,
|
|
1148
|
+
messagePayload: cellToBase64Str(message),
|
|
1149
|
+
messages: []
|
|
1150
|
+
}, {}).then(({
|
|
1151
|
+
isApproved,
|
|
1152
|
+
payload
|
|
1153
|
+
}) => {
|
|
1154
|
+
if (!isApproved) {
|
|
1155
|
+
this.removeTransaction(id);
|
|
1156
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.USER_REJECT_REQUEST));
|
|
1157
|
+
emitter.emit('error', eventData);
|
|
1158
|
+
} else {
|
|
1159
|
+
if (!payload) {
|
|
1160
|
+
throw new Error('Bad signature');
|
|
1161
|
+
}
|
|
1162
|
+
resolve(Buffer.from(hexToU8a(payload)));
|
|
1163
|
+
}
|
|
1164
|
+
}).catch(e => {
|
|
1165
|
+
this.removeTransaction(id);
|
|
1166
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.UNABLE_TO_SIGN, t(e.message)));
|
|
1167
|
+
emitter.emit('error', eventData);
|
|
1168
|
+
});
|
|
1169
|
+
});
|
|
1170
|
+
};
|
|
1171
|
+
const tonTransactionConfig = transaction;
|
|
1172
|
+
const seqno = tonTransactionConfig.seqno;
|
|
1173
|
+
const messages = tonTransactionConfig.messages;
|
|
1174
|
+
const transferObjectPromise = getTransferCellPromise(walletContract, signer, payload, seqno, messages);
|
|
1175
|
+
transferObjectPromise.then(tx => {
|
|
1176
|
+
// Emit signed event
|
|
1177
|
+
emitter.emit('signed', eventData);
|
|
1178
|
+
const boc = externalMessage(walletContract, seqno, tx).toBoc().toString('base64');
|
|
1179
|
+
this.handleTransactionTimeout(emitter, eventData);
|
|
1180
|
+
emitter.emit('send', eventData); // This event is needed after sending transaction with queue
|
|
1181
|
+
|
|
1182
|
+
const tonApi = this.state.chainService.getTonApi(chain);
|
|
1183
|
+
tonApi.sendTonTransaction(boc).then(externalMsgHash => {
|
|
1184
|
+
// the externalMsgHash is the hash of first message, not the hash of transaction.
|
|
1185
|
+
if (!externalMsgHash) {
|
|
1186
|
+
return;
|
|
1187
|
+
}
|
|
1188
|
+
tonApi.getStatusByExtMsgHash(externalMsgHash, extrinsicType).then(([status, hex]) => {
|
|
1189
|
+
if (status && hex) {
|
|
1190
|
+
eventData.extrinsicHash = hex;
|
|
1191
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1192
|
+
emitter.emit('success', eventData);
|
|
1193
|
+
}
|
|
1194
|
+
if (!status && hex) {
|
|
1195
|
+
eventData.extrinsicHash = hex;
|
|
1196
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1197
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED));
|
|
1198
|
+
emitter.emit('error', eventData);
|
|
1199
|
+
}
|
|
1200
|
+
}).catch(e => {
|
|
1201
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED, e.message));
|
|
1202
|
+
emitter.emit('error', eventData);
|
|
1203
|
+
});
|
|
1204
|
+
|
|
1205
|
+
// todo: handle status of externalMsgHash
|
|
1206
|
+
}).catch(e => {
|
|
1207
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED, e.message));
|
|
1208
|
+
emitter.emit('error', eventData);
|
|
1209
|
+
});
|
|
1210
|
+
}).catch(e => {
|
|
1211
|
+
this.removeTransaction(id);
|
|
1212
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.UNABLE_TO_SIGN, e.message));
|
|
1213
|
+
emitter.emit('error', eventData);
|
|
1214
|
+
});
|
|
1215
|
+
return emitter;
|
|
1216
|
+
}
|
|
1120
1217
|
handleTransactionTimeout(emitter, eventData) {
|
|
1121
1218
|
const timeout = setTimeout(() => {
|
|
1122
1219
|
const transaction = this.getTransaction(eventData.id);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChainType, ExtrinsicDataTypeMap, ExtrinsicStatus, ExtrinsicType, FeeData, ValidateTransactionResponse } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
|
+
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
3
|
+
import { BaseRequestSign } from '@subwallet/extension-base/types';
|
|
2
4
|
import EventEmitter from 'eventemitter3';
|
|
3
5
|
import { TransactionConfig } from 'web3-core';
|
|
4
6
|
import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
|
|
@@ -17,7 +19,7 @@ export interface SWTransaction extends ValidateTransactionResponse, Partial<Pick
|
|
|
17
19
|
createdAt: number;
|
|
18
20
|
updatedAt: number;
|
|
19
21
|
estimateFee?: FeeData;
|
|
20
|
-
transaction: SubmittableExtrinsic | TransactionConfig;
|
|
22
|
+
transaction: SubmittableExtrinsic | TransactionConfig | TonTransactionConfig;
|
|
21
23
|
additionalValidator?: (inputTransaction: SWTransactionResponse) => Promise<void>;
|
|
22
24
|
eventsHandler?: (eventEmitter: TransactionEmitter) => void;
|
|
23
25
|
}
|
|
@@ -56,10 +56,7 @@ export default class PolkadotRequestHandler {
|
|
|
56
56
|
address: address,
|
|
57
57
|
data: param.message,
|
|
58
58
|
type: 'bytes'
|
|
59
|
-
}), {
|
|
60
|
-
address,
|
|
61
|
-
...pair.meta
|
|
62
|
-
}, getWCId(id)).then(async ({
|
|
59
|
+
}), getWCId(id)).then(async ({
|
|
63
60
|
signature
|
|
64
61
|
}) => {
|
|
65
62
|
await _classPrivateFieldLooseBase(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
@@ -74,12 +71,7 @@ export default class PolkadotRequestHandler {
|
|
|
74
71
|
} else if (method === POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION) {
|
|
75
72
|
const param = parseRequestParams(request.params);
|
|
76
73
|
_classPrivateFieldLooseBase(this, _checkAccount)[_checkAccount](param.address, sessionAccounts);
|
|
77
|
-
|
|
78
|
-
const address = pair.address;
|
|
79
|
-
_classPrivateFieldLooseBase(this, _requestService)[_requestService].sign(url, new RequestExtrinsicSign(param.transactionPayload), {
|
|
80
|
-
address,
|
|
81
|
-
...pair.meta
|
|
82
|
-
}, getWCId(id)).then(async ({
|
|
74
|
+
_classPrivateFieldLooseBase(this, _requestService)[_requestService].sign(url, new RequestExtrinsicSign(param.transactionPayload), getWCId(id)).then(async ({
|
|
83
75
|
signature
|
|
84
76
|
}) => {
|
|
85
77
|
await _classPrivateFieldLooseBase(this, _walletConnectService)[_walletConnectService].responseRequest({
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni-ui authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { EXTENSION_PREFIX } from '@subwallet/extension-base/defaults';
|
|
5
|
+
import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
|
|
6
|
+
export default class AccountProxyStore extends SubscribableStore {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(EXTENSION_PREFIX ? `${EXTENSION_PREFIX}account_proxy` : null);
|
|
9
|
+
}
|
|
10
|
+
}
|
package/stores/Authorize.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuthUrls } from '@subwallet/extension-base/
|
|
1
|
+
import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
|
|
2
2
|
import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
|
|
3
3
|
export default class AuthorizeStore extends SubscribableStore<AuthUrls> {
|
|
4
4
|
constructor();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CurrentAccountInfo } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
1
|
import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
|
|
2
|
+
import { CurrentAccountInfo } from '@subwallet/extension-base/types';
|
|
3
3
|
export default class CurrentAccountStore extends SubscribableStore<CurrentAccountInfo> {
|
|
4
4
|
constructor();
|
|
5
5
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni-ui authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { EXTENSION_PREFIX } from '@subwallet/extension-base/defaults';
|
|
5
|
+
import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
|
|
6
|
+
export default class ModifyPairStore extends SubscribableStore {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(EXTENSION_PREFIX ? `${EXTENSION_PREFIX}pair_modify` : null);
|
|
9
|
+
}
|
|
10
|
+
}
|
package/stores/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
export { default as AccountProxyStore } from './AccountProxyStore';
|
|
2
|
+
export { default as AccountRefStore } from './AccountRef';
|
|
1
3
|
export { default as AccountsStore } from './Accounts';
|
|
2
|
-
export { default as MetadataStore } from './Metadata';
|
|
3
4
|
export { default as CurrentAccountStore } from './CurrentAccountStore';
|
|
4
5
|
export { default as CurrentCurrencyStore } from './CurrentCurrencyStore';
|
|
6
|
+
export { default as MetadataStore } from './Metadata';
|
|
7
|
+
export { default as ModifyPairStore } from './ModifyPairStore';
|
package/stores/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
// Copyright 2019-2022 @polkadot/extension-base authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
+
export { default as AccountProxyStore } from "./AccountProxyStore.js";
|
|
5
|
+
export { default as AccountRefStore } from "./AccountRef.js";
|
|
4
6
|
export { default as AccountsStore } from "./Accounts.js";
|
|
5
|
-
export { default as MetadataStore } from "./Metadata.js";
|
|
6
7
|
export { default as CurrentAccountStore } from "./CurrentAccountStore.js";
|
|
7
|
-
export { default as CurrentCurrencyStore } from "./CurrentCurrencyStore.js";
|
|
8
|
+
export { default as CurrentCurrencyStore } from "./CurrentCurrencyStore.js";
|
|
9
|
+
export { default as MetadataStore } from "./Metadata.js";
|
|
10
|
+
export { default as ModifyPairStore } from "./ModifyPairStore.js";
|