@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
|
@@ -200,6 +200,22 @@ export default class TransactionService {
|
|
|
200
200
|
extrinsicHash: transactionId
|
|
201
201
|
};
|
|
202
202
|
}
|
|
203
|
+
fillDutchTransactionDefaultInfo(transaction) {
|
|
204
|
+
const isInternal = !transaction.url;
|
|
205
|
+
const transactionId = getTransactionId(transaction.chainType, transaction.chain, isInternal, isWalletConnectRequest(transaction.id));
|
|
206
|
+
return {
|
|
207
|
+
...transaction,
|
|
208
|
+
createdAt: new Date().getTime(),
|
|
209
|
+
updatedAt: new Date().getTime(),
|
|
210
|
+
errors: transaction.errors || [],
|
|
211
|
+
warnings: transaction.warnings || [],
|
|
212
|
+
url: transaction.url || EXTENSION_REQUEST_URL,
|
|
213
|
+
status: ExtrinsicStatus.QUEUED,
|
|
214
|
+
isInternal,
|
|
215
|
+
id: transactionId,
|
|
216
|
+
extrinsicHash: transactionId
|
|
217
|
+
};
|
|
218
|
+
}
|
|
203
219
|
async addTransaction(inputTransaction) {
|
|
204
220
|
const transactions = this.transactions;
|
|
205
221
|
// Fill transaction default info
|
|
@@ -212,6 +228,15 @@ export default class TransactionService {
|
|
|
212
228
|
});
|
|
213
229
|
return await this.sendTransaction(transaction);
|
|
214
230
|
}
|
|
231
|
+
addDutchTransaction(inputTransaction) {
|
|
232
|
+
const transactions = this.transactions;
|
|
233
|
+
const transaction = this.fillDutchTransactionDefaultInfo(inputTransaction);
|
|
234
|
+
transactions[transaction.id] = transaction;
|
|
235
|
+
this.transactionSubject.next({
|
|
236
|
+
...transactions
|
|
237
|
+
});
|
|
238
|
+
return this.sendDutchTransaction(transaction);
|
|
239
|
+
}
|
|
215
240
|
generateBeforeHandleResponseErrors(errors) {
|
|
216
241
|
return {
|
|
217
242
|
errors,
|
|
@@ -327,6 +352,62 @@ export default class TransactionService {
|
|
|
327
352
|
'eventsHandler' in validatedTransaction && delete validatedTransaction.eventsHandler;
|
|
328
353
|
return validatedTransaction;
|
|
329
354
|
}
|
|
355
|
+
async handleDutchTransaction(transaction) {
|
|
356
|
+
var _transaction$step2;
|
|
357
|
+
const transactionId = getTransactionId(transaction.chainType, transaction.chain, true);
|
|
358
|
+
const validatedTransaction = {
|
|
359
|
+
...transaction,
|
|
360
|
+
id: transactionId,
|
|
361
|
+
extrinsicHash: '',
|
|
362
|
+
status: undefined,
|
|
363
|
+
errors: transaction.errors || [],
|
|
364
|
+
warnings: transaction.warnings || [],
|
|
365
|
+
processId: (_transaction$step2 = transaction.step) === null || _transaction$step2 === void 0 ? void 0 : _transaction$step2.processId
|
|
366
|
+
};
|
|
367
|
+
const txInput = {
|
|
368
|
+
...transaction,
|
|
369
|
+
isInternal: true,
|
|
370
|
+
status: ExtrinsicStatus.QUEUED,
|
|
371
|
+
id: transactionId,
|
|
372
|
+
extrinsicHash: transactionId,
|
|
373
|
+
createdAt: new Date().getTime(),
|
|
374
|
+
updatedAt: new Date().getTime()
|
|
375
|
+
};
|
|
376
|
+
const emitter = this.addDutchTransaction(txInput);
|
|
377
|
+
await new Promise(resolve => {
|
|
378
|
+
if (transaction.resolveOnDone) {
|
|
379
|
+
emitter.on('success', data => {
|
|
380
|
+
validatedTransaction.id = data.id;
|
|
381
|
+
validatedTransaction.extrinsicHash = data.extrinsicHash;
|
|
382
|
+
resolve();
|
|
383
|
+
});
|
|
384
|
+
} else {
|
|
385
|
+
emitter.on('signed', data => {
|
|
386
|
+
validatedTransaction.id = data.id;
|
|
387
|
+
validatedTransaction.extrinsicHash = data.extrinsicHash;
|
|
388
|
+
resolve();
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
emitter.on('error', data => {
|
|
392
|
+
if (data.errors.length > 0) {
|
|
393
|
+
validatedTransaction.errors.push(...data.errors);
|
|
394
|
+
resolve();
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
emitter.on('timeout', data => {
|
|
398
|
+
if (transaction.errorOnTimeOut && data.errors.length > 0) {
|
|
399
|
+
validatedTransaction.errors.push(...data.errors);
|
|
400
|
+
resolve();
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
});
|
|
404
|
+
|
|
405
|
+
// @ts-ignore
|
|
406
|
+
'transaction' in validatedTransaction && delete validatedTransaction.transaction;
|
|
407
|
+
'additionalValidator' in validatedTransaction && delete validatedTransaction.additionalValidator;
|
|
408
|
+
'eventsHandler' in validatedTransaction && delete validatedTransaction.eventsHandler;
|
|
409
|
+
return validatedTransaction;
|
|
410
|
+
}
|
|
330
411
|
async sendTransaction(transaction) {
|
|
331
412
|
// Send Transaction
|
|
332
413
|
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : this.signAndSendTonTransaction(transaction));
|
|
@@ -374,10 +455,7 @@ export default class TransactionService {
|
|
|
374
455
|
if (step) {
|
|
375
456
|
const rejectError = data.errors.find(error => {
|
|
376
457
|
// TODO: REFACTOR ERROR CODE
|
|
377
|
-
|
|
378
|
-
return true;
|
|
379
|
-
}
|
|
380
|
-
return false;
|
|
458
|
+
return [BasicTxErrorType.UNABLE_TO_SIGN, BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType);
|
|
381
459
|
});
|
|
382
460
|
|
|
383
461
|
/**
|
|
@@ -450,10 +528,73 @@ export default class TransactionService {
|
|
|
450
528
|
if (step) {
|
|
451
529
|
const rejectError = data.errors.find(error => {
|
|
452
530
|
// TODO: REFACTOR ERROR CODE
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
531
|
+
return [BasicTxErrorType.UNABLE_TO_SIGN, BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType);
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
/**
|
|
535
|
+
* Now simple check, first step have step id = 1.
|
|
536
|
+
* Improve to fetch the process from db
|
|
537
|
+
* */
|
|
538
|
+
if (rejectError && step.stepId === 1) {
|
|
539
|
+
this.deleteProcess(step);
|
|
540
|
+
} else {
|
|
541
|
+
this.updateProcessStepStatus(step, {
|
|
542
|
+
status: StepStatus.FAILED
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
|
|
548
|
+
// Todo: handle any event with transaction.eventsHandler
|
|
549
|
+
|
|
550
|
+
eventsHandler === null || eventsHandler === void 0 ? void 0 : eventsHandler(emitter);
|
|
551
|
+
return emitter;
|
|
552
|
+
}
|
|
553
|
+
sendDutchTransaction(transaction) {
|
|
554
|
+
// Send Transaction
|
|
555
|
+
const emitter = this.signAndSendEvmDutchTransaction(transaction);
|
|
556
|
+
const {
|
|
557
|
+
eventsHandler,
|
|
558
|
+
step
|
|
559
|
+
} = transaction;
|
|
560
|
+
emitter.on('send', data => {
|
|
561
|
+
this.onSend(data);
|
|
562
|
+
if (step) {
|
|
563
|
+
this.updateProcessStepStatus(step, {
|
|
564
|
+
transactionId: transaction.id,
|
|
565
|
+
status: StepStatus.SUBMITTING,
|
|
566
|
+
chain: transaction.chain
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
});
|
|
570
|
+
emitter.on('extrinsicHash', data => {
|
|
571
|
+
this.onHasTransactionHash(data);
|
|
572
|
+
if (step) {
|
|
573
|
+
this.updateProcessStepStatus(step, {
|
|
574
|
+
extrinsicHash: data.extrinsicHash,
|
|
575
|
+
status: StepStatus.PROCESSING
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
});
|
|
579
|
+
emitter.on('success', data => {
|
|
580
|
+
this.handlePostProcessing(data.id);
|
|
581
|
+
this.onSuccess(data);
|
|
582
|
+
if (step) {
|
|
583
|
+
this.updateProcessStepStatus(step, {
|
|
584
|
+
status: StepStatus.COMPLETE
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
emitter.on('error', data => {
|
|
589
|
+
// this.handlePostProcessing(data.id); // might enable this later
|
|
590
|
+
this.onFailed({
|
|
591
|
+
...data,
|
|
592
|
+
errors: [...data.errors, new TransactionError(BasicTxErrorType.INTERNAL_ERROR)]
|
|
593
|
+
});
|
|
594
|
+
if (step) {
|
|
595
|
+
const rejectError = data.errors.find(error => {
|
|
596
|
+
// TODO: REFACTOR ERROR CODE
|
|
597
|
+
return [BasicTxErrorType.UNABLE_TO_SIGN, BasicTxErrorType.USER_REJECT_REQUEST].includes(error.errorType);
|
|
457
598
|
});
|
|
458
599
|
|
|
459
600
|
/**
|
|
@@ -469,6 +610,17 @@ export default class TransactionService {
|
|
|
469
610
|
}
|
|
470
611
|
}
|
|
471
612
|
});
|
|
613
|
+
emitter.on('timeout', data => {
|
|
614
|
+
this.onTimeOut({
|
|
615
|
+
...data,
|
|
616
|
+
errors: [...data.errors, new TransactionError(BasicTxErrorType.TIMEOUT)]
|
|
617
|
+
});
|
|
618
|
+
if (step) {
|
|
619
|
+
this.updateProcessStepStatus(step, {
|
|
620
|
+
status: StepStatus.TIMEOUT
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
});
|
|
472
624
|
|
|
473
625
|
// Todo: handle any event with transaction.eventsHandler
|
|
474
626
|
|
|
@@ -498,7 +650,7 @@ export default class TransactionService {
|
|
|
498
650
|
return getExplorerLink(chainInfo, transaction.extrinsicHash, 'tx');
|
|
499
651
|
}
|
|
500
652
|
transactionToHistories(id, startBlock, nonce, eventLogs) {
|
|
501
|
-
var _transaction$
|
|
653
|
+
var _transaction$step3;
|
|
502
654
|
const transaction = this.getTransaction(id);
|
|
503
655
|
const extrinsicType = transaction.extrinsicType;
|
|
504
656
|
const chainInfo = this.state.chainService.getChainInfoByKey(transaction.chain);
|
|
@@ -523,7 +675,7 @@ export default class TransactionService {
|
|
|
523
675
|
// Will be added in next step
|
|
524
676
|
nonce: nonce !== null && nonce !== void 0 ? nonce : 0,
|
|
525
677
|
startBlock: startBlock || 0,
|
|
526
|
-
processId: (_transaction$
|
|
678
|
+
processId: (_transaction$step3 = transaction.step) === null || _transaction$step3 === void 0 ? void 0 : _transaction$step3.processId
|
|
527
679
|
};
|
|
528
680
|
const nativeAsset = _getChainNativeTokenBasicInfo(chainInfo);
|
|
529
681
|
const baseNativeAmount = {
|
|
@@ -1351,6 +1503,76 @@ export default class TransactionService {
|
|
|
1351
1503
|
});
|
|
1352
1504
|
return emitter;
|
|
1353
1505
|
}
|
|
1506
|
+
signAndSendEvmDutchTransaction({
|
|
1507
|
+
address,
|
|
1508
|
+
id,
|
|
1509
|
+
isPassConfirmation,
|
|
1510
|
+
step,
|
|
1511
|
+
transaction,
|
|
1512
|
+
url
|
|
1513
|
+
}) {
|
|
1514
|
+
const emitter = new EventEmitter();
|
|
1515
|
+
const eventData = {
|
|
1516
|
+
id,
|
|
1517
|
+
errors: [],
|
|
1518
|
+
warnings: [],
|
|
1519
|
+
extrinsicHash: id,
|
|
1520
|
+
processId: step === null || step === void 0 ? void 0 : step.processId
|
|
1521
|
+
};
|
|
1522
|
+
|
|
1523
|
+
// todo: review this object
|
|
1524
|
+
const evmSignaturePayload = {
|
|
1525
|
+
id: id,
|
|
1526
|
+
type: 'eth_signTypedData_v4',
|
|
1527
|
+
payload: transaction,
|
|
1528
|
+
address: address,
|
|
1529
|
+
hashPayload: '',
|
|
1530
|
+
canSign: true,
|
|
1531
|
+
processId: step === null || step === void 0 ? void 0 : step.processId
|
|
1532
|
+
};
|
|
1533
|
+
this.state.requestService.addConfirmation(id, url || EXTENSION_REQUEST_URL, 'submitApiRequest', evmSignaturePayload, {
|
|
1534
|
+
isPassConfirmation
|
|
1535
|
+
}).then(({
|
|
1536
|
+
isApproved,
|
|
1537
|
+
payload: signature
|
|
1538
|
+
}) => {
|
|
1539
|
+
if (isApproved) {
|
|
1540
|
+
emitter.emit('signed', eventData);
|
|
1541
|
+
emitter.emit('send', eventData);
|
|
1542
|
+
transaction.submitSwapOrder().then(isSendSuccess => {
|
|
1543
|
+
if (!isSendSuccess) {
|
|
1544
|
+
throw new EvmProviderError(EvmProviderErrorType.UNAUTHORIZED, t('Failed to sign'));
|
|
1545
|
+
}
|
|
1546
|
+
this.handleTransactionTimeout(emitter, eventData);
|
|
1547
|
+
transaction.cronCheckTxSuccess().then(order => {
|
|
1548
|
+
if (!order) {
|
|
1549
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED));
|
|
1550
|
+
emitter.emit('error', eventData);
|
|
1551
|
+
} else {
|
|
1552
|
+
eventData.extrinsicHash = order.txHash;
|
|
1553
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1554
|
+
emitter.emit('success', eventData);
|
|
1555
|
+
}
|
|
1556
|
+
}).catch(e => {
|
|
1557
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED, t(e.message)));
|
|
1558
|
+
emitter.emit('error', eventData);
|
|
1559
|
+
});
|
|
1560
|
+
}).catch(e => {
|
|
1561
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.UNABLE_TO_SEND, t(e.message)));
|
|
1562
|
+
emitter.emit('error', eventData);
|
|
1563
|
+
});
|
|
1564
|
+
} else {
|
|
1565
|
+
this.removeTransaction(id);
|
|
1566
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.USER_REJECT_REQUEST));
|
|
1567
|
+
emitter.emit('error', eventData);
|
|
1568
|
+
}
|
|
1569
|
+
}).catch(e => {
|
|
1570
|
+
this.removeTransaction(id);
|
|
1571
|
+
eventData.errors.push(new TransactionError(BasicTxErrorType.UNABLE_TO_SIGN, t(e.message)));
|
|
1572
|
+
emitter.emit('error', eventData);
|
|
1573
|
+
});
|
|
1574
|
+
return emitter;
|
|
1575
|
+
}
|
|
1354
1576
|
signAndSendSubstrateTransaction({
|
|
1355
1577
|
address,
|
|
1356
1578
|
chain,
|
|
@@ -1784,9 +2006,9 @@ export default class TransactionService {
|
|
|
1784
2006
|
}
|
|
1785
2007
|
}
|
|
1786
2008
|
async createProcessNotification(transactionId) {
|
|
1787
|
-
var _transaction$
|
|
2009
|
+
var _transaction$step4;
|
|
1788
2010
|
const transaction = this.getTransaction(transactionId);
|
|
1789
|
-
if (transaction && (_transaction$
|
|
2011
|
+
if (transaction && (_transaction$step4 = transaction.step) !== null && _transaction$step4 !== void 0 && _transaction$step4.processId) {
|
|
1790
2012
|
const process = this.aliveProcessMap.get(transaction.step.processId);
|
|
1791
2013
|
if (process) {
|
|
1792
2014
|
await this.state.inappNotificationService.createProcessNotification(process);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ChainType, ExtrinsicDataTypeMap, ExtrinsicStatus, ExtrinsicType, FeeData, ValidateTransactionResponse } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
2
|
import { SignTypedDataMessageV3V4 } from '@subwallet/extension-base/core/logic-validation';
|
|
3
3
|
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
4
|
+
import { UniswapOrderInfo } from '@subwallet/extension-base/services/swap-service/handler/uniswap-handler';
|
|
4
5
|
import { BaseRequestSign, BriefProcessStep, ProcessTransactionData, TransactionFee } from '@subwallet/extension-base/types';
|
|
5
6
|
import EventEmitter from 'eventemitter3';
|
|
6
7
|
import { TransactionConfig } from 'web3-core';
|
|
7
8
|
import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
|
|
8
9
|
import { EventRecord } from '@polkadot/types/interfaces';
|
|
9
|
-
export interface
|
|
10
|
+
export interface SWTransactionBase extends ValidateTransactionResponse, Partial<Pick<BaseRequestSign, 'ignoreWarnings'>>, TransactionFee {
|
|
10
11
|
id: string;
|
|
11
12
|
url?: string;
|
|
12
13
|
isInternal: boolean;
|
|
@@ -21,7 +22,7 @@ export interface SWTransaction extends ValidateTransactionResponse, Partial<Pick
|
|
|
21
22
|
updatedAt: number;
|
|
22
23
|
estimateFee?: FeeData;
|
|
23
24
|
xcmFeeDryRun?: string;
|
|
24
|
-
transaction:
|
|
25
|
+
transaction: any;
|
|
25
26
|
additionalValidator?: (inputTransaction: SWTransactionResponse) => Promise<void>;
|
|
26
27
|
eventsHandler?: (eventEmitter: TransactionEmitter) => void;
|
|
27
28
|
isPassConfirmation?: boolean;
|
|
@@ -29,18 +30,27 @@ export interface SWTransaction extends ValidateTransactionResponse, Partial<Pick
|
|
|
29
30
|
signAfterCreate?: (id: string) => void;
|
|
30
31
|
step?: BriefProcessStep;
|
|
31
32
|
}
|
|
32
|
-
export interface
|
|
33
|
+
export interface SWTransaction extends SWTransactionBase {
|
|
34
|
+
transaction: SubmittableExtrinsic | TransactionConfig | TonTransactionConfig;
|
|
35
|
+
}
|
|
36
|
+
export interface SWPermitTransaction extends SWTransactionBase {
|
|
33
37
|
transaction: SignTypedDataMessageV3V4;
|
|
34
38
|
}
|
|
35
|
-
export interface
|
|
39
|
+
export interface SWDutchTransaction extends SWTransactionBase {
|
|
40
|
+
transaction: {
|
|
41
|
+
submitSwapOrder: () => Promise<boolean>;
|
|
42
|
+
cronCheckTxSuccess: () => Promise<UniswapOrderInfo | undefined>;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface SWTransactionResult extends Omit<SWTransactionBase, 'transaction' | 'additionalValidator' | 'eventsHandler' | 'process'> {
|
|
36
46
|
process?: ProcessTransactionData;
|
|
37
47
|
}
|
|
38
|
-
declare type SwInputBase = Pick<
|
|
39
|
-
export interface SWTransactionInput extends SwInputBase, Partial<Pick<
|
|
48
|
+
declare type SwInputBase = Pick<SWTransactionBase, 'address' | 'url' | 'data' | 'extrinsicType' | 'chain' | 'chainType' | 'ignoreWarnings' | 'transferNativeAmount'> & Partial<Pick<SWTransactionBase, 'additionalValidator' | 'eventsHandler'>>;
|
|
49
|
+
export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransactionBase, 'estimateFee' | 'signAfterCreate' | 'isPassConfirmation' | 'step' | 'errorOnTimeOut' | 'xcmFeeDryRun'>>, TransactionFee {
|
|
40
50
|
id?: string;
|
|
41
|
-
transaction?:
|
|
42
|
-
warnings?:
|
|
43
|
-
errors?:
|
|
51
|
+
transaction?: SWTransactionBase['transaction'] | null;
|
|
52
|
+
warnings?: SWTransactionBase['warnings'];
|
|
53
|
+
errors?: SWTransactionBase['errors'];
|
|
44
54
|
edAsWarning?: boolean;
|
|
45
55
|
isTransferAll?: boolean;
|
|
46
56
|
isTransferLocalTokenAndPayThatTokenAsFee?: boolean;
|
|
@@ -50,7 +60,10 @@ export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransact
|
|
|
50
60
|
export interface SWPermitTransactionInput extends Omit<SWTransactionInput, 'transaction'> {
|
|
51
61
|
transaction?: SWPermitTransaction['transaction'] | null;
|
|
52
62
|
}
|
|
53
|
-
export
|
|
63
|
+
export interface SWDutchTransactionInput extends Omit<SWTransactionInput, 'transaction'> {
|
|
64
|
+
transaction?: SWDutchTransaction['transaction'] | null;
|
|
65
|
+
}
|
|
66
|
+
export declare type SWTransactionResponse = SwInputBase & Pick<SWTransactionBase, 'warnings' | 'errors'> & Partial<Pick<SWTransactionBase, 'id' | 'extrinsicHash' | 'status' | 'estimateFee' | 'xcmFeeDryRun'>> & TransactionFee & {
|
|
54
67
|
processId?: string;
|
|
55
68
|
};
|
|
56
69
|
export declare type ValidateTransactionResponseInput = SWTransactionInput;
|
package/types/swap/index.d.ts
CHANGED
|
@@ -62,7 +62,8 @@ export declare enum SwapProviderId {
|
|
|
62
62
|
ROCOCO_ASSET_HUB = "ROCOCO_ASSET_HUB",
|
|
63
63
|
WESTEND_ASSET_HUB = "WESTEND_ASSET_HUB",
|
|
64
64
|
SIMPLE_SWAP = "SIMPLE_SWAP",
|
|
65
|
-
UNISWAP = "UNISWAP"
|
|
65
|
+
UNISWAP = "UNISWAP",
|
|
66
|
+
KYBER = "KYBER"
|
|
66
67
|
}
|
|
67
68
|
export declare const _SUPPORTED_SWAP_PROVIDERS: SwapProviderId[];
|
|
68
69
|
export interface SwapProvider {
|
|
@@ -138,6 +139,7 @@ export interface SwapRequestV2 {
|
|
|
138
139
|
feeToken?: string;
|
|
139
140
|
preferredProvider?: SwapProviderId;
|
|
140
141
|
isCrossChain?: boolean;
|
|
142
|
+
isSupportKyberVersion?: boolean;
|
|
141
143
|
}
|
|
142
144
|
export interface SwapRequestResult {
|
|
143
145
|
process: CommonOptimalSwapPath;
|
|
@@ -166,6 +168,7 @@ export interface SwapSubmitStepData {
|
|
|
166
168
|
extrinsicType: ExtrinsicType;
|
|
167
169
|
chainType: ChainType;
|
|
168
170
|
isPermit?: boolean;
|
|
171
|
+
isDutch?: boolean;
|
|
169
172
|
}
|
|
170
173
|
export declare enum DynamicSwapType {
|
|
171
174
|
SWAP = "SWAP",
|
package/types/swap/index.js
CHANGED
|
@@ -35,13 +35,14 @@ export let SwapProviderId;
|
|
|
35
35
|
SwapProviderId["WESTEND_ASSET_HUB"] = "WESTEND_ASSET_HUB";
|
|
36
36
|
SwapProviderId["SIMPLE_SWAP"] = "SIMPLE_SWAP";
|
|
37
37
|
SwapProviderId["UNISWAP"] = "UNISWAP";
|
|
38
|
+
SwapProviderId["KYBER"] = "KYBER";
|
|
38
39
|
})(SwapProviderId || (SwapProviderId = {}));
|
|
39
40
|
export const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET,
|
|
40
41
|
// SwapProviderId.HYDRADX_TESTNET,
|
|
41
42
|
SwapProviderId.POLKADOT_ASSET_HUB, SwapProviderId.KUSAMA_ASSET_HUB,
|
|
42
43
|
// SwapProviderId.ROCOCO_ASSET_HUB,
|
|
43
44
|
// SwapProviderId.WESTEND_ASSET_HUB,
|
|
44
|
-
SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP];
|
|
45
|
+
SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP, SwapProviderId.KYBER];
|
|
45
46
|
// process handling
|
|
46
47
|
export let SwapFeeType;
|
|
47
48
|
(function (SwapFeeType) {
|