@subwallet/extension-base 1.3.71-0 → 1.3.73-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.
Files changed (79) hide show
  1. package/background/KoniTypes.d.ts +13 -2
  2. package/background/KoniTypes.js +3 -1
  3. package/cjs/background/KoniTypes.js +3 -1
  4. package/cjs/core/logic-validation/recipientAddress.js +1 -1
  5. package/cjs/core/logic-validation/transfer.js +33 -10
  6. package/cjs/core/types.js +1 -0
  7. package/cjs/koni/background/handlers/Extension.js +81 -10
  8. package/cjs/koni/background/handlers/State.js +2 -4
  9. package/cjs/koni/background/subscription.js +2 -22
  10. package/cjs/packageInfo.js +1 -1
  11. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +46 -2
  12. package/cjs/services/balance-service/transfer/token.js +13 -35
  13. package/cjs/services/balance-service/transfer/xcm/index.js +3 -8
  14. package/cjs/services/balance-service/transfer/xcm/utils.js +1 -1
  15. package/cjs/services/chain-service/constants.js +6 -5
  16. package/cjs/services/chain-service/index.js +1 -0
  17. package/cjs/services/chain-service/utils/patch.js +1 -1
  18. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -2
  19. package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251223.js +55 -0
  20. package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting20251223.js +41 -0
  21. package/cjs/services/migration-service/scripts/index.js +17 -13
  22. package/cjs/services/substrate-proxy-service/constant.js +26 -0
  23. package/cjs/services/substrate-proxy-service/index.js +170 -0
  24. package/cjs/services/transaction-service/index.js +78 -10
  25. package/cjs/services/transaction-service/utils.js +8 -5
  26. package/cjs/types/index.js +11 -0
  27. package/cjs/types/substrateProxyAccount/actions/index.js +1 -0
  28. package/cjs/types/substrateProxyAccount/index.js +16 -0
  29. package/cjs/utils/account/transform.js +5 -4
  30. package/cjs/utils/fee/transfer.js +4 -2
  31. package/core/logic-validation/recipientAddress.js +1 -1
  32. package/core/logic-validation/transfer.d.ts +3 -3
  33. package/core/logic-validation/transfer.js +34 -11
  34. package/core/types.d.ts +2 -1
  35. package/core/types.js +1 -0
  36. package/koni/background/handlers/Extension.d.ts +3 -0
  37. package/koni/background/handlers/Extension.js +81 -10
  38. package/koni/background/handlers/State.d.ts +2 -1
  39. package/koni/background/handlers/State.js +2 -4
  40. package/koni/background/subscription.js +2 -22
  41. package/package.json +37 -7
  42. package/packageInfo.js +1 -1
  43. package/services/balance-service/helpers/subscribe/substrate/index.js +47 -3
  44. package/services/balance-service/transfer/token.d.ts +0 -4
  45. package/services/balance-service/transfer/token.js +12 -33
  46. package/services/balance-service/transfer/xcm/index.js +3 -8
  47. package/services/balance-service/transfer/xcm/utils.d.ts +0 -2
  48. package/services/balance-service/transfer/xcm/utils.js +1 -1
  49. package/services/chain-service/constants.d.ts +1 -1
  50. package/services/chain-service/constants.js +4 -4
  51. package/services/chain-service/index.js +1 -0
  52. package/services/chain-service/utils/patch.d.ts +1 -1
  53. package/services/chain-service/utils/patch.js +1 -1
  54. package/services/earning-service/handlers/native-staking/para-chain.js +17 -2
  55. package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251223.d.ts +4 -0
  56. package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol20251223.js +46 -0
  57. package/services/migration-service/scripts/databases/MigrateAssetSetting20251223.d.ts +4 -0
  58. package/services/migration-service/scripts/databases/MigrateAssetSetting20251223.js +33 -0
  59. package/services/migration-service/scripts/index.js +8 -4
  60. package/services/open-gov/interface.d.ts +4 -3
  61. package/services/substrate-proxy-service/constant.d.ts +3 -0
  62. package/services/substrate-proxy-service/constant.js +19 -0
  63. package/services/substrate-proxy-service/index.d.ts +13 -0
  64. package/services/substrate-proxy-service/index.js +159 -0
  65. package/services/transaction-service/index.js +79 -11
  66. package/services/transaction-service/types.d.ts +2 -2
  67. package/services/transaction-service/utils.js +8 -5
  68. package/types/balance/transfer.d.ts +1 -0
  69. package/types/index.d.ts +1 -0
  70. package/types/index.js +1 -0
  71. package/types/substrateProxyAccount/actions/index.d.ts +17 -0
  72. package/types/substrateProxyAccount/actions/index.js +1 -0
  73. package/types/substrateProxyAccount/index.d.ts +23 -0
  74. package/types/substrateProxyAccount/index.js +8 -0
  75. package/types/transaction/request.d.ts +1 -0
  76. package/types/yield/actions/join/submit.d.ts +1 -1
  77. package/types/yield/info/pallet.d.ts +1 -1
  78. package/utils/account/transform.js +5 -4
  79. package/utils/fee/transfer.js +4 -2
