@subwallet/extension-base 1.3.21-0 → 1.3.23-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 +75 -2
- package/background/KoniTypes.js +2 -0
- package/cjs/background/KoniTypes.js +2 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/signing.js +6 -2
- package/cjs/core/logic-validation/recipientAddress.js +9 -1
- package/cjs/core/logic-validation/transfer.js +35 -29
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +12 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/crowdloan.js +1 -1
- package/cjs/koni/api/nft/index.js +9 -16
- package/cjs/koni/api/staking/index.js +3 -4
- package/cjs/koni/background/handlers/Extension.js +234 -96
- package/cjs/koni/background/handlers/State.js +15 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/cardano/consts.js +11 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/index.js +63 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/cjs/services/balance-service/helpers/subscribe/cardano/utils.js +74 -0
- package/cjs/services/balance-service/helpers/subscribe/index.js +21 -7
- package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +2 -2
- package/cjs/services/balance-service/index.js +4 -2
- package/cjs/services/balance-service/transfer/cardano-transfer.js +122 -0
- package/cjs/services/balance-service/transfer/token.js +4 -4
- package/cjs/services/chain-service/constants.js +8 -3
- package/cjs/services/chain-service/handler/CardanoApi.js +176 -0
- package/cjs/services/chain-service/handler/CardanoChainHandler.js +83 -0
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -2
- package/cjs/services/chain-service/handler/TonApi.js +2 -5
- package/cjs/services/chain-service/index.js +38 -7
- package/cjs/services/chain-service/utils/index.js +40 -11
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +337 -0
- package/cjs/services/earning-service/service.js +10 -12
- package/cjs/services/earning-service/utils/index.js +2 -0
- package/cjs/services/fee-service/service.js +19 -8
- package/cjs/services/history-service/index.js +4 -6
- package/cjs/services/inapp-notification-service/index.js +12 -4
- package/cjs/services/keyring-service/context/account-context.js +17 -2
- package/cjs/services/keyring-service/context/handlers/Derive.js +10 -7
- package/cjs/services/keyring-service/context/handlers/Migration.js +268 -0
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Secret.js +1 -1
- package/cjs/services/keyring-service/utils.js +18 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataDatabase.js +3 -23
- package/cjs/services/migration-service/scripts/databases/ClearMetadataForChains.js +40 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataForMythos.js +15 -0
- package/cjs/services/migration-service/scripts/index.js +6 -2
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +172 -0
- package/cjs/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/cjs/services/request-service/index.js +20 -2
- package/cjs/services/setting-service/constants.js +10 -1
- package/cjs/services/storage-service/DatabaseService.js +6 -0
- package/cjs/services/storage-service/db-stores/InappNotification.js +6 -0
- package/cjs/services/storage-service/db-stores/Metadata.js +3 -0
- package/cjs/services/storage-service/db-stores/Migration.js +6 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +0 -59
- package/cjs/services/swap-service/handler/chainflip-handler.js +33 -281
- package/cjs/services/swap-service/handler/hydradx-handler.js +23 -190
- package/cjs/services/swap-service/handler/simpleswap-handler.js +1 -222
- package/cjs/services/swap-service/handler/uniswap-handler.js +331 -0
- package/cjs/services/swap-service/index.js +31 -22
- package/cjs/services/swap-service/utils.js +21 -38
- package/cjs/services/transaction-service/helpers/index.js +6 -1
- package/cjs/services/transaction-service/index.js +278 -21
- package/cjs/services/transaction-service/utils.js +5 -1
- package/cjs/types/account/info/keyring.js +12 -1
- package/cjs/types/fee/cardano.js +1 -0
- package/cjs/types/swap/index.js +7 -2
- package/cjs/utils/account/analyze.js +2 -1
- package/cjs/utils/account/common.js +29 -20
- package/cjs/utils/account/derive/info/solo.js +9 -4
- package/cjs/utils/account/derive/validate.js +36 -2
- package/cjs/utils/account/transform.js +38 -13
- package/cjs/utils/fee/transfer.js +40 -7
- package/cjs/utils/index.js +2 -2
- package/cjs/utils/staticData/index.js +7 -2
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/signing.js +6 -2
- package/core/logic-validation/recipientAddress.js +11 -3
- package/core/logic-validation/transfer.js +9 -3
- package/core/substrate/xcm-parser.d.ts +1 -1
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +13 -3
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/crowdloan.js +3 -3
- package/koni/api/nft/index.js +10 -16
- package/koni/api/nft/story_odyssey_nft/index.d.ts +1 -1
- package/koni/api/staking/index.js +4 -5
- package/koni/background/handlers/Extension.d.ts +9 -0
- package/koni/background/handlers/Extension.js +144 -8
- package/koni/background/handlers/State.d.ts +5 -1
- package/koni/background/handlers/State.js +16 -1
- package/package.json +102 -25
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/cardano/consts.d.ts +1 -0
- package/services/balance-service/helpers/subscribe/cardano/consts.js +4 -0
- package/services/balance-service/helpers/subscribe/cardano/index.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/cardano/index.js +57 -0
- package/services/balance-service/helpers/subscribe/cardano/types.d.ts +34 -0
- package/services/balance-service/helpers/subscribe/cardano/types.js +1 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.d.ts +15 -0
- package/services/balance-service/helpers/subscribe/cardano/utils.js +62 -0
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +23 -9
- package/services/balance-service/helpers/subscribe/ton/utils.d.ts +1 -1
- package/services/balance-service/helpers/subscribe/ton/utils.js +1 -1
- package/services/balance-service/index.js +4 -2
- package/services/balance-service/transfer/cardano-transfer.d.ts +24 -0
- package/services/balance-service/transfer/cardano-transfer.js +114 -0
- package/services/balance-service/transfer/token.d.ts +1 -1
- package/services/balance-service/transfer/token.js +2 -2
- package/services/chain-service/constants.js +8 -3
- package/services/chain-service/handler/CardanoApi.d.ts +38 -0
- package/services/chain-service/handler/CardanoApi.js +167 -0
- package/services/chain-service/handler/CardanoChainHandler.d.ts +17 -0
- package/services/chain-service/handler/CardanoChainHandler.js +75 -0
- package/services/chain-service/handler/SubstrateChainHandler.js +3 -2
- package/services/chain-service/handler/TonApi.js +3 -6
- package/services/chain-service/handler/types.d.ts +1 -0
- package/services/chain-service/index.d.ts +4 -1
- package/services/chain-service/index.js +38 -7
- package/services/chain-service/types.d.ts +9 -1
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +32 -11
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +2 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +1 -1
- package/services/earning-service/handlers/liquid-staking/bifrost.js +1 -1
- package/services/earning-service/handlers/native-staking/mythos.d.ts +35 -0
- package/services/earning-service/handlers/native-staking/mythos.js +329 -0
- package/services/earning-service/service.js +12 -14
- package/services/earning-service/utils/index.js +2 -0
- package/services/fee-service/service.js +19 -8
- package/services/history-service/index.js +6 -8
- package/services/inapp-notification-service/index.d.ts +3 -4
- package/services/inapp-notification-service/index.js +14 -6
- package/services/keyring-service/context/account-context.d.ts +6 -2
- package/services/keyring-service/context/account-context.js +17 -2
- package/services/keyring-service/context/handlers/Derive.d.ts +1 -1
- package/services/keyring-service/context/handlers/Derive.js +10 -8
- package/services/keyring-service/context/handlers/Migration.d.ts +17 -0
- package/services/keyring-service/context/handlers/Migration.js +258 -0
- package/services/keyring-service/context/handlers/Mnemonic.js +2 -2
- package/services/keyring-service/context/handlers/Secret.js +2 -2
- package/services/keyring-service/utils.d.ts +2 -0
- package/services/keyring-service/utils.js +11 -0
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.d.ts +3 -3
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.js +3 -23
- package/services/migration-service/scripts/databases/ClearMetadataForChains.d.ts +5 -0
- package/services/migration-service/scripts/databases/ClearMetadataForChains.js +32 -0
- package/services/migration-service/scripts/databases/ClearMetadataForMythos.d.ts +4 -0
- package/services/migration-service/scripts/databases/ClearMetadataForMythos.js +7 -0
- package/services/migration-service/scripts/index.d.ts +1 -0
- package/services/migration-service/scripts/index.js +4 -1
- package/services/request-service/handler/CardanoRequestHandler.d.ts +16 -0
- package/services/request-service/handler/CardanoRequestHandler.js +163 -0
- package/services/request-service/handler/EvmRequestHandler.js +1 -1
- package/services/request-service/index.d.ts +6 -3
- package/services/request-service/index.js +19 -5
- package/services/setting-service/constants.d.ts +3 -0
- package/services/setting-service/constants.js +6 -0
- package/services/storage-service/DatabaseService.d.ts +2 -0
- package/services/storage-service/DatabaseService.js +6 -0
- package/services/storage-service/db-stores/InappNotification.d.ts +1 -0
- package/services/storage-service/db-stores/InappNotification.js +6 -0
- package/services/storage-service/db-stores/Metadata.d.ts +1 -0
- package/services/storage-service/db-stores/Metadata.js +3 -0
- package/services/storage-service/db-stores/Migration.d.ts +1 -0
- package/services/storage-service/db-stores/Migration.js +6 -1
- package/services/swap-service/handler/asset-hub/handler.d.ts +1 -4
- package/services/swap-service/handler/asset-hub/handler.js +2 -61
- package/services/swap-service/handler/base-handler.d.ts +1 -4
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -9
- package/services/swap-service/handler/chainflip-handler.js +31 -280
- package/services/swap-service/handler/hydradx-handler.d.ts +1 -6
- package/services/swap-service/handler/hydradx-handler.js +13 -180
- package/services/swap-service/handler/simpleswap-handler.d.ts +1 -4
- package/services/swap-service/handler/simpleswap-handler.js +5 -226
- package/services/swap-service/handler/uniswap-handler.d.ts +41 -0
- package/services/swap-service/handler/uniswap-handler.js +323 -0
- package/services/swap-service/index.js +30 -22
- package/services/swap-service/utils.d.ts +1 -5
- package/services/swap-service/utils.js +7 -21
- 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 +8 -2
- package/services/transaction-service/index.js +263 -10
- package/services/transaction-service/types.d.ts +7 -0
- package/services/transaction-service/utils.js +7 -2
- package/types/account/info/keyring.d.ts +4 -1
- package/types/account/info/keyring.js +9 -0
- package/types/account/info/proxy.d.ts +2 -0
- package/types/balance/index.d.ts +4 -1
- package/types/fee/base.d.ts +1 -1
- package/types/fee/cardano.d.ts +18 -0
- package/types/fee/cardano.js +1 -0
- package/types/fee/subscription.d.ts +4 -3
- package/types/swap/index.d.ts +11 -3
- package/types/swap/index.js +7 -2
- package/utils/account/analyze.js +2 -1
- package/utils/account/common.d.ts +11 -6
- package/utils/account/common.js +28 -19
- package/utils/account/derive/info/solo.js +10 -5
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +34 -1
- package/utils/account/transform.d.ts +2 -1
- package/utils/account/transform.js +37 -13
- package/utils/fee/transfer.d.ts +2 -1
- package/utils/fee/transfer.js +44 -11
- package/utils/index.js +4 -4
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
- package/utils/staticData/oldChainPrefix.json +1 -0
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _CardanoRequestHandler = _interopRequireDefault(require("@subwallet/extension-base/services/request-service/handler/CardanoRequestHandler"));
|
|
8
9
|
var _TonRequestHandler = _interopRequireDefault(require("./handler/TonRequestHandler"));
|
|
9
10
|
var _handler = require("./handler");
|
|
10
11
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
@@ -19,6 +20,7 @@ class RequestService {
|
|
|
19
20
|
#substrateRequestHandler;
|
|
20
21
|
#evmRequestHandler;
|
|
21
22
|
#tonRequestHandler;
|
|
23
|
+
#cardanoRequestHandler;
|
|
22
24
|
#connectWCRequestHandler;
|
|
23
25
|
#notSupportWCRequestHandler;
|
|
24
26
|
|
|
@@ -33,6 +35,7 @@ class RequestService {
|
|
|
33
35
|
this.#substrateRequestHandler = new _handler.SubstrateRequestHandler(this);
|
|
34
36
|
this.#evmRequestHandler = new _handler.EvmRequestHandler(this);
|
|
35
37
|
this.#tonRequestHandler = new _TonRequestHandler.default(this);
|
|
38
|
+
this.#cardanoRequestHandler = new _CardanoRequestHandler.default(this);
|
|
36
39
|
this.#connectWCRequestHandler = new _handler.ConnectWCRequestHandler(this);
|
|
37
40
|
this.#notSupportWCRequestHandler = new _handler.NotSupportWCRequestHandler(this);
|
|
38
41
|
|
|
@@ -40,7 +43,7 @@ class RequestService {
|
|
|
40
43
|
this.updateIconV2();
|
|
41
44
|
}
|
|
42
45
|
get numAllRequests() {
|
|
43
|
-
return this.allSubstrateRequests.length + this.numEvmRequests + this.numTonRequests;
|
|
46
|
+
return this.allSubstrateRequests.length + this.numEvmRequests + this.numTonRequests + this.numCardanoRequests;
|
|
44
47
|
}
|
|
45
48
|
updateIconV2(shouldClose) {
|
|
46
49
|
this.#popupHandler.updateIconV2(shouldClose);
|
|
@@ -150,12 +153,18 @@ class RequestService {
|
|
|
150
153
|
get numTonRequests() {
|
|
151
154
|
return this.#tonRequestHandler.numTonRequests;
|
|
152
155
|
}
|
|
156
|
+
get numCardanoRequests() {
|
|
157
|
+
return this.#cardanoRequestHandler.numCardanoRequests;
|
|
158
|
+
}
|
|
153
159
|
get confirmationsQueueSubject() {
|
|
154
160
|
return this.#evmRequestHandler.getConfirmationsQueueSubject();
|
|
155
161
|
}
|
|
156
162
|
get confirmationsQueueSubjectTon() {
|
|
157
163
|
return this.#tonRequestHandler.getConfirmationsQueueSubjectTon();
|
|
158
164
|
}
|
|
165
|
+
get confirmationsQueueSubjectCardano() {
|
|
166
|
+
return this.#cardanoRequestHandler.getConfirmationsQueueSubjectCardano();
|
|
167
|
+
}
|
|
159
168
|
getSignRequest(id) {
|
|
160
169
|
return this.#substrateRequestHandler.getSignRequest(id);
|
|
161
170
|
}
|
|
@@ -172,12 +181,20 @@ class RequestService {
|
|
|
172
181
|
let validator = arguments.length > 5 ? arguments[5] : undefined;
|
|
173
182
|
return this.#tonRequestHandler.addConfirmationTon(id, url, type, payload, options, validator);
|
|
174
183
|
}
|
|
184
|
+
addConfirmationCardano(id, url, type, payload) {
|
|
185
|
+
let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
186
|
+
let validator = arguments.length > 5 ? arguments[5] : undefined;
|
|
187
|
+
return this.#cardanoRequestHandler.addConfirmationCardano(id, url, type, payload, options, validator);
|
|
188
|
+
}
|
|
175
189
|
async completeConfirmation(request) {
|
|
176
190
|
return await this.#evmRequestHandler.completeConfirmation(request);
|
|
177
191
|
}
|
|
178
192
|
async completeConfirmationTon(request) {
|
|
179
193
|
return await this.#tonRequestHandler.completeConfirmationTon(request);
|
|
180
194
|
}
|
|
195
|
+
async completeConfirmationCardano(request) {
|
|
196
|
+
return await this.#cardanoRequestHandler.completeConfirmationCardano(request);
|
|
197
|
+
}
|
|
181
198
|
updateConfirmation(id, type, payload) {
|
|
182
199
|
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
183
200
|
let validator = arguments.length > 4 ? arguments[4] : undefined;
|
|
@@ -220,13 +237,14 @@ class RequestService {
|
|
|
220
237
|
|
|
221
238
|
// General methods
|
|
222
239
|
get numRequests() {
|
|
223
|
-
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests + this.numTonRequests;
|
|
240
|
+
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests + this.numTonRequests + this.numCardanoRequests;
|
|
224
241
|
}
|
|
225
242
|
resetWallet() {
|
|
226
243
|
this.#authRequestHandler.resetWallet();
|
|
227
244
|
this.#substrateRequestHandler.resetWallet();
|
|
228
245
|
this.#evmRequestHandler.resetWallet();
|
|
229
246
|
this.#tonRequestHandler.resetWallet();
|
|
247
|
+
this.#cardanoRequestHandler.resetWallet();
|
|
230
248
|
this.#metadataRequestHandler.resetWallet();
|
|
231
249
|
this.#connectWCRequestHandler.resetWallet();
|
|
232
250
|
this.#notSupportWCRequestHandler.resetWallet();
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DEFAULT_UNLOCK_TYPE = exports.DEFAULT_THEME = exports.DEFAULT_SHOW_ZERO_BALANCE = exports.DEFAULT_SHOW_BALANCE = exports.DEFAULT_SETTING = exports.DEFAULT_NOTIFICATION_TYPE = exports.DEFAULT_NOTIFICATION_SETUP = exports.DEFAULT_LANGUAGE = exports.DEFAULT_CURRENCY = exports.DEFAULT_CHAIN_PATROL_ENABLE = exports.DEFAULT_CAMERA_ENABLE = exports.DEFAULT_AUTO_LOCK_TIME = exports.DEFAULT_ALL_LOGO = exports.DEFAULT_ALLOW_ONE_SIGN = void 0;
|
|
6
|
+
exports.DEFAULT_UNLOCK_TYPE = exports.DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_PROGRESS = exports.DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_DONE = exports.DEFAULT_THEME = exports.DEFAULT_SHOW_ZERO_BALANCE = exports.DEFAULT_SHOW_BALANCE = exports.DEFAULT_SETTING = exports.DEFAULT_NOTIFICATION_TYPE = exports.DEFAULT_NOTIFICATION_SETUP = exports.DEFAULT_LANGUAGE = exports.DEFAULT_CURRENCY = exports.DEFAULT_CHAIN_PATROL_ENABLE = exports.DEFAULT_CAMERA_ENABLE = exports.DEFAULT_AUTO_LOCK_TIME = exports.DEFAULT_ALL_LOGO = exports.DEFAULT_ALLOW_ONE_SIGN = exports.DEFAULT_ACKNOWLEDGED_MIGRATION_STATUS = void 0;
|
|
7
7
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
8
8
|
var _utils = require("@subwallet/extension-base/utils");
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -48,6 +48,12 @@ const DEFAULT_NOTIFICATION_SETUP = {
|
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
exports.DEFAULT_NOTIFICATION_SETUP = DEFAULT_NOTIFICATION_SETUP;
|
|
51
|
+
const DEFAULT_ACKNOWLEDGED_MIGRATION_STATUS = false;
|
|
52
|
+
exports.DEFAULT_ACKNOWLEDGED_MIGRATION_STATUS = DEFAULT_ACKNOWLEDGED_MIGRATION_STATUS;
|
|
53
|
+
const DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_PROGRESS = false;
|
|
54
|
+
exports.DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_PROGRESS = DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_PROGRESS;
|
|
55
|
+
const DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_DONE = false;
|
|
56
|
+
exports.DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_DONE = DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_DONE;
|
|
51
57
|
const DEFAULT_SETTING = {
|
|
52
58
|
language: DEFAULT_LANGUAGE,
|
|
53
59
|
currency: DEFAULT_CURRENCY,
|
|
@@ -61,6 +67,9 @@ const DEFAULT_SETTING = {
|
|
|
61
67
|
timeAutoLock: DEFAULT_AUTO_LOCK_TIME,
|
|
62
68
|
enableChainPatrol: DEFAULT_CHAIN_PATROL_ENABLE,
|
|
63
69
|
notificationSetup: DEFAULT_NOTIFICATION_SETUP,
|
|
70
|
+
isAcknowledgedUnifiedAccountMigration: DEFAULT_ACKNOWLEDGED_MIGRATION_STATUS,
|
|
71
|
+
isUnifiedAccountMigrationInProgress: DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_PROGRESS,
|
|
72
|
+
isUnifiedAccountMigrationDone: DEFAULT_UNIFIED_ACCOUNT_MIGRATION_IN_DONE,
|
|
64
73
|
walletReference: '',
|
|
65
74
|
allowOneSign: DEFAULT_ALLOW_ONE_SIGN
|
|
66
75
|
};
|
|
@@ -607,6 +607,9 @@ class DatabaseService {
|
|
|
607
607
|
removeAccountNotifications(proxyId) {
|
|
608
608
|
return this.stores.inappNotification.removeAccountNotifications(proxyId);
|
|
609
609
|
}
|
|
610
|
+
updateNotificationProxyId(proxyIds, newProxyId, newName) {
|
|
611
|
+
return this.stores.inappNotification.updateNotificationProxyId(proxyIds, newProxyId, newName);
|
|
612
|
+
}
|
|
610
613
|
async exportDB() {
|
|
611
614
|
const blob = await (0, _dexieExportImport.exportDB)(this._db, {
|
|
612
615
|
filter: (table, value, key) => {
|
|
@@ -651,6 +654,9 @@ class DatabaseService {
|
|
|
651
654
|
deleteProcessTransactionById(processId) {
|
|
652
655
|
return this.stores.processTransactions.delete(processId);
|
|
653
656
|
}
|
|
657
|
+
hasRunScript(key) {
|
|
658
|
+
return this.stores.migration.hasRunScript(key);
|
|
659
|
+
}
|
|
654
660
|
|
|
655
661
|
// public setAssetRef (assetRef: Record<string, _AssetRef>) {
|
|
656
662
|
// const assetRefList = Object.entries(assetRef).map(([slug, item]) => {
|
|
@@ -43,6 +43,12 @@ class InappNotificationStore extends _BaseStore.default {
|
|
|
43
43
|
});
|
|
44
44
|
return filteredTable.toArray();
|
|
45
45
|
}
|
|
46
|
+
updateNotificationProxyId(proxyIds, newProxyId, newName) {
|
|
47
|
+
this.table.where('proxyId').anyOfIgnoreCase(proxyIds).modify(item => {
|
|
48
|
+
item.proxyId = newProxyId;
|
|
49
|
+
item.title = item.title.replace(/\[.*?\]/, `[${newName}]`);
|
|
50
|
+
}).catch(console.error);
|
|
51
|
+
}
|
|
46
52
|
async cleanUpOldNotifications(overdueTime) {
|
|
47
53
|
const currentTimestamp = Date.now();
|
|
48
54
|
return this.table.filter(item => item.time <= currentTimestamp - overdueTime).delete();
|
|
@@ -22,5 +22,8 @@ class MetadataStore extends _BaseStoreWithChain.default {
|
|
|
22
22
|
updateMetadataByGenesisHash(genesisHash, metadata) {
|
|
23
23
|
return this.table.put(metadata, genesisHash);
|
|
24
24
|
}
|
|
25
|
+
clearByChains(chains) {
|
|
26
|
+
return this.table.where('chain').anyOf(chains).delete();
|
|
27
|
+
}
|
|
25
28
|
}
|
|
26
29
|
exports.default = MetadataStore;
|
|
@@ -9,5 +9,10 @@ var _BaseStore = _interopRequireDefault(require("./BaseStore"));
|
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
11
|
|
|
12
|
-
class MigrationStore extends _BaseStore.default {
|
|
12
|
+
class MigrationStore extends _BaseStore.default {
|
|
13
|
+
async hasRunScript(key) {
|
|
14
|
+
const rs = await this.table.where('key').equals(key).first();
|
|
15
|
+
return !!rs;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
13
18
|
exports.default = MigrationStore;
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.AssetHubSwapHandler = void 0;
|
|
8
|
-
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
9
8
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
10
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
10
|
var _constants = require("@subwallet/extension-base/constants");
|
|
@@ -23,7 +22,6 @@ var _router = require("./router");
|
|
|
23
22
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
24
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
25
24
|
|
|
26
|
-
const PAH_LOW_LIQUIDITY_THRESHOLD = 0.15;
|
|
27
25
|
class AssetHubSwapHandler {
|
|
28
26
|
isReady = false;
|
|
29
27
|
constructor(chainService, balanceService, feeService, chain) {
|
|
@@ -157,57 +155,6 @@ class AssetHubSwapHandler {
|
|
|
157
155
|
generateOptimalProcess(params) {
|
|
158
156
|
return this.swapBaseHandler.generateOptimalProcess(params, [this.getXcmStep.bind(this), this.getSubmitStep.bind(this)]);
|
|
159
157
|
}
|
|
160
|
-
async getSwapQuote(request) {
|
|
161
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
162
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
163
|
-
const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
164
|
-
const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
|
|
165
|
-
if (!this.isReady || !this.router) {
|
|
166
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.UNKNOWN);
|
|
167
|
-
}
|
|
168
|
-
const earlyValidation = await this.validateSwapRequest(request);
|
|
169
|
-
if (earlyValidation.error) {
|
|
170
|
-
const metadata = earlyValidation.metadata;
|
|
171
|
-
return (0, _swap._getEarlyAssetHubValidationError)(earlyValidation.error, metadata);
|
|
172
|
-
}
|
|
173
|
-
try {
|
|
174
|
-
const paths = this.router.buildPath(request.pair);
|
|
175
|
-
const amountOut = earlyValidation.metadata.toAmount;
|
|
176
|
-
const toAmount = new _bignumber.default(amountOut);
|
|
177
|
-
const minReceive = toAmount.times(1 - request.slippage).integerValue(_bignumber.default.ROUND_DOWN);
|
|
178
|
-
const extrinsic = await this.router.buildSwapExtrinsic(paths, request.address, request.fromAmount, minReceive.toString());
|
|
179
|
-
const paymentInfo = await extrinsic.paymentInfo(request.address);
|
|
180
|
-
const networkFee = {
|
|
181
|
-
tokenSlug: fromChainNativeTokenSlug,
|
|
182
|
-
amount: paymentInfo.partialFee.toString(),
|
|
183
|
-
feeType: _swap2.SwapFeeType.NETWORK_FEE
|
|
184
|
-
};
|
|
185
|
-
const feeTokenOptions = [fromChainNativeTokenSlug];
|
|
186
|
-
const selectedFeeToken = fromChainNativeTokenSlug;
|
|
187
|
-
const priceImpactPct = earlyValidation.metadata.priceImpactPct || '0';
|
|
188
|
-
return {
|
|
189
|
-
pair: request.pair,
|
|
190
|
-
fromAmount: request.fromAmount,
|
|
191
|
-
toAmount: toAmount.toString(),
|
|
192
|
-
rate: (0, _utils2.convertSwapRate)(earlyValidation.metadata.quoteRate, fromAsset, toAsset),
|
|
193
|
-
provider: this.providerInfo,
|
|
194
|
-
aliveUntil: +Date.now() + (_utils2.SWAP_QUOTE_TIMEOUT_MAP[this.slug] || _utils2.SWAP_QUOTE_TIMEOUT_MAP.default),
|
|
195
|
-
feeInfo: {
|
|
196
|
-
feeComponent: [networkFee],
|
|
197
|
-
defaultFeeToken: fromChainNativeTokenSlug,
|
|
198
|
-
feeOptions: feeTokenOptions,
|
|
199
|
-
// TODO: enable fee options
|
|
200
|
-
selectedFeeToken
|
|
201
|
-
},
|
|
202
|
-
isLowLiquidity: Math.abs(parseFloat(priceImpactPct)) >= PAH_LOW_LIQUIDITY_THRESHOLD,
|
|
203
|
-
route: {
|
|
204
|
-
path: paths.map(asset => asset.slug)
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
} catch (e) {
|
|
208
|
-
return new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
158
|
async handleXcmStep(params) {
|
|
212
159
|
const pair = params.quote.pair;
|
|
213
160
|
const alternativeAssetSlug = (0, _utils2.getSwapAlternativeAsset)(pair);
|
|
@@ -369,11 +316,5 @@ class AssetHubSwapHandler {
|
|
|
369
316
|
}
|
|
370
317
|
return [];
|
|
371
318
|
}
|
|
372
|
-
validateSwapRequest(request) {
|
|
373
|
-
if (!this.isReady || !this.router) {
|
|
374
|
-
throw new _SwapError.SwapError(_swap2.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
375
|
-
}
|
|
376
|
-
return this.router.earlyValidateSwapValidation(request);
|
|
377
|
-
}
|
|
378
319
|
}
|
|
379
320
|
exports.AssetHubSwapHandler = AssetHubSwapHandler;
|
|
@@ -5,12 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.ChainflipSwapHandler = exports.CHAINFLIP_BROKER_API = void 0;
|
|
8
|
-
var _swap = require("@chainflip/sdk/swap");
|
|
9
8
|
var _chainList = require("@subwallet/chain-list");
|
|
10
|
-
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
11
9
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
12
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
13
|
-
var _swap2 = require("@subwallet/extension-base/core/logic-validation/swap");
|
|
14
11
|
var _smartContract = require("@subwallet/extension-base/services/balance-service/transfer/smart-contract");
|
|
15
12
|
var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
|
|
16
13
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
@@ -18,29 +15,17 @@ var _baseHandler = require("@subwallet/extension-base/services/swap-service/hand
|
|
|
18
15
|
var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
|
|
19
16
|
var _types = require("@subwallet/extension-base/types");
|
|
20
17
|
var _serviceBase = require("@subwallet/extension-base/types/service-base");
|
|
21
|
-
var
|
|
18
|
+
var _swap = require("@subwallet/extension-base/types/swap");
|
|
19
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
22
20
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
23
21
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
24
22
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
25
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
26
|
-
|
|
27
|
-
(function (ChainflipFeeType) {
|
|
28
|
-
ChainflipFeeType["INGRESS"] = "INGRESS";
|
|
29
|
-
ChainflipFeeType["NETWORK"] = "NETWORK";
|
|
30
|
-
ChainflipFeeType["EGRESS"] = "EGRESS";
|
|
31
|
-
ChainflipFeeType["BOOST"] = "BOOST";
|
|
32
|
-
ChainflipFeeType["BROKER"] = "BROKER";
|
|
33
|
-
})(ChainflipFeeType || (ChainflipFeeType = {}));
|
|
24
|
+
|
|
34
25
|
const INTERMEDIARY_MAINNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_ETHEREUM;
|
|
35
26
|
const INTERMEDIARY_TESTNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_SEPOLIA;
|
|
36
27
|
const CHAINFLIP_BROKER_API = process.env.CHAINFLIP_BROKER_API || '';
|
|
37
28
|
exports.CHAINFLIP_BROKER_API = CHAINFLIP_BROKER_API;
|
|
38
|
-
var CHAINFLIP_QUOTE_ERROR;
|
|
39
|
-
(function (CHAINFLIP_QUOTE_ERROR) {
|
|
40
|
-
CHAINFLIP_QUOTE_ERROR["InsufficientLiquidity"] = "InsufficientLiquidity";
|
|
41
|
-
CHAINFLIP_QUOTE_ERROR["InsufficientEgress"] = "is lower than minimum egress amount";
|
|
42
|
-
CHAINFLIP_QUOTE_ERROR["InsufficientIngress"] = "amount is lower than estimated ingress fee";
|
|
43
|
-
})(CHAINFLIP_QUOTE_ERROR || (CHAINFLIP_QUOTE_ERROR = {}));
|
|
44
29
|
class ChainflipSwapHandler {
|
|
45
30
|
constructor(chainService, balanceService, feeService) {
|
|
46
31
|
let isTestnet = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
@@ -49,13 +34,11 @@ class ChainflipSwapHandler {
|
|
|
49
34
|
balanceService,
|
|
50
35
|
feeService,
|
|
51
36
|
providerName: isTestnet ? 'Chainflip Testnet' : 'Chainflip',
|
|
52
|
-
providerSlug: isTestnet ?
|
|
37
|
+
providerSlug: isTestnet ? _swap.SwapProviderId.CHAIN_FLIP_TESTNET : _swap.SwapProviderId.CHAIN_FLIP_MAINNET
|
|
53
38
|
});
|
|
54
39
|
this.isTestnet = isTestnet;
|
|
55
|
-
this.providerSlug = isTestnet ?
|
|
56
|
-
|
|
57
|
-
// @ts-ignore
|
|
58
|
-
this.swapSdk = new _swap.SwapSDK((0, _utils2.getChainflipOptions)(isTestnet));
|
|
40
|
+
this.providerSlug = isTestnet ? _swap.SwapProviderId.CHAIN_FLIP_TESTNET : _swap.SwapProviderId.CHAIN_FLIP_MAINNET;
|
|
41
|
+
this.baseUrl = (0, _utils2.getChainflipSwap)(isTestnet);
|
|
59
42
|
}
|
|
60
43
|
get chainService() {
|
|
61
44
|
return this.swapBaseHandler.chainService;
|
|
@@ -72,20 +55,6 @@ class ChainflipSwapHandler {
|
|
|
72
55
|
get slug() {
|
|
73
56
|
return this.swapBaseHandler.slug;
|
|
74
57
|
}
|
|
75
|
-
get assetMapping() {
|
|
76
|
-
if (this.isTestnet) {
|
|
77
|
-
return _utils2.CHAIN_FLIP_SUPPORTED_TESTNET_ASSET_MAPPING;
|
|
78
|
-
} else {
|
|
79
|
-
return _utils2.CHAIN_FLIP_SUPPORTED_MAINNET_ASSET_MAPPING;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
get chainMapping() {
|
|
83
|
-
if (this.isTestnet) {
|
|
84
|
-
return _utils2.CHAIN_FLIP_SUPPORTED_TESTNET_MAPPING;
|
|
85
|
-
} else {
|
|
86
|
-
return _utils2.CHAIN_FLIP_SUPPORTED_MAINNET_MAPPING;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
58
|
get intermediaryAssetSlug() {
|
|
90
59
|
if (this.isTestnet) {
|
|
91
60
|
return INTERMEDIARY_TESTNET_ASSET_SLUG;
|
|
@@ -93,224 +62,6 @@ class ChainflipSwapHandler {
|
|
|
93
62
|
return INTERMEDIARY_MAINNET_ASSET_SLUG;
|
|
94
63
|
}
|
|
95
64
|
}
|
|
96
|
-
async validateSwapRequest(request) {
|
|
97
|
-
try {
|
|
98
|
-
// todo: risk of matching wrong chain, asset can lead to loss of funds
|
|
99
|
-
|
|
100
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
101
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
102
|
-
const srcChain = fromAsset.originChain;
|
|
103
|
-
const destChain = toAsset.originChain;
|
|
104
|
-
const isSwapCrossChain = srcChain !== destChain;
|
|
105
|
-
const srcChainInfo = this.chainService.getChainInfoByKey(srcChain);
|
|
106
|
-
const srcChainId = this.chainMapping[srcChain];
|
|
107
|
-
const destChainId = this.chainMapping[destChain];
|
|
108
|
-
const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
|
|
109
|
-
const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
|
|
110
|
-
if (!srcChainId || !destChainId || !fromAssetId || !toAssetId) {
|
|
111
|
-
return {
|
|
112
|
-
error: _swap3.SwapErrorType.ASSET_NOT_SUPPORTED
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
const [supportedDestChains, srcAssets, destAssets] = await Promise.all([this.swapSdk.getChains(srcChainId), this.swapSdk.getAssets(srcChainId), this.swapSdk.getAssets(destChainId)]);
|
|
116
|
-
const supportedDestChainId = supportedDestChains.find(c => c.chain === destChainId);
|
|
117
|
-
const srcAssetData = srcAssets.find(a => {
|
|
118
|
-
if ((0, _utils._isSmartContractToken)(fromAsset)) {
|
|
119
|
-
var _a$contractAddress;
|
|
120
|
-
return (a === null || a === void 0 ? void 0 : (_a$contractAddress = a.contractAddress) === null || _a$contractAddress === void 0 ? void 0 : _a$contractAddress.toLowerCase()) === (0, _utils._getContractAddressOfToken)(fromAsset).toLowerCase() && a.asset === fromAssetId;
|
|
121
|
-
}
|
|
122
|
-
return a.asset === fromAssetId;
|
|
123
|
-
});
|
|
124
|
-
const destAssetData = destAssets.find(a => {
|
|
125
|
-
if ((0, _utils._isSmartContractToken)(toAsset)) {
|
|
126
|
-
var _a$contractAddress2;
|
|
127
|
-
return (a === null || a === void 0 ? void 0 : (_a$contractAddress2 = a.contractAddress) === null || _a$contractAddress2 === void 0 ? void 0 : _a$contractAddress2.toLowerCase()) === (0, _utils._getContractAddressOfToken)(toAsset).toLowerCase() && a.asset === toAssetId;
|
|
128
|
-
}
|
|
129
|
-
return a.asset === toAssetId;
|
|
130
|
-
});
|
|
131
|
-
if (!destAssetData || !srcAssetData || isSwapCrossChain && !supportedDestChainId) {
|
|
132
|
-
return {
|
|
133
|
-
error: _swap3.SwapErrorType.UNKNOWN
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
const bnAmount = new _bignumber.default(request.fromAmount);
|
|
137
|
-
const bnMinSwap = new _bignumber.default(srcAssetData.minimumSwapAmount);
|
|
138
|
-
if (srcAssetData.maximumSwapAmount) {
|
|
139
|
-
const bnMaxProtocolSwap = new _bignumber.default(srcAssetData.maximumSwapAmount);
|
|
140
|
-
if (bnMinSwap.gte(bnMaxProtocolSwap)) {
|
|
141
|
-
return {
|
|
142
|
-
error: _swap3.SwapErrorType.UNKNOWN
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
if (bnAmount.gte(bnMaxProtocolSwap)) {
|
|
146
|
-
return {
|
|
147
|
-
error: _swap3.SwapErrorType.SWAP_EXCEED_ALLOWANCE,
|
|
148
|
-
metadata: {
|
|
149
|
-
minSwap: {
|
|
150
|
-
value: srcAssetData.minimumSwapAmount,
|
|
151
|
-
decimals: (0, _utils._getAssetDecimals)(fromAsset),
|
|
152
|
-
symbol: fromAsset.symbol
|
|
153
|
-
},
|
|
154
|
-
maxSwap: {
|
|
155
|
-
value: bnMaxProtocolSwap.toString(),
|
|
156
|
-
decimals: (0, _utils._getAssetDecimals)(fromAsset),
|
|
157
|
-
symbol: fromAsset.symbol
|
|
158
|
-
},
|
|
159
|
-
chain: srcChainInfo
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (bnAmount.lt(bnMinSwap)) {
|
|
165
|
-
// might miss case when minSwap is 0
|
|
166
|
-
return {
|
|
167
|
-
error: _swap3.SwapErrorType.NOT_MEET_MIN_SWAP,
|
|
168
|
-
metadata: {
|
|
169
|
-
minSwap: {
|
|
170
|
-
value: srcAssetData.minimumSwapAmount,
|
|
171
|
-
decimals: (0, _utils._getAssetDecimals)(fromAsset),
|
|
172
|
-
symbol: fromAsset.symbol
|
|
173
|
-
},
|
|
174
|
-
maxSwap: {
|
|
175
|
-
value: srcAssetData.maximumSwapAmount,
|
|
176
|
-
decimals: (0, _utils._getAssetDecimals)(fromAsset),
|
|
177
|
-
symbol: fromAsset.symbol
|
|
178
|
-
},
|
|
179
|
-
chain: srcChainInfo
|
|
180
|
-
}
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
return {
|
|
184
|
-
metadata: {
|
|
185
|
-
minSwap: {
|
|
186
|
-
value: srcAssetData.minimumSwapAmount,
|
|
187
|
-
decimals: (0, _utils._getAssetDecimals)(fromAsset),
|
|
188
|
-
symbol: fromAsset.symbol
|
|
189
|
-
},
|
|
190
|
-
maxSwap: {
|
|
191
|
-
value: srcAssetData.maximumSwapAmount,
|
|
192
|
-
decimals: (0, _utils._getAssetDecimals)(fromAsset),
|
|
193
|
-
symbol: fromAsset.symbol
|
|
194
|
-
},
|
|
195
|
-
chain: srcChainInfo
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
} catch (e) {
|
|
199
|
-
return {
|
|
200
|
-
error: _swap3.SwapErrorType.UNKNOWN
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
parseSwapPath(fromAsset, toAsset) {
|
|
205
|
-
if (toAsset.slug !== this.intermediaryAssetSlug && fromAsset.slug !== this.intermediaryAssetSlug) {
|
|
206
|
-
// Chainflip always use USDC as intermediary
|
|
207
|
-
return [fromAsset.slug, this.intermediaryAssetSlug, toAsset.slug]; // todo: generalize this
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
return [fromAsset.slug, toAsset.slug];
|
|
211
|
-
}
|
|
212
|
-
async getSwapQuote(request) {
|
|
213
|
-
const fromAsset = this.chainService.getAssetBySlug(request.pair.from);
|
|
214
|
-
const toAsset = this.chainService.getAssetBySlug(request.pair.to);
|
|
215
|
-
const fromChain = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
216
|
-
const fromChainNativeTokenSlug = (0, _utils._getChainNativeTokenSlug)(fromChain);
|
|
217
|
-
if (!fromAsset || !toAsset) {
|
|
218
|
-
return new _SwapError.SwapError(_swap3.SwapErrorType.UNKNOWN);
|
|
219
|
-
}
|
|
220
|
-
const earlyValidation = await this.validateSwapRequest(request);
|
|
221
|
-
const metadata = earlyValidation.metadata;
|
|
222
|
-
if (earlyValidation.error) {
|
|
223
|
-
return (0, _swap2._getChainflipEarlyValidationError)(earlyValidation.error, metadata);
|
|
224
|
-
}
|
|
225
|
-
const srcChainId = this.chainMapping[fromAsset.originChain];
|
|
226
|
-
const destChainId = this.chainMapping[toAsset.originChain];
|
|
227
|
-
const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
|
|
228
|
-
const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
|
|
229
|
-
try {
|
|
230
|
-
var _metadata$maxSwap;
|
|
231
|
-
const quoteResponse = await this.swapSdk.getQuote({
|
|
232
|
-
srcChain: srcChainId,
|
|
233
|
-
destChain: destChainId,
|
|
234
|
-
srcAsset: fromAssetId,
|
|
235
|
-
destAsset: toAssetId,
|
|
236
|
-
amount: request.fromAmount
|
|
237
|
-
});
|
|
238
|
-
const feeComponent = [];
|
|
239
|
-
quoteResponse.quote.includedFees.forEach(fee => {
|
|
240
|
-
switch (fee.type) {
|
|
241
|
-
case ChainflipFeeType.INGRESS:
|
|
242
|
-
{
|
|
243
|
-
feeComponent.push({
|
|
244
|
-
tokenSlug: fromAsset.slug,
|
|
245
|
-
amount: fee.amount,
|
|
246
|
-
feeType: _swap3.SwapFeeType.NETWORK_FEE
|
|
247
|
-
});
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
// eslint-disable-next-line no-fallthrough
|
|
252
|
-
case ChainflipFeeType.EGRESS:
|
|
253
|
-
{
|
|
254
|
-
feeComponent.push({
|
|
255
|
-
tokenSlug: toAsset.slug,
|
|
256
|
-
amount: fee.amount,
|
|
257
|
-
feeType: _swap3.SwapFeeType.NETWORK_FEE
|
|
258
|
-
});
|
|
259
|
-
break;
|
|
260
|
-
}
|
|
261
|
-
case ChainflipFeeType.NETWORK:
|
|
262
|
-
|
|
263
|
-
// eslint-disable-next-line no-fallthrough
|
|
264
|
-
case ChainflipFeeType.BOOST:
|
|
265
|
-
|
|
266
|
-
// eslint-disable-next-line no-fallthrough
|
|
267
|
-
case ChainflipFeeType.BROKER:
|
|
268
|
-
{
|
|
269
|
-
feeComponent.push({
|
|
270
|
-
tokenSlug: this.intermediaryAssetSlug,
|
|
271
|
-
amount: fee.amount,
|
|
272
|
-
feeType: _swap3.SwapFeeType.PLATFORM_FEE
|
|
273
|
-
});
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
const defaultFeeToken = (0, _utils._isNativeToken)(fromAsset) ? fromAsset.slug : fromChainNativeTokenSlug;
|
|
279
|
-
return {
|
|
280
|
-
pair: request.pair,
|
|
281
|
-
fromAmount: request.fromAmount,
|
|
282
|
-
toAmount: quoteResponse.quote.egressAmount.toString(),
|
|
283
|
-
rate: (0, _utils2.calculateSwapRate)(request.fromAmount, quoteResponse.quote.egressAmount.toString(), fromAsset, toAsset),
|
|
284
|
-
provider: this.providerInfo,
|
|
285
|
-
aliveUntil: +Date.now() + (_utils2.SWAP_QUOTE_TIMEOUT_MAP[this.slug] || _utils2.SWAP_QUOTE_TIMEOUT_MAP.default),
|
|
286
|
-
minSwap: metadata.minSwap.value,
|
|
287
|
-
maxSwap: (_metadata$maxSwap = metadata.maxSwap) === null || _metadata$maxSwap === void 0 ? void 0 : _metadata$maxSwap.value,
|
|
288
|
-
estimatedArrivalTime: quoteResponse.quote.estimatedDurationSeconds,
|
|
289
|
-
// in seconds
|
|
290
|
-
isLowLiquidity: quoteResponse.quote.lowLiquidityWarning,
|
|
291
|
-
feeInfo: {
|
|
292
|
-
feeComponent: feeComponent,
|
|
293
|
-
defaultFeeToken,
|
|
294
|
-
feeOptions: [defaultFeeToken]
|
|
295
|
-
},
|
|
296
|
-
route: {
|
|
297
|
-
path: this.parseSwapPath(fromAsset, toAsset)
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
} catch (e) {
|
|
301
|
-
var _error$response;
|
|
302
|
-
const error = e;
|
|
303
|
-
const errorObj = error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data;
|
|
304
|
-
if (errorObj && errorObj.error && errorObj.error.includes(CHAINFLIP_QUOTE_ERROR.InsufficientLiquidity)) {
|
|
305
|
-
// todo: Chainflip will improve this
|
|
306
|
-
return new _SwapError.SwapError(_swap3.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
|
|
307
|
-
}
|
|
308
|
-
if (errorObj && errorObj.message && errorObj.message.includes(CHAINFLIP_QUOTE_ERROR.InsufficientLiquidity)) {
|
|
309
|
-
return new _SwapError.SwapError(_swap3.SwapErrorType.NOT_ENOUGH_LIQUIDITY);
|
|
310
|
-
}
|
|
311
|
-
return new _SwapError.SwapError(_swap3.SwapErrorType.ERROR_FETCHING_QUOTE);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
65
|
async validateSwapProcess(params) {
|
|
315
66
|
const amount = params.selectedQuote.fromAmount;
|
|
316
67
|
const bnAmount = new _bignumber.default(amount);
|
|
@@ -349,48 +100,49 @@ class ChainflipSwapHandler {
|
|
|
349
100
|
const fromAsset = this.chainService.getAssetBySlug(pair.from);
|
|
350
101
|
const toAsset = this.chainService.getAssetBySlug(pair.to);
|
|
351
102
|
const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
103
|
+
const toChainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
352
104
|
const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
|
|
353
|
-
const receiver = recipient !== null && recipient !== void 0 ? recipient : address;
|
|
354
|
-
const srcChainId = this.chainMapping[fromAsset.originChain];
|
|
355
|
-
const destChainId = this.chainMapping[toAsset.originChain];
|
|
105
|
+
const receiver = (0, _utils3._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
|
|
356
106
|
const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
|
|
357
107
|
const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
|
|
358
108
|
const minReceive = new _bignumber.default(quote.rate).times(1 - slippage).toString();
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
109
|
+
const depositParams = {
|
|
110
|
+
destinationAddress: receiver,
|
|
111
|
+
destinationAsset: toAssetId,
|
|
112
|
+
minimumPrice: minReceive,
|
|
113
|
+
// minimum accepted price for swaps through the channel
|
|
114
|
+
refundAddress: address,
|
|
115
|
+
// address to which assets are refunded
|
|
116
|
+
retryDurationInBlocks: '100',
|
|
117
|
+
// 100 blocks * 6 seconds = 10 minutes before deposits are refunded
|
|
118
|
+
sourceAsset: fromAssetId
|
|
119
|
+
};
|
|
120
|
+
const url = `${this.baseUrl}&${new URLSearchParams(depositParams).toString()}`;
|
|
121
|
+
const response = await fetch(url, {
|
|
122
|
+
method: 'GET'
|
|
373
123
|
});
|
|
374
|
-
|
|
124
|
+
const data = await response.json();
|
|
125
|
+
const depositChannelId = `${data.issuedBlock}-${data.network}-${data.channelId}`;
|
|
126
|
+
const depositAddress = data.address;
|
|
375
127
|
const txData = {
|
|
376
128
|
address,
|
|
377
129
|
provider: this.providerInfo,
|
|
378
130
|
quote: params.quote,
|
|
379
131
|
slippage: params.slippage,
|
|
380
132
|
recipient,
|
|
381
|
-
depositChannelId:
|
|
382
|
-
depositAddress:
|
|
133
|
+
depositChannelId: depositChannelId,
|
|
134
|
+
depositAddress: depositAddress,
|
|
383
135
|
process: params.process
|
|
384
136
|
};
|
|
385
137
|
let extrinsic;
|
|
386
138
|
if (chainType === _KoniTypes.ChainType.SUBSTRATE) {
|
|
387
139
|
const chainApi = this.chainService.getSubstrateApi(chainInfo.slug);
|
|
388
140
|
const substrateApi = await chainApi.isReady;
|
|
389
|
-
const [submittableExtrinsic] = await (0, _token.
|
|
141
|
+
const [submittableExtrinsic] = await (0, _token.createSubstrateExtrinsic)({
|
|
390
142
|
from: address,
|
|
391
143
|
networkKey: chainInfo.slug,
|
|
392
144
|
substrateApi,
|
|
393
|
-
to:
|
|
145
|
+
to: depositAddress,
|
|
394
146
|
tokenInfo: fromAsset,
|
|
395
147
|
transferAll: false,
|
|
396
148
|
// always false, because we do not allow swapping all the balance
|
|
@@ -405,7 +157,7 @@ class ChainflipSwapHandler {
|
|
|
405
157
|
chain: chainInfo.slug,
|
|
406
158
|
evmApi: this.chainService.getEvmApi(chainInfo.slug),
|
|
407
159
|
from: address,
|
|
408
|
-
to:
|
|
160
|
+
to: depositAddress,
|
|
409
161
|
value: quote.fromAmount,
|
|
410
162
|
feeInfo,
|
|
411
163
|
transferAll: false
|
|
@@ -417,7 +169,7 @@ class ChainflipSwapHandler {
|
|
|
417
169
|
chain: chainInfo.slug,
|
|
418
170
|
evmApi: this.chainService.getEvmApi(chainInfo.slug),
|
|
419
171
|
from: address,
|
|
420
|
-
to:
|
|
172
|
+
to: depositAddress,
|
|
421
173
|
value: quote.fromAmount,
|
|
422
174
|
feeInfo,
|
|
423
175
|
transferAll: false
|
|
@@ -444,7 +196,7 @@ class ChainflipSwapHandler {
|
|
|
444
196
|
switch (type) {
|
|
445
197
|
case _serviceBase.CommonStepType.DEFAULT:
|
|
446
198
|
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
|
|
447
|
-
case
|
|
199
|
+
case _swap.SwapStepType.SWAP:
|
|
448
200
|
return this.handleSubmitStep(params);
|
|
449
201
|
default:
|
|
450
202
|
return this.handleSubmitStep(params);
|
|
@@ -454,7 +206,7 @@ class ChainflipSwapHandler {
|
|
|
454
206
|
if (params.selectedQuote) {
|
|
455
207
|
const submitStep = {
|
|
456
208
|
name: 'Swap',
|
|
457
|
-
type:
|
|
209
|
+
type: _swap.SwapStepType.SWAP
|
|
458
210
|
};
|
|
459
211
|
return Promise.resolve([submitStep, params.selectedQuote.feeInfo]);
|
|
460
212
|
}
|