@subwallet/extension-base 1.3.72-0 → 1.3.74-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 (113) hide show
  1. package/background/KoniTypes.d.ts +42 -5
  2. package/background/KoniTypes.js +14 -1
  3. package/cjs/background/KoniTypes.js +16 -2
  4. package/cjs/core/logic-validation/transfer.js +35 -57
  5. package/cjs/koni/background/handlers/Extension.js +599 -146
  6. package/cjs/koni/background/handlers/State.js +5 -6
  7. package/cjs/koni/background/handlers/Tabs.js +3 -2
  8. package/cjs/koni/background/subscription.js +2 -22
  9. package/cjs/packageInfo.js +1 -1
  10. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +0 -2
  11. package/cjs/services/chain-service/handler/SubstrateApi.js +6 -1
  12. package/cjs/services/chain-service/index.js +1 -0
  13. package/cjs/services/chain-service/utils/index.js +4 -0
  14. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -2
  15. package/cjs/services/event-service/index.js +1 -0
  16. package/cjs/services/fee-service/utils/index.js +4 -4
  17. package/cjs/services/inapp-notification-service/consts.js +4 -2
  18. package/cjs/services/inapp-notification-service/index.js +51 -6
  19. package/cjs/services/inapp-notification-service/interfaces.js +2 -0
  20. package/cjs/services/inapp-notification-service/utils/common.js +4 -0
  21. package/cjs/services/keyring-service/context/account-context.js +44 -0
  22. package/cjs/services/keyring-service/context/handlers/Multisig.js +186 -0
  23. package/cjs/services/keyring-service/context/state.js +12 -0
  24. package/cjs/services/multisig-service/index.js +627 -0
  25. package/cjs/services/multisig-service/utils.js +242 -0
  26. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +25 -0
  27. package/cjs/services/request-service/index.js +5 -1
  28. package/cjs/services/storage-service/DatabaseService.js +5 -2
  29. package/cjs/services/storage-service/db-stores/InappNotification.js +20 -2
  30. package/cjs/services/substrate-proxy-service/index.js +22 -7
  31. package/cjs/services/transaction-service/helpers/index.js +8 -0
  32. package/cjs/services/transaction-service/index.js +348 -147
  33. package/cjs/services/transaction-service/types.js +18 -1
  34. package/cjs/types/account/info/keyring.js +5 -0
  35. package/cjs/types/account/info/proxy.js +1 -0
  36. package/cjs/types/multisig/index.js +14 -0
  37. package/cjs/types/transaction/error.js +9 -2
  38. package/cjs/utils/account/transform.js +28 -4
  39. package/cjs/utils/logger/Logger.js +294 -0
  40. package/cjs/utils/logger/index.js +42 -0
  41. package/cjs/utils/logger/types.js +1 -0
  42. package/core/logic-validation/transfer.d.ts +2 -2
  43. package/core/logic-validation/transfer.js +10 -32
  44. package/koni/background/handlers/Extension.d.ts +7 -0
  45. package/koni/background/handlers/Extension.js +498 -45
  46. package/koni/background/handlers/State.d.ts +2 -1
  47. package/koni/background/handlers/State.js +5 -6
  48. package/koni/background/handlers/Tabs.js +3 -2
  49. package/koni/background/subscription.js +2 -22
  50. package/package.json +43 -7
  51. package/packageInfo.js +1 -1
  52. package/services/balance-service/helpers/subscribe/substrate/index.js +0 -2
  53. package/services/chain-service/handler/SubstrateApi.js +7 -2
  54. package/services/chain-service/index.js +1 -0
  55. package/services/chain-service/types.d.ts +1 -1
  56. package/services/chain-service/utils/index.js +4 -0
  57. package/services/earning-service/handlers/native-staking/para-chain.js +17 -2
  58. package/services/event-service/index.d.ts +1 -0
  59. package/services/event-service/index.js +1 -0
  60. package/services/event-service/types.d.ts +1 -0
  61. package/services/fee-service/utils/index.js +4 -4
  62. package/services/inapp-notification-service/consts.d.ts +3 -1
  63. package/services/inapp-notification-service/consts.js +5 -3
  64. package/services/inapp-notification-service/index.d.ts +3 -2
  65. package/services/inapp-notification-service/index.js +51 -6
  66. package/services/inapp-notification-service/interfaces.d.ts +18 -2
  67. package/services/inapp-notification-service/interfaces.js +2 -0
  68. package/services/inapp-notification-service/utils/common.d.ts +1 -0
  69. package/services/inapp-notification-service/utils/common.js +3 -0
  70. package/services/keyring-service/context/account-context.d.ts +9 -1
  71. package/services/keyring-service/context/account-context.js +44 -0
  72. package/services/keyring-service/context/handlers/Multisig.d.ts +18 -0
  73. package/services/keyring-service/context/handlers/Multisig.js +180 -0
  74. package/services/keyring-service/context/state.d.ts +2 -0
  75. package/services/keyring-service/context/state.js +12 -0
  76. package/services/multisig-service/index.d.ts +245 -0
  77. package/services/multisig-service/index.js +620 -0
  78. package/services/multisig-service/utils.d.ts +95 -0
  79. package/services/multisig-service/utils.js +227 -0
  80. package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -0
  81. package/services/request-service/handler/SubstrateRequestHandler.js +25 -0
  82. package/services/request-service/index.d.ts +2 -1
  83. package/services/request-service/index.js +5 -1
  84. package/services/storage-service/DatabaseService.d.ts +3 -2
  85. package/services/storage-service/DatabaseService.js +5 -2
  86. package/services/storage-service/db-stores/InappNotification.d.ts +3 -2
  87. package/services/storage-service/db-stores/InappNotification.js +20 -2
  88. package/services/substrate-proxy-service/index.d.ts +4 -1
  89. package/services/substrate-proxy-service/index.js +22 -8
  90. package/services/transaction-service/helpers/index.js +8 -0
  91. package/services/transaction-service/index.d.ts +31 -0
  92. package/services/transaction-service/index.js +270 -69
  93. package/services/transaction-service/types.d.ts +28 -3
  94. package/services/transaction-service/types.js +12 -1
  95. package/types/account/info/keyring.d.ts +14 -1
  96. package/types/account/info/keyring.js +6 -0
  97. package/types/account/info/proxy.d.ts +1 -0
  98. package/types/account/info/proxy.js +1 -0
  99. package/types/multisig/index.d.ts +76 -0
  100. package/types/multisig/index.js +8 -0
  101. package/types/notification/index.d.ts +8 -0
  102. package/types/substrateProxyAccount/index.d.ts +26 -1
  103. package/types/transaction/error.d.ts +6 -1
  104. package/types/transaction/error.js +7 -1
  105. package/types/transaction/request.d.ts +0 -1
  106. package/types/yield/info/pallet.d.ts +1 -1
  107. package/utils/account/transform.js +28 -4
  108. package/utils/logger/Logger.d.ts +31 -0
  109. package/utils/logger/Logger.js +267 -0
  110. package/utils/logger/index.d.ts +15 -0
  111. package/utils/logger/index.js +29 -0
  112. package/utils/logger/types.d.ts +23 -0
  113. package/utils/logger/types.js +1 -0
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AccountMultisigHandler = void 0;
7
+ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
8
+ var _Base = require("@subwallet/extension-base/services/keyring-service/context/handlers/Base");
9
+ var _types = require("@subwallet/extension-base/types");
10
+ var _utils = require("@subwallet/extension-base/utils");
11
+ var _keyring = require("@subwallet/keyring");
12
+ var _uiKeyring = require("@subwallet/ui-keyring");
13
+ var _i18next = require("i18next");
14
+ var _utilCrypto = require("@polkadot/util-crypto");
15
+ // Copyright 2019-2022 @subwallet/extension-base
16
+ // SPDX-License-Identifier: Apache-2.0
17
+
18
+ /**
19
+ * @class AccountMultisigHandler
20
+ * @extends AccountBaseHandler
21
+ * @description Handler for multisig account
22
+ * */
23
+ class AccountMultisigHandler extends _Base.AccountBaseHandler {
24
+ validateSigners(signers, threshold) {
25
+ const errors = [];
26
+ if (!signers || signers.length === 0) {
27
+ errors.push({
28
+ code: _KoniTypes.AccountMultisigErrorCode.INVALID_FILLED_ADDRESS,
29
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Multisig.signersRequired')
30
+ });
31
+ }
32
+ if (!signers || signers.length < 2) {
33
+ errors.push({
34
+ code: _KoniTypes.AccountMultisigErrorCode.INVALID_FILLED_ADDRESS,
35
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Multisig.multipleSignersRequired')
36
+ });
37
+ }
38
+ if (!threshold || threshold < 2 || threshold > signers.length) {
39
+ errors.push({
40
+ code: _KoniTypes.AccountMultisigErrorCode.INVALID_FILLED_THRESHOLD,
41
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Multisig.invalidThreshold')
42
+ });
43
+ }
44
+ for (const signer of signers) {
45
+ if (!signer || !(0, _keyring.isSubstrateAddress)(signer)) {
46
+ errors.push({
47
+ code: _KoniTypes.AccountMultisigErrorCode.INVALID_FILLED_ADDRESS,
48
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Multisig.mustBeSubstrateAddress')
49
+ });
50
+ break;
51
+ }
52
+ }
53
+ const distinctAddress = new Set();
54
+ for (const signer of signers) {
55
+ const rAddress = (0, _utils.reformatAddress)(signer);
56
+ if (distinctAddress.has(rAddress)) {
57
+ errors.push({
58
+ code: _KoniTypes.AccountMultisigErrorCode.DUPLICATE_FILLED_ADDRESS,
59
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Multisig.duplicateAddressFound')
60
+ });
61
+ break;
62
+ } else {
63
+ distinctAddress.add(rAddress);
64
+ }
65
+ }
66
+ return errors;
67
+ }
68
+ async accountsCreateMultisig(request) {
69
+ const {
70
+ name,
71
+ signers: _signer,
72
+ threshold
73
+ } = request;
74
+
75
+ // process signers
76
+ const signerError = this.validateSigners(_signer, threshold);
77
+ if (signerError.length > 0) {
78
+ return signerError;
79
+ }
80
+ const signers = _signer.map(address => (0, _utils.reformatAddress)(address));
81
+ const multisigKey = (0, _utilCrypto.createKeyMulti)(signers, threshold);
82
+ const multisigAddress = (0, _keyring.encodeAddress)(multisigKey);
83
+ try {
84
+ try {
85
+ const exists = _uiKeyring.keyring.getPair(multisigAddress);
86
+ if ((exists === null || exists === void 0 ? void 0 : exists.address) === (0, _utils.reformatAddress)(multisigAddress)) {
87
+ var _exists$meta;
88
+ const existingName = ((_exists$meta = exists.meta) === null || _exists$meta === void 0 ? void 0 : _exists$meta.name) || 'Unknown';
89
+ return [{
90
+ code: _KoniTypes.AccountMultisigErrorCode.INVALID_ADDRESS,
91
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Multisig.multisigAddressExists', {
92
+ replace: {
93
+ name: existingName
94
+ }
95
+ })
96
+ }];
97
+ }
98
+ } catch (e) {}
99
+ if (this.state.checkNameExists(name)) {
100
+ return [{
101
+ code: _KoniTypes.AccountMultisigErrorCode.INVALID_NAME,
102
+ message: (0, _i18next.t)('bg.ACCOUNT.services.keyring.handler.Secret.accountNameAlreadyExists')
103
+ }];
104
+ }
105
+ const meta = {
106
+ name,
107
+ threshold,
108
+ signers,
109
+ isExternal: true,
110
+ isMultisig: true,
111
+ genesisHash: ''
112
+ };
113
+ const multisigPair = _uiKeyring.keyring.keyring.addFromAddress(multisigAddress, meta);
114
+ _uiKeyring.keyring.saveAccount(multisigPair);
115
+ const address = multisigPair.address;
116
+ const modifiedPairs = this.state.modifyPairs;
117
+ modifiedPairs[address] = {
118
+ migrated: true,
119
+ key: address
120
+ };
121
+ this.state.upsertModifyPairs(modifiedPairs);
122
+ await new Promise(resolve => {
123
+ this.state.saveCurrentAccountProxyId(address, () => {
124
+ this.state._addAddressToAuthList(address, true);
125
+ resolve();
126
+ });
127
+ });
128
+ return [];
129
+ } catch (e) {
130
+ return [{
131
+ code: _KoniTypes.AccountMultisigErrorCode.KEYRING_ERROR,
132
+ message: e.message
133
+ }];
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Get 1-level signatories
139
+ * Ignore multisig accounts that are also signatories
140
+ */
141
+ getSignableAccountInfos(request, chainInfo) {
142
+ var _chainInfo$substrateI;
143
+ const {
144
+ extrinsicType,
145
+ multisigProxyId
146
+ } = request;
147
+ if (!((_chainInfo$substrateI = chainInfo.substrateInfo) !== null && _chainInfo$substrateI !== void 0 && _chainInfo$substrateI.supportMultisig)) {
148
+ return {
149
+ signableProxies: []
150
+ };
151
+ }
152
+ const allMultisigAccounts = this.state.getMultisigAccounts();
153
+ const allAccounts = this.state.accounts;
154
+ const targetMultisigAccount = allMultisigAccounts.find(acc => acc.id === multisigProxyId);
155
+ if (!targetMultisigAccount) {
156
+ return {
157
+ signableProxies: []
158
+ };
159
+ }
160
+ const signableAccountInfo = [];
161
+ const signers = targetMultisigAccount.accounts[0].signers;
162
+ const allMultisigAccountAddress = allMultisigAccounts.map(acc => acc.id);
163
+ for (const signer of signers) {
164
+ if (allMultisigAccountAddress.includes(signer)) {
165
+ continue;
166
+ }
167
+ const proxyId = this.state.belongUnifiedAccount(signer) || (0, _utils.reformatAddress)(signer);
168
+ const accountProxy = allAccounts[proxyId];
169
+ const substrateAccount = accountProxy === null || accountProxy === void 0 ? void 0 : accountProxy.accounts.find(acc => acc.chainType === _types.AccountChainType.SUBSTRATE);
170
+ if (substrateAccount) {
171
+ // Check if the account can sign the extrinsic type
172
+ // Only support 1 level signatories
173
+ if (substrateAccount.transactionActions.includes(extrinsicType) && !substrateAccount.isMultisig) {
174
+ signableAccountInfo.push({
175
+ proxyId,
176
+ address: signer
177
+ });
178
+ }
179
+ }
180
+ }
181
+ return {
182
+ signableProxies: signableAccountInfo
183
+ };
184
+ }
185
+ }
186
+ exports.AccountMultisigHandler = AccountMultisigHandler;
@@ -537,6 +537,18 @@ class AccountState {
537
537
  * Account ref
538
538
  * */
539
539
 
540
+ /* Multisig */
541
+
542
+ getMultisigAccounts() {
543
+ return Object.values(this.accounts).filter(acc => acc.accountType === _types.AccountProxyType.MULTISIG);
544
+ }
545
+ getMultisigAddresses() {
546
+ const allAccounts = this.getMultisigAccounts();
547
+ return allAccounts.map(acc => acc.id);
548
+ }
549
+
550
+ /* Multisig */
551
+
540
552
  /* Others */
541
553
 
542
554
  removeNoneHardwareGenesisHash() {