@@ -8,7 +8,7 @@ import EventEmitter from 'eventemitter3';
8
8
  import { TransactionConfig } from 'web3-core';
9
9
  import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
10
10
  import { EventRecord } from '@polkadot/types/interfaces';
11
- export interface SWTransactionBase extends ValidateTransactionResponse, Partial<Pick<BaseRequestSign, 'ignoreWarnings'>>, TransactionFee, SWTransactionEmitter {
11
+ export interface SWTransactionBase extends ValidateTransactionResponse, Partial<Pick<BaseRequestSign, 'ignoreWarnings' | 'signerSubstrateProxyAddress'>>, TransactionFee, SWTransactionEmitter {
12
12
  id: string;
13
13
  url?: string;
14
14
  isInternal: boolean;
@@ -50,7 +50,7 @@ export interface SWTransactionEmitter {
50
50
  emitterTransaction?: TransactionEmitter;
51
51
  }
52
52
  declare type SwInputBase = Pick<SWTransactionBase, 'address' | 'url' | 'data' | 'extrinsicType' | 'chain' | 'chainType' | 'ignoreWarnings' | 'transferNativeAmount'> & Partial<Pick<SWTransactionBase, 'additionalValidator' | 'eventsHandler'>>;
53
- export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransactionBase, 'estimateFee' | 'signAfterCreate' | 'isPassConfirmation' | 'step' | 'errorOnTimeOut' | 'xcmFeeDryRun'>>, TransactionFee {
53
+ export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransactionBase, 'estimateFee' | 'signAfterCreate' | 'isPassConfirmation' | 'step' | 'errorOnTimeOut' | 'xcmFeeDryRun' | 'signerSubstrateProxyAddress'>>, TransactionFee {
54
54
  id?: string;
55
55
  transaction?: SWTransactionBase['transaction'] | null;
56
56
  warnings?: SWTransactionBase['warnings'];
@@ -25,6 +25,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
25
25
  if (explorerLink.includes('devnet-explorer.mosaicchain.io')) {
26
26
  return 'accounts';
27
27
  }
28
+ if (explorerLink.includes('mainnet-gw2.mosaicchain.io')) {
29
+ return 'accounts';
30
+ }
28
31
  if (explorerLink.includes('statescan.io')) {
29
32
  return '#/accounts';
30
33
  }
@@ -53,7 +56,7 @@ function getBlockExplorerAccountRoute(explorerLink) {
53
56
  return 'account';
54
57
  }
55
58
  if (explorerLink.includes('node.xode.net')) {
56
- return 'account';
59
+ return 'polkadot/account';
57
60
  }
58
61
  if (explorerLink.includes('tonviewer.com')) {
59
62
  return '';
@@ -82,7 +85,10 @@ function getBlockExplorerTxRoute(chainInfo) {
82
85
  if (['edgeware', 'commune'].includes(chainInfo.slug)) {
83
86
  return 'extrinsics';
84
87
  }
85
- if (['mosaicTest', 'polkadex'].includes(chainInfo.slug)) {
88
+ if (['xode'].includes(chainInfo.slug)) {
89
+ return 'polkadot/extrinsics';
90
+ }
91
+ if (['mosaicTest', 'polkadex', 'mosaic'].includes(chainInfo.slug)) {
86
92
  return 'transactions';
87
93
  }
88
94
  const explorerLink = _getBlockExplorerFromChain(chainInfo);
@@ -126,9 +132,6 @@ export function getExplorerLink(chainInfo, value, type) {
126
132
  if (chainInfo.slug === 'tangle') {
127
133
  return `${explorerLink}${explorerLink.endsWith('/') ? '' : '/'}extrinsic/${value}${route}/${value}`;
128
134
  }
129
- if (chainInfo.slug === 'xode') {
130
- return `${explorerLink}${explorerLink.endsWith('/') ? '' : '/'}polkadot-chain-transaction?search=${value}`;
131
- }
132
135
  if (['truth_network', 'aventus'].includes(chainInfo.slug)) {
133
136
  // getTransactionId(value)
134
137
  // .then((transactionId) => {
@@ -18,6 +18,7 @@ export interface ResponseSubscribeTransfer {
18
18
  feePercentageSpecialCase?: number;
19
19
  error?: string;
20
20
  isEvmRpcError?: boolean;
21
+ maxTransferableWithoutFee: string;
21
22
  }
22
23
  export interface RequestSubmitTransferWithId extends RequestSubmitTransfer {
23
24
  id?: string;
package/types/index.d.ts CHANGED
@@ -24,3 +24,4 @@ export * from './transaction';
24
24
  export * from './yield';
25
25
  export * from './setting';
26
26
  export * from './bitcoin';
27
+ export * from './substrateProxyAccount';
package/types/index.js CHANGED
@@ -17,4 +17,5 @@ export * from "./transaction/index.js";
17
17
  export * from "./yield/index.js";
18
18
  export * from "./setting.js";
19
19
  export * from "./bitcoin.js";
20
+ export * from "./substrateProxyAccount/index.js";
20
21
  export {};
@@ -0,0 +1,17 @@
1
+ import { BaseRequestSign, InternalRequestSign } from '../../transaction';
2
+ import { SubstrateProxyAccountItem, SubstrateProxyType } from '..';
3
+ export interface AddSubstrateProxyAccountParams extends BaseRequestSign {
4
+ address: string;
5
+ chain: string;
6
+ substrateProxyAddress: string;
7
+ substrateProxyType: SubstrateProxyType;
8
+ substrateProxyDeposit: string;
9
+ }
10
+ export declare type RequestAddSubstrateProxyAccount = InternalRequestSign<AddSubstrateProxyAccountParams>;
11
+ export interface RemoveSubstrateProxyAccountParams extends BaseRequestSign {
12
+ address: string;
13
+ chain: string;
14
+ selectedSubstrateProxyAccounts: SubstrateProxyAccountItem[];
15
+ isRemoveAll?: boolean;
16
+ }
17
+ export declare type RequestRemoveSubstrateProxyAccount = InternalRequestSign<RemoveSubstrateProxyAccountParams>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
2
+ export interface ExcludedSubstrateProxyAccounts {
3
+ address: string;
4
+ substrateProxyType: SubstrateProxyType;
5
+ }
6
+ export interface RequestGetSubstrateProxyAccountGroup {
7
+ chain: string;
8
+ address: string;
9
+ type?: ExtrinsicType;
10
+ excludedSubstrateProxyAccounts?: ExcludedSubstrateProxyAccounts[];
11
+ }
12
+ export declare type SubstrateProxyType = 'Any' | 'NonTransfer' | 'Governance' | 'Staking';
13
+ export interface SubstrateProxyAccountItem {
14
+ substrateProxyAddress: string;
15
+ substrateProxyType: SubstrateProxyType;
16
+ delay: number;
17
+ proxyId?: string;
18
+ }
19
+ export interface SubstrateProxyAccountGroup {
20
+ substrateProxyAccounts: SubstrateProxyAccountItem[];
21
+ substrateProxyDeposit: string;
22
+ }
23
+ export * from './actions';
@@ -0,0 +1,8 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ // All possible proxy types in Substrate in this article: https://wiki.polkadot.com/learn/learn-proxies/#proxy-types
5
+ // Only support these 4 types for now
6
+
7
+ export * from "./actions/index.js";
8
+ export {};
@@ -2,6 +2,7 @@ import { TransactionFee } from '../fee';
2
2
  import { TransactionWarningType } from './warning';
3
3
  export declare type BaseRequestSign = {
4
4
  ignoreWarnings?: TransactionWarningType[];
5
+ signerSubstrateProxyAddress?: string;
5
6
  };
6
7
  export declare type InternalRequestSign<T> = T & BaseRequestSign;
7
8
  export interface RequestBaseTransfer {
@@ -86,7 +86,7 @@ export interface BondingSubmitParams extends BaseRequestSign {
86
86
  };
87
87
  }
88
88
  export declare type RequestBondingSubmit = InternalRequestSign<BondingSubmitParams>;
89
- export declare type SubmitChangeValidatorStaking = SubmitBittensorChangeValidatorStaking | SubmitJoinNativeStaking;
89
+ export declare type SubmitChangeValidatorStaking = InternalRequestSign<SubmitBittensorChangeValidatorStaking | SubmitJoinNativeStaking>;
90
90
  export interface SubmitBittensorChangeValidatorStaking extends SubmitJoinNativeStaking {
91
91
  originValidator: string;
92
92
  maxAmount: string;
@@ -54,7 +54,7 @@ export declare enum PalletParachainStakingRequestType {
54
54
  BOND_LESS = "bondLess"
55
55
  }
56
56
  export interface PalletParachainStakingDelegationRequestsScheduledRequest {
57
- delegator: string;
57
+ delegator?: string;
58
58
  whenExecutable: number;
59
59
  action: Record<PalletParachainStakingRequestType, number>;
60
60
  }
@@ -157,14 +157,15 @@ const EARN_VMANTA_ACTIONS = [ExtrinsicType.MINT_VMANTA, ExtrinsicType.REDEEM_VMA
157
157
  const EVM_ACTIONS = [ExtrinsicType.TOKEN_SPENDING_APPROVAL, ExtrinsicType.EVM_EXECUTE];
158
158
  const CLAIM_AVAIL_BRIDGE = [ExtrinsicType.CLAIM_BRIDGE];
159
159
  const OPEN_GOV_ACTIONS = [ExtrinsicType.GOV_VOTE, ExtrinsicType.GOV_UNVOTE, ExtrinsicType.GOV_UNLOCK_VOTE];
160
+ const SUBSTRATE_PROXY_ACTION = [ExtrinsicType.ADD_SUBSTRATE_PROXY_ACCOUNT, ExtrinsicType.REMOVE_SUBSTRATE_PROXY_ACCOUNT];
160
161
  const OTHER_ACTIONS = [ExtrinsicType.TRANSFER_XCM, ExtrinsicType.SEND_NFT, ExtrinsicType.SWAP, ExtrinsicType.CROWDLOAN];
161
162
  export const getAccountTransactionActions = (signMode, networkType, type, _meta, _specialNetwork) => {
162
163
  if ([AccountSignMode.PASSWORD, AccountSignMode.INJECTED].includes(signMode)) {
163
164
  switch (networkType) {
164
165
  case AccountChainType.SUBSTRATE:
165
- return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS, ...EARN_QDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...OPEN_GOV_ACTIONS, ...OTHER_ACTIONS];
166
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS, ...EARN_QDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...OPEN_GOV_ACTIONS, ...SUBSTRATE_PROXY_ACTION, ...OTHER_ACTIONS];
166
167
  case AccountChainType.ETHEREUM:
167
- return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_STDOT_ACTIONS, ...OTHER_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...EVM_ACTIONS];
168
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_STDOT_ACTIONS, ...OTHER_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...SUBSTRATE_PROXY_ACTION, ...EVM_ACTIONS];
168
169
  case AccountChainType.TON:
169
170
  return [...BASE_TRANSFER_ACTIONS];
170
171
  case AccountChainType.CARDANO:
@@ -175,7 +176,7 @@ export const getAccountTransactionActions = (signMode, networkType, type, _meta,
175
176
  } else if (signMode === AccountSignMode.QR) {
176
177
  switch (networkType) {
177
178
  case AccountChainType.SUBSTRATE:
178
- return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS, ...EARN_QDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...OPEN_GOV_ACTIONS, ...OTHER_ACTIONS];
179
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS, ...EARN_QDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...OPEN_GOV_ACTIONS, ...SUBSTRATE_PROXY_ACTION, ...OTHER_ACTIONS];
179
180
  case AccountChainType.ETHEREUM:
180
181
  return [...(isProductionMode ? [] : [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_STDOT_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ...OTHER_ACTIONS, ...EVM_ACTIONS])];
181
182
  case AccountChainType.TON:
@@ -190,7 +191,7 @@ export const getAccountTransactionActions = (signMode, networkType, type, _meta,
190
191
  case AccountChainType.SUBSTRATE:
191
192
  return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS,
192
193
  // ...EARN_QDOT_ACTIONS,
193
- ...OPEN_GOV_ACTIONS, ...OTHER_ACTIONS];
194
+ ...OPEN_GOV_ACTIONS, ...SUBSTRATE_PROXY_ACTION, ...OTHER_ACTIONS];
194
195
  case AccountChainType.ETHEREUM:
195
196
  return [...BASE_TRANSFER_ACTIONS, ...EARN_STDOT_ACTIONS, ...EVM_ACTIONS, ...CLAIM_AVAIL_BRIDGE, ExtrinsicType.STAKING_WITHDRAW,
196
197
  // For liquid staking
@@ -319,7 +319,8 @@ export const calculateTransferMaxTransferable = async (id, request, freeBalance,
319
319
  feeType: feeChainType,
320
320
  id: id,
321
321
  error,
322
- isEvmRpcError: isEvmRpcError
322
+ isEvmRpcError: isEvmRpcError,
323
+ maxTransferableWithoutFee: freeBalance.value
323
324
  };
324
325
  };
325
326
  export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee) => {
@@ -510,7 +511,8 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
510
511
  feeOptions: feeOptions,
511
512
  feeType: feeChainType,
512
513
  id: id,
513
- error
514
+ error,
515
+ maxTransferableWithoutFee: freeBalance.value
514
516
  };
515
517
  };
516
518
  export const isEvmEIP1559FeeDetail = fee => {