@subwallet/extension-base 1.3.35-0 → 1.3.36-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 +8 -0
- package/cjs/koni/background/handlers/Extension.js +21 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/request-service/handler/EvmRequestHandler.js +4 -1
- package/cjs/services/swap-service/handler/kyber-handler.js +355 -0
- package/cjs/services/swap-service/handler/uniswap-handler.js +209 -40
- package/cjs/services/swap-service/index.js +28 -2
- package/cjs/services/swap-service/utils.js +4 -1
- package/cjs/services/transaction-service/index.js +252 -28
- package/cjs/types/swap/index.js +2 -1
- package/koni/background/handlers/Extension.js +21 -0
- package/package.json +11 -6
- package/packageInfo.js +1 -1
- package/services/event-service/types.d.ts +6 -6
- package/services/request-service/handler/EvmRequestHandler.js +4 -1
- package/services/swap-service/handler/kyber-handler.d.ts +28 -0
- package/services/swap-service/handler/kyber-handler.js +346 -0
- package/services/swap-service/handler/uniswap-handler.d.ts +48 -0
- package/services/swap-service/handler/uniswap-handler.js +209 -40
- package/services/swap-service/index.js +28 -2
- package/services/swap-service/utils.js +4 -1
- package/services/transaction-service/helpers/index.d.ts +5 -5
- package/services/transaction-service/index.d.ts +10 -5
- package/services/transaction-service/index.js +234 -12
- package/services/transaction-service/types.d.ts +23 -10
- package/types/swap/index.d.ts +4 -1
- package/types/swap/index.js +2 -1
|
@@ -207,6 +207,22 @@ class TransactionService {
|
|
|
207
207
|
extrinsicHash: transactionId
|
|
208
208
|
};
|
|
209
209
|
}
|
|
210
|
+
fillDutchTransactionDefaultInfo(transaction) {
|
|
211
|
+
const isInternal = !transaction.url;
|
|
212
|
+
const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal, (0, _helpers2.isWalletConnectRequest)(transaction.id));
|
|
213
|
+
return {
|
|
214
|
+
...transaction,
|
|
215
|
+
createdAt: new Date().getTime(),
|
|
216
|
+
updatedAt: new Date().getTime(),
|
|
217
|
+
errors: transaction.errors || [],
|
|
218
|
+
warnings: transaction.warnings || [],
|
|
219
|
+
url: transaction.url || _constants2.EXTENSION_REQUEST_URL,
|
|
220
|
+
status: _KoniTypes.ExtrinsicStatus.QUEUED,
|
|
221
|
+
isInternal,
|
|
222
|
+
id: transactionId,
|
|
223
|
+
extrinsicHash: transactionId
|
|
224
|
+
};
|
|
225
|
+
}
|
|
210
226
|
async addTransaction(inputTransaction) {
|
|
211
227
|
const transactions = this.transactions;
|
|
212
228
|
// Fill transaction default info
|
|
@@ -219,6 +235,15 @@ class TransactionService {
|
|
|
219
235
|
});
|
|
220
236
|
return await this.sendTransaction(transaction);
|
|
221
237
|
}
|
|
238
|
+
addDutchTransaction(inputTransaction) {
|
|
239
|
+
const transactions = this.transactions;
|
|
240
|
+
const transaction = this.fillDutchTransactionDefaultInfo(inputTransaction);
|
|
241
|
+
transactions[transaction.id] = transaction;
|
|
242
|
+
this.transactionSubject.next({
|
|
243
|
+
...transactions
|
|
244
|
+
});
|
|
245
|
+
return this.sendDutchTransaction(transaction);
|
|
246
|
+
}
|
|
222
247
|
generateBeforeHandleResponseErrors(errors) {
|
|
223
248
|
return {
|
|
224
249
|
errors,
|
|
@@ -334,6 +359,62 @@ class TransactionService {
|
|
|
334
359
|
'eventsHandler' in validatedTransaction && delete validatedTransaction.eventsHandler;
|
|
335
360
|
return validatedTransaction;
|
|
336
361
|
}
|
|
362
|
+
async handleDutchTransaction(transaction) {
|
|
363
|
+
var _transaction$step2;
|
|
364
|
+
const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, true);
|
|
365
|
+
const validatedTransaction = {
|
|
366
|
+
...transaction,
|
|
367
|
+
id: transactionId,
|
|
368
|
+
extrinsicHash: '',
|
|
369
|
+
status: undefined,
|
|
370
|
+
errors: transaction.errors || [],
|
|
371
|
+
warnings: transaction.warnings || [],
|
|
372
|
+
processId: (_transaction$step2 = transaction.step) === null || _transaction$step2 === void 0 ? void 0 : _transaction$step2.processId
|
|
373
|
+
};
|
|
374
|
+
const txInput = {
|
|
375
|
+
...transaction,
|
|
376
|
+
isInternal: true,
|
|
377
|
+
status: _KoniTypes.ExtrinsicStatus.QUEUED,
|
|
378
|
+
id: transactionId,
|
|
379
|
+
extrinsicHash: transactionId,
|
|
380
|
+
createdAt: new Date().getTime(),
|
|
381
|
+
updatedAt: new Date().getTime()
|
|
382
|
+
};
|
|
383
|
+
const emitter = this.addDutchTransaction(txInput);
|
|
384
|
+
await new Promise(resolve => {
|
|
385
|
+
if (transaction.resolveOnDone) {
|
|
386
|
+
emitter.on('success', data => {
|
|
387
|
+
validatedTransaction.id = data.id;
|
|
388
|
+
validatedTransaction.extrinsicHash = data.extrinsicHash;
|
|
389
|
+
resolve();
|
|
390
|
+
});
|
|
391
|
+
} else {
|
|
392
|
+
emitter.on('signed', data => {
|
|
393
|
+
validatedTransaction.id = data.id;
|
|
394
|
+
validatedTransaction.extrinsicHash = data.extrinsicHash;
|
|
395
|
+
resolve();
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
emitter.on('error', data => {
|
|
399
|
+
if (data.errors.length > 0) {
|
|
400
|
+
validatedTransaction.errors.push(...data.errors);
|
|
401
|
+
resolve();
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
emitter.on('timeout', data => {
|
|
405
|
+
if (transaction.errorOnTimeOut && data.errors.length > 0) {
|
|
406
|
+
validatedTransaction.errors.push(...data.errors);
|
|
407
|
+
resolve();
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
// @ts-ignore
|
|
413
|
+
'transaction' in validatedTransaction && delete validatedTransaction.transaction;
|
|
414
|
+
'additionalValidator' in validatedTransaction && delete validatedTransaction.additionalValidator;
|
|
415
|
+
'eventsHandler' in validatedTransaction && delete validatedTransaction.eventsHandler;
|
|
416
|
+
return validatedTransaction;
|
|
417
|
+
}
|
|
337
418
|
async sendTransaction(transaction) {
|
|
338
419
|
// Send Transaction
|
|
339
420
|
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : this.signAndSendTonTransaction(transaction));
|
|
@@ -381,10 +462,7 @@ class TransactionService {
|
|
|
381
462
|
if (step) {
|
|
382
463
|
const rejectError = data.errors.find(error => {
|
|
383
464
|
// TODO: REFACTOR ERROR CODE
|
|
384
|
-
|
|
385
|
-
return true;
|
|
386
|
-
}
|
|
387
|
-
return false;
|
|
465
|
+
return [_types.BasicTxErrorType.UNABLE_TO_SIGN, _types.BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType);
|
|
388
466
|
});
|
|
389
467
|
|
|
390
468
|
/**
|
|
@@ -457,10 +535,7 @@ class TransactionService {
|
|
|
457
535
|
if (step) {
|
|
458
536
|
const rejectError = data.errors.find(error => {
|
|
459
537
|
// TODO: REFACTOR ERROR CODE
|
|
460
|
-
|
|
461
|
-
return true;
|
|
462
|
-
}
|
|
463
|
-
return false;
|
|
538
|
+
return [_types.BasicTxErrorType.UNABLE_TO_SIGN, _types.BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType);
|
|
464
539
|
});
|
|
465
540
|
|
|
466
541
|
/**
|
|
@@ -482,6 +557,83 @@ class TransactionService {
|
|
|
482
557
|
eventsHandler === null || eventsHandler === void 0 ? void 0 : eventsHandler(emitter);
|
|
483
558
|
return emitter;
|
|
484
559
|
}
|
|
560
|
+
sendDutchTransaction(transaction) {
|
|
561
|
+
// Send Transaction
|
|
562
|
+
const emitter = this.signAndSendEvmDutchTransaction(transaction);
|
|
563
|
+
const {
|
|
564
|
+
eventsHandler,
|
|
565
|
+
step
|
|
566
|
+
} = transaction;
|
|
567
|
+
emitter.on('send', data => {
|
|
568
|
+
this.onSend(data);
|
|
569
|
+
if (step) {
|
|
570
|
+
this.updateProcessStepStatus(step, {
|
|
571
|
+
transactionId: transaction.id,
|
|
572
|
+
status: _types.StepStatus.SUBMITTING,
|
|
573
|
+
chain: transaction.chain
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
emitter.on('extrinsicHash', data => {
|
|
578
|
+
this.onHasTransactionHash(data);
|
|
579
|
+
if (step) {
|
|
580
|
+
this.updateProcessStepStatus(step, {
|
|
581
|
+
extrinsicHash: data.extrinsicHash,
|
|
582
|
+
status: _types.StepStatus.PROCESSING
|
|
583
|
+
});
|
|
584
|
+
}
|
|
585
|
+
});
|
|
586
|
+
emitter.on('success', data => {
|
|
587
|
+
this.handlePostProcessing(data.id);
|
|
588
|
+
this.onSuccess(data);
|
|
589
|
+
if (step) {
|
|
590
|
+
this.updateProcessStepStatus(step, {
|
|
591
|
+
status: _types.StepStatus.COMPLETE
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
});
|
|
595
|
+
emitter.on('error', data => {
|
|
596
|
+
// this.handlePostProcessing(data.id); // might enable this later
|
|
597
|
+
this.onFailed({
|
|
598
|
+
...data,
|
|
599
|
+
errors: [...data.errors, new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR)]
|
|
600
|
+
});
|
|
601
|
+
if (step) {
|
|
602
|
+
const rejectError = data.errors.find(error => {
|
|
603
|
+
// TODO: REFACTOR ERROR CODE
|
|
604
|
+
return [_types.BasicTxErrorType.UNABLE_TO_SIGN, _types.BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType);
|
|
605
|
+
});
|
|
606
|
+
|
|
607
|
+
/**
|
|
608
|
+
* Now simple check, first step have step id = 1.
|
|
609
|
+
* Improve to fetch the process from db
|
|
610
|
+
* */
|
|
611
|
+
if (rejectError && step.stepId === 1) {
|
|
612
|
+
this.deleteProcess(step);
|
|
613
|
+
} else {
|
|
614
|
+
this.updateProcessStepStatus(step, {
|
|
615
|
+
status: _types.StepStatus.FAILED
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
});
|
|
620
|
+
emitter.on('timeout', data => {
|
|
621
|
+
this.onTimeOut({
|
|
622
|
+
...data,
|
|
623
|
+
errors: [...data.errors, new _TransactionError.TransactionError(_types.BasicTxErrorType.TIMEOUT)]
|
|
624
|
+
});
|
|
625
|
+
if (step) {
|
|
626
|
+
this.updateProcessStepStatus(step, {
|
|
627
|
+
status: _types.StepStatus.TIMEOUT
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
// Todo: handle any event with transaction.eventsHandler
|
|
633
|
+
|
|
634
|
+
eventsHandler === null || eventsHandler === void 0 ? void 0 : eventsHandler(emitter);
|
|
635
|
+
return emitter;
|
|
636
|
+
}
|
|
485
637
|
removeTransaction(id) {
|
|
486
638
|
if (this.transactions[id]) {
|
|
487
639
|
delete this.transactions[id];
|
|
@@ -505,7 +657,7 @@ class TransactionService {
|
|
|
505
657
|
return (0, _utils3.getExplorerLink)(chainInfo, transaction.extrinsicHash, 'tx');
|
|
506
658
|
}
|
|
507
659
|
transactionToHistories(id, startBlock, nonce, eventLogs) {
|
|
508
|
-
var _transaction$
|
|
660
|
+
var _transaction$step3;
|
|
509
661
|
const transaction = this.getTransaction(id);
|
|
510
662
|
const extrinsicType = transaction.extrinsicType;
|
|
511
663
|
const chainInfo = this.state.chainService.getChainInfoByKey(transaction.chain);
|
|
@@ -530,7 +682,7 @@ class TransactionService {
|
|
|
530
682
|
// Will be added in next step
|
|
531
683
|
nonce: nonce !== null && nonce !== void 0 ? nonce : 0,
|
|
532
684
|
startBlock: startBlock || 0,
|
|
533
|
-
processId: (_transaction$
|
|
685
|
+
processId: (_transaction$step3 = transaction.step) === null || _transaction$step3 === void 0 ? void 0 : _transaction$step3.processId
|
|
534
686
|
};
|
|
535
687
|
const nativeAsset = (0, _utils2._getChainNativeTokenBasicInfo)(chainInfo);
|
|
536
688
|
const baseNativeAmount = {
|
|
@@ -1369,7 +1521,79 @@ class TransactionService {
|
|
|
1369
1521
|
});
|
|
1370
1522
|
return emitter;
|
|
1371
1523
|
}
|
|
1372
|
-
|
|
1524
|
+
signAndSendEvmDutchTransaction(_ref12) {
|
|
1525
|
+
let {
|
|
1526
|
+
address,
|
|
1527
|
+
id,
|
|
1528
|
+
isPassConfirmation,
|
|
1529
|
+
step,
|
|
1530
|
+
transaction,
|
|
1531
|
+
url
|
|
1532
|
+
} = _ref12;
|
|
1533
|
+
const emitter = new _eventemitter.default();
|
|
1534
|
+
const eventData = {
|
|
1535
|
+
id,
|
|
1536
|
+
errors: [],
|
|
1537
|
+
warnings: [],
|
|
1538
|
+
extrinsicHash: id,
|
|
1539
|
+
processId: step === null || step === void 0 ? void 0 : step.processId
|
|
1540
|
+
};
|
|
1541
|
+
|
|
1542
|
+
// todo: review this object
|
|
1543
|
+
const evmSignaturePayload = {
|
|
1544
|
+
id: id,
|
|
1545
|
+
type: 'eth_signTypedData_v4',
|
|
1546
|
+
payload: transaction,
|
|
1547
|
+
address: address,
|
|
1548
|
+
hashPayload: '',
|
|
1549
|
+
canSign: true,
|
|
1550
|
+
processId: step === null || step === void 0 ? void 0 : step.processId
|
|
1551
|
+
};
|
|
1552
|
+
this.state.requestService.addConfirmation(id, url || _constants2.EXTENSION_REQUEST_URL, 'submitApiRequest', evmSignaturePayload, {
|
|
1553
|
+
isPassConfirmation
|
|
1554
|
+
}).then(_ref13 => {
|
|
1555
|
+
let {
|
|
1556
|
+
isApproved,
|
|
1557
|
+
payload: signature
|
|
1558
|
+
} = _ref13;
|
|
1559
|
+
if (isApproved) {
|
|
1560
|
+
emitter.emit('signed', eventData);
|
|
1561
|
+
emitter.emit('send', eventData);
|
|
1562
|
+
transaction.submitSwapOrder().then(isSendSuccess => {
|
|
1563
|
+
if (!isSendSuccess) {
|
|
1564
|
+
throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.UNAUTHORIZED, (0, _i18next.t)('Failed to sign'));
|
|
1565
|
+
}
|
|
1566
|
+
this.handleTransactionTimeout(emitter, eventData);
|
|
1567
|
+
transaction.cronCheckTxSuccess().then(order => {
|
|
1568
|
+
if (!order) {
|
|
1569
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED));
|
|
1570
|
+
emitter.emit('error', eventData);
|
|
1571
|
+
} else {
|
|
1572
|
+
eventData.extrinsicHash = order.txHash;
|
|
1573
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1574
|
+
emitter.emit('success', eventData);
|
|
1575
|
+
}
|
|
1576
|
+
}).catch(e => {
|
|
1577
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED, (0, _i18next.t)(e.message)));
|
|
1578
|
+
emitter.emit('error', eventData);
|
|
1579
|
+
});
|
|
1580
|
+
}).catch(e => {
|
|
1581
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SEND, (0, _i18next.t)(e.message)));
|
|
1582
|
+
emitter.emit('error', eventData);
|
|
1583
|
+
});
|
|
1584
|
+
} else {
|
|
1585
|
+
this.removeTransaction(id);
|
|
1586
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
1587
|
+
emitter.emit('error', eventData);
|
|
1588
|
+
}
|
|
1589
|
+
}).catch(e => {
|
|
1590
|
+
this.removeTransaction(id);
|
|
1591
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SIGN, (0, _i18next.t)(e.message)));
|
|
1592
|
+
emitter.emit('error', eventData);
|
|
1593
|
+
});
|
|
1594
|
+
return emitter;
|
|
1595
|
+
}
|
|
1596
|
+
signAndSendSubstrateTransaction(_ref14) {
|
|
1373
1597
|
var _this$state$chainServ;
|
|
1374
1598
|
let {
|
|
1375
1599
|
address,
|
|
@@ -1381,7 +1605,7 @@ class TransactionService {
|
|
|
1381
1605
|
tokenPayFeeSlug,
|
|
1382
1606
|
transaction,
|
|
1383
1607
|
url
|
|
1384
|
-
} =
|
|
1608
|
+
} = _ref14;
|
|
1385
1609
|
const tip = (feeCustom === null || feeCustom === void 0 ? void 0 : feeCustom.tip) || '0';
|
|
1386
1610
|
const feeAssetId = tokenPayFeeSlug && !(0, _utils2._isNativeTokenBySlug)(tokenPayFeeSlug) && _constants._SUPPORT_TOKEN_PAY_FEE_GROUP.assetHub.includes(chain) ? (_this$state$chainServ = this.state.chainService.getAssetBySlug(tokenPayFeeSlug).metadata) === null || _this$state$chainServ === void 0 ? void 0 : _this$state$chainServ.multilocation : undefined;
|
|
1387
1611
|
const emitter = new _eventemitter.default();
|
|
@@ -1470,20 +1694,20 @@ class TransactionService {
|
|
|
1470
1694
|
if (!eventData.extrinsicHash) {
|
|
1471
1695
|
eventData.extrinsicHash = txState.txHash.toHex();
|
|
1472
1696
|
}
|
|
1473
|
-
txState.events.filter(
|
|
1697
|
+
txState.events.filter(_ref15 => {
|
|
1474
1698
|
let {
|
|
1475
1699
|
event: {
|
|
1476
1700
|
section
|
|
1477
1701
|
}
|
|
1478
|
-
} =
|
|
1702
|
+
} = _ref15;
|
|
1479
1703
|
return section === 'system';
|
|
1480
|
-
}).forEach(
|
|
1704
|
+
}).forEach(_ref16 => {
|
|
1481
1705
|
let {
|
|
1482
1706
|
event: {
|
|
1483
1707
|
data: [error],
|
|
1484
1708
|
method
|
|
1485
1709
|
}
|
|
1486
|
-
} =
|
|
1710
|
+
} = _ref16;
|
|
1487
1711
|
if (method === 'ExtrinsicFailed') {
|
|
1488
1712
|
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.SEND_TRANSACTION_FAILED, error.toString()));
|
|
1489
1713
|
emitter.emit('error', eventData);
|
|
@@ -1506,7 +1730,7 @@ class TransactionService {
|
|
|
1506
1730
|
});
|
|
1507
1731
|
return emitter;
|
|
1508
1732
|
}
|
|
1509
|
-
signAndSendTonTransaction(
|
|
1733
|
+
signAndSendTonTransaction(_ref17) {
|
|
1510
1734
|
let {
|
|
1511
1735
|
address,
|
|
1512
1736
|
chain,
|
|
@@ -1515,7 +1739,7 @@ class TransactionService {
|
|
|
1515
1739
|
step,
|
|
1516
1740
|
transaction,
|
|
1517
1741
|
url
|
|
1518
|
-
} =
|
|
1742
|
+
} = _ref17;
|
|
1519
1743
|
const walletContract = _uiKeyring.default.getPair(address).ton.currentContract;
|
|
1520
1744
|
const emitter = new _eventemitter.default();
|
|
1521
1745
|
const eventData = {
|
|
@@ -1532,11 +1756,11 @@ class TransactionService {
|
|
|
1532
1756
|
...payload,
|
|
1533
1757
|
messagePayload: (0, _utils.cellToBase64Str)(message),
|
|
1534
1758
|
messages: []
|
|
1535
|
-
}, {}).then(
|
|
1759
|
+
}, {}).then(_ref18 => {
|
|
1536
1760
|
let {
|
|
1537
1761
|
isApproved,
|
|
1538
1762
|
payload
|
|
1539
|
-
} =
|
|
1763
|
+
} = _ref18;
|
|
1540
1764
|
if (!isApproved) {
|
|
1541
1765
|
this.removeTransaction(id);
|
|
1542
1766
|
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
@@ -1571,8 +1795,8 @@ class TransactionService {
|
|
|
1571
1795
|
if (!externalMsgHash) {
|
|
1572
1796
|
return;
|
|
1573
1797
|
}
|
|
1574
|
-
tonApi.getStatusByExtMsgHash(externalMsgHash, extrinsicType).then(
|
|
1575
|
-
let [status, hex] =
|
|
1798
|
+
tonApi.getStatusByExtMsgHash(externalMsgHash, extrinsicType).then(_ref19 => {
|
|
1799
|
+
let [status, hex] = _ref19;
|
|
1576
1800
|
if (status && hex) {
|
|
1577
1801
|
eventData.extrinsicHash = hex;
|
|
1578
1802
|
emitter.emit('extrinsicHash', eventData);
|
|
@@ -1601,13 +1825,13 @@ class TransactionService {
|
|
|
1601
1825
|
});
|
|
1602
1826
|
return emitter;
|
|
1603
1827
|
}
|
|
1604
|
-
signAndSendCardanoTransaction(
|
|
1828
|
+
signAndSendCardanoTransaction(_ref20) {
|
|
1605
1829
|
let {
|
|
1606
1830
|
chain,
|
|
1607
1831
|
id,
|
|
1608
1832
|
transaction,
|
|
1609
1833
|
url
|
|
1610
|
-
} =
|
|
1834
|
+
} = _ref20;
|
|
1611
1835
|
const emitter = new _eventemitter.default();
|
|
1612
1836
|
const eventData = {
|
|
1613
1837
|
id,
|
|
@@ -1617,11 +1841,11 @@ class TransactionService {
|
|
|
1617
1841
|
};
|
|
1618
1842
|
const transactionConfig = transaction;
|
|
1619
1843
|
const cardanoApi = this.state.chainService.getCardanoApi(chain);
|
|
1620
|
-
this.state.requestService.addConfirmationCardano(id, url || _constants2.EXTENSION_REQUEST_URL, 'cardanoSendTransactionRequest', transactionConfig, {}).then(
|
|
1844
|
+
this.state.requestService.addConfirmationCardano(id, url || _constants2.EXTENSION_REQUEST_URL, 'cardanoSendTransactionRequest', transactionConfig, {}).then(_ref21 => {
|
|
1621
1845
|
let {
|
|
1622
1846
|
isApproved,
|
|
1623
1847
|
payload
|
|
1624
|
-
} =
|
|
1848
|
+
} = _ref21;
|
|
1625
1849
|
if (!isApproved) {
|
|
1626
1850
|
this.removeTransaction(id);
|
|
1627
1851
|
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
@@ -1812,9 +2036,9 @@ class TransactionService {
|
|
|
1812
2036
|
}
|
|
1813
2037
|
}
|
|
1814
2038
|
async createProcessNotification(transactionId) {
|
|
1815
|
-
var _transaction$
|
|
2039
|
+
var _transaction$step4;
|
|
1816
2040
|
const transaction = this.getTransaction(transactionId);
|
|
1817
|
-
if (transaction && (_transaction$
|
|
2041
|
+
if (transaction && (_transaction$step4 = transaction.step) !== null && _transaction$step4 !== void 0 && _transaction$step4.processId) {
|
|
1818
2042
|
const process = this.aliveProcessMap.get(transaction.step.processId);
|
|
1819
2043
|
if (process) {
|
|
1820
2044
|
await this.state.inappNotificationService.createProcessNotification(process);
|
package/cjs/types/swap/index.js
CHANGED
|
@@ -42,13 +42,14 @@ exports.SwapProviderId = SwapProviderId;
|
|
|
42
42
|
SwapProviderId["WESTEND_ASSET_HUB"] = "WESTEND_ASSET_HUB";
|
|
43
43
|
SwapProviderId["SIMPLE_SWAP"] = "SIMPLE_SWAP";
|
|
44
44
|
SwapProviderId["UNISWAP"] = "UNISWAP";
|
|
45
|
+
SwapProviderId["KYBER"] = "KYBER";
|
|
45
46
|
})(SwapProviderId || (exports.SwapProviderId = SwapProviderId = {}));
|
|
46
47
|
const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET,
|
|
47
48
|
// SwapProviderId.HYDRADX_TESTNET,
|
|
48
49
|
SwapProviderId.POLKADOT_ASSET_HUB, SwapProviderId.KUSAMA_ASSET_HUB,
|
|
49
50
|
// SwapProviderId.ROCOCO_ASSET_HUB,
|
|
50
51
|
// SwapProviderId.WESTEND_ASSET_HUB,
|
|
51
|
-
SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP];
|
|
52
|
+
SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP, SwapProviderId.KYBER];
|
|
52
53
|
exports._SUPPORTED_SWAP_PROVIDERS = _SUPPORTED_SWAP_PROVIDERS;
|
|
53
54
|
// process handling
|
|
54
55
|
let SwapFeeType;
|
|
@@ -2720,6 +2720,7 @@ export default class KoniExtension {
|
|
|
2720
2720
|
getTransaction({
|
|
2721
2721
|
id
|
|
2722
2722
|
}) {
|
|
2723
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
2723
2724
|
const {
|
|
2724
2725
|
transaction,
|
|
2725
2726
|
...transactionResult
|
|
@@ -2730,6 +2731,7 @@ export default class KoniExtension {
|
|
|
2730
2731
|
const cb = createSubscription(id, port);
|
|
2731
2732
|
function convertRs(rs, processMap) {
|
|
2732
2733
|
return Object.fromEntries(Object.entries(rs).map(([key, value]) => {
|
|
2734
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
2733
2735
|
const {
|
|
2734
2736
|
additionalValidator,
|
|
2735
2737
|
eventsHandler,
|
|
@@ -3767,6 +3769,7 @@ export default class KoniExtension {
|
|
|
3767
3769
|
chainType,
|
|
3768
3770
|
extrinsic,
|
|
3769
3771
|
extrinsicType,
|
|
3772
|
+
isDutch,
|
|
3770
3773
|
isPermit,
|
|
3771
3774
|
transferNativeAmount,
|
|
3772
3775
|
txChain,
|
|
@@ -3823,6 +3826,24 @@ export default class KoniExtension {
|
|
|
3823
3826
|
step
|
|
3824
3827
|
});
|
|
3825
3828
|
}
|
|
3829
|
+
if (isDutch) {
|
|
3830
|
+
return await this.#koniState.transactionService.handleDutchTransaction({
|
|
3831
|
+
address,
|
|
3832
|
+
chain: txChain,
|
|
3833
|
+
transaction: extrinsic,
|
|
3834
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
3835
|
+
data: txData,
|
|
3836
|
+
extrinsicType,
|
|
3837
|
+
// change this depends on step
|
|
3838
|
+
chainType,
|
|
3839
|
+
resolveOnDone: !isLastStep,
|
|
3840
|
+
transferNativeAmount,
|
|
3841
|
+
...this.createPassConfirmationParams(isPassConfirmation),
|
|
3842
|
+
errorOnTimeOut,
|
|
3843
|
+
eventsHandler,
|
|
3844
|
+
step
|
|
3845
|
+
});
|
|
3846
|
+
}
|
|
3826
3847
|
return await this.#koniState.transactionService.handleTransaction({
|
|
3827
3848
|
address,
|
|
3828
3849
|
chain: txChain,
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.3.
|
|
20
|
+
"version": "1.3.36-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -1911,6 +1911,11 @@
|
|
|
1911
1911
|
"require": "./cjs/services/swap-service/handler/hydradx-handler.js",
|
|
1912
1912
|
"default": "./services/swap-service/handler/hydradx-handler.js"
|
|
1913
1913
|
},
|
|
1914
|
+
"./services/swap-service/handler/kyber-handler": {
|
|
1915
|
+
"types": "./services/swap-service/handler/kyber-handler.d.ts",
|
|
1916
|
+
"require": "./cjs/services/swap-service/handler/kyber-handler.js",
|
|
1917
|
+
"default": "./services/swap-service/handler/kyber-handler.js"
|
|
1918
|
+
},
|
|
1914
1919
|
"./services/swap-service/handler/simpleswap-handler": {
|
|
1915
1920
|
"types": "./services/swap-service/handler/simpleswap-handler.d.ts",
|
|
1916
1921
|
"require": "./cjs/services/swap-service/handler/simpleswap-handler.js",
|
|
@@ -2705,12 +2710,12 @@
|
|
|
2705
2710
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
2706
2711
|
"@substrate/connect": "^0.8.9",
|
|
2707
2712
|
"@subwallet/chain-list": "0.2.104",
|
|
2708
|
-
"@subwallet/extension-base": "^1.3.
|
|
2709
|
-
"@subwallet/extension-chains": "^1.3.
|
|
2710
|
-
"@subwallet/extension-dapp": "^1.3.
|
|
2711
|
-
"@subwallet/extension-inject": "^1.3.
|
|
2713
|
+
"@subwallet/extension-base": "^1.3.36-0",
|
|
2714
|
+
"@subwallet/extension-chains": "^1.3.36-0",
|
|
2715
|
+
"@subwallet/extension-dapp": "^1.3.36-0",
|
|
2716
|
+
"@subwallet/extension-inject": "^1.3.36-0",
|
|
2712
2717
|
"@subwallet/keyring": "^0.1.11",
|
|
2713
|
-
"@subwallet/subwallet-api-sdk": "^1.3.
|
|
2718
|
+
"@subwallet/subwallet-api-sdk": "^1.3.36-0",
|
|
2714
2719
|
"@subwallet/ui-keyring": "^0.1.11",
|
|
2715
2720
|
"@ton/core": "^0.56.3",
|
|
2716
2721
|
"@ton/crypto": "^3.2.0",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.3.
|
|
10
|
+
version: '1.3.36-0'
|
|
11
11
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SWTransactionBase } from '@subwallet/extension-base/services/transaction-service/types';
|
|
2
2
|
import { CurrentAccountInfo } from '@subwallet/extension-base/types';
|
|
3
3
|
export interface EventRegistry {
|
|
4
4
|
'general.sleep': [boolean];
|
|
@@ -27,13 +27,13 @@ export interface EventRegistry {
|
|
|
27
27
|
'asset.ready': [boolean];
|
|
28
28
|
'asset.online.ready': [boolean];
|
|
29
29
|
'asset.updateState': [string];
|
|
30
|
-
'transaction.done': [
|
|
31
|
-
'transaction.failed': [
|
|
32
|
-
'transaction.timeout': [
|
|
30
|
+
'transaction.done': [SWTransactionBase];
|
|
31
|
+
'transaction.failed': [SWTransactionBase | undefined];
|
|
32
|
+
'transaction.timeout': [SWTransactionBase | undefined];
|
|
33
33
|
'transaction.submitStaking': [string];
|
|
34
|
-
'transaction.transferNft': [
|
|
34
|
+
'transaction.transferNft': [SWTransactionBase | undefined];
|
|
35
35
|
'mantaPay.initSync': [string | undefined];
|
|
36
|
-
'mantaPay.submitTransaction': [
|
|
36
|
+
'mantaPay.submitTransaction': [SWTransactionBase | undefined];
|
|
37
37
|
'mantaPay.enable': [string];
|
|
38
38
|
'migration.done': [boolean];
|
|
39
39
|
'campaign.ready': [boolean];
|
|
@@ -22,7 +22,8 @@ export default class EvmRequestHandler {
|
|
|
22
22
|
evmSignatureRequest: {},
|
|
23
23
|
evmSendTransactionRequest: {},
|
|
24
24
|
evmWatchTransactionRequest: {},
|
|
25
|
-
errorConnectNetwork: {}
|
|
25
|
+
errorConnectNetwork: {},
|
|
26
|
+
submitApiRequest: {}
|
|
26
27
|
});
|
|
27
28
|
confirmationsPromiseMap = {};
|
|
28
29
|
constructor(requestService) {
|
|
@@ -214,6 +215,8 @@ export default class EvmRequestHandler {
|
|
|
214
215
|
result.payload = await this.signMessage(request);
|
|
215
216
|
} else if (t === 'evmSendTransactionRequest') {
|
|
216
217
|
result.payload = await this.signTransaction(request);
|
|
218
|
+
} else if (t === 'submitApiRequest') {
|
|
219
|
+
return;
|
|
217
220
|
}
|
|
218
221
|
if (t === 'evmSignatureRequest' || t === 'evmSendTransactionRequest') {
|
|
219
222
|
const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
2
|
+
import { BaseStepDetail, CommonOptimalSwapPath, CommonStepFeeInfo, OptimalSwapPathParamsV2, SwapProviderId, SwapSubmitParams, SwapSubmitStepData, ValidateSwapProcessParams } from '@subwallet/extension-base/types';
|
|
3
|
+
import { BalanceService } from '../../balance-service';
|
|
4
|
+
import { ChainService } from '../../chain-service';
|
|
5
|
+
import FeeService from '../../fee-service/service';
|
|
6
|
+
import TransactionService from '../../transaction-service';
|
|
7
|
+
import { SwapBaseInterface } from './base-handler';
|
|
8
|
+
export interface KyberSwapQuoteMetadata {
|
|
9
|
+
priceImpact?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const KYBER_CLIENT_ID: string;
|
|
12
|
+
export declare class KyberHandler implements SwapBaseInterface {
|
|
13
|
+
private swapBaseHandler;
|
|
14
|
+
transactionService: TransactionService;
|
|
15
|
+
providerSlug: SwapProviderId;
|
|
16
|
+
constructor(chainService: ChainService, balanceService: BalanceService, transactionService: TransactionService, feeService: FeeService);
|
|
17
|
+
get chainService(): ChainService;
|
|
18
|
+
get balanceService(): BalanceService;
|
|
19
|
+
get feeService(): FeeService;
|
|
20
|
+
get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
|
|
21
|
+
generateOptimalProcessV2(params: OptimalSwapPathParamsV2): Promise<CommonOptimalSwapPath>;
|
|
22
|
+
getApprovalStep(params: OptimalSwapPathParamsV2): Promise<[BaseStepDetail, CommonStepFeeInfo] | undefined>;
|
|
23
|
+
getSubmitStep(params: OptimalSwapPathParamsV2, stepIndex: number): Promise<[BaseStepDetail, CommonStepFeeInfo] | undefined>;
|
|
24
|
+
handleSwapProcess(params: SwapSubmitParams): Promise<SwapSubmitStepData>;
|
|
25
|
+
private tokenApproveSpending;
|
|
26
|
+
handleSubmitStep(params: SwapSubmitParams): Promise<SwapSubmitStepData>;
|
|
27
|
+
validateSwapProcessV2(params: ValidateSwapProcessParams): Promise<TransactionError[]>;
|
|
28
|
+
}
|