@uniswap/universal-router-sdk 4.32.0 → 4.34.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/dist/entities/actions/uniswap.d.ts +6 -0
- package/dist/index.d.ts +1 -1
- package/dist/swapRouter.d.ts +6 -0
- package/dist/universal-router-sdk.cjs.development.js +125 -31
- package/dist/universal-router-sdk.cjs.development.js.map +1 -1
- package/dist/universal-router-sdk.cjs.production.min.js +1 -1
- package/dist/universal-router-sdk.cjs.production.min.js.map +1 -1
- package/dist/universal-router-sdk.esm.js +131 -33
- package/dist/universal-router-sdk.esm.js.map +1 -1
- package/dist/utils/constants.d.ts +2 -0
- package/package.json +6 -6
|
@@ -9,6 +9,10 @@ export declare type FlatFeeOptions = {
|
|
|
9
9
|
amount: BigNumberish;
|
|
10
10
|
recipient: string;
|
|
11
11
|
};
|
|
12
|
+
export declare enum TokenTransferMode {
|
|
13
|
+
Permit2 = "Permit2",
|
|
14
|
+
ApproveProxy = "ApproveProxy"
|
|
15
|
+
}
|
|
12
16
|
export declare type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> & {
|
|
13
17
|
useRouterBalance?: boolean;
|
|
14
18
|
inputTokenPermit?: Permit2Permit;
|
|
@@ -16,6 +20,8 @@ export declare type SwapOptions = Omit<RouterSwapOptions, 'inputTokenPermit'> &
|
|
|
16
20
|
safeMode?: boolean;
|
|
17
21
|
maxHopSlippage?: BigNumber[];
|
|
18
22
|
urVersion?: URVersion;
|
|
23
|
+
tokenTransferMode?: TokenTransferMode;
|
|
24
|
+
chainId?: number;
|
|
19
25
|
};
|
|
20
26
|
export declare class UniswapTrade implements Command {
|
|
21
27
|
trade: RouterTrade<Currency, Currency, TradeType>;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export * from './entities';
|
|
|
4
4
|
export * from './utils/routerTradeAdapter';
|
|
5
5
|
export { RoutePlanner, CommandType, COMMAND_DEFINITION, Parser, Subparser } from './utils/routerCommands';
|
|
6
6
|
export type { CommandDefinition, ParamType } from './utils/routerCommands';
|
|
7
|
-
export { UNIVERSAL_ROUTER_CREATION_BLOCK, UNIVERSAL_ROUTER_ADDRESS, ROUTER_AS_RECIPIENT, WETH_ADDRESS, UniversalRouterVersion, } from './utils/constants';
|
|
7
|
+
export { UNIVERSAL_ROUTER_CREATION_BLOCK, UNIVERSAL_ROUTER_ADDRESS, SWAP_PROXY_ADDRESS, ROUTER_AS_RECIPIENT, WETH_ADDRESS, UniversalRouterVersion, } from './utils/constants';
|
|
8
8
|
export { CommandParser, GenericCommandParser } from './utils/commandParser';
|
|
9
9
|
export type { UniversalRouterCommand, UniversalRouterCall, Param, CommandsDefinition } from './utils/commandParser';
|
|
10
10
|
export type { Permit2Permit } from './utils/inputTokens';
|
package/dist/swapRouter.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ export interface MigrateV3ToV4Options {
|
|
|
38
38
|
}
|
|
39
39
|
export declare abstract class SwapRouter {
|
|
40
40
|
static INTERFACE: Interface;
|
|
41
|
+
static PROXY_INTERFACE: Interface;
|
|
41
42
|
static swapCallParameters(trades: RouterTrade<Currency, Currency, TradeType>, options: SwapOptions, bridgeOptions?: AcrossV4DepositV3Params[]): MethodParameters;
|
|
42
43
|
/**
|
|
43
44
|
* Generate EIP712 payload for signed execution (no signing performed)
|
|
@@ -78,4 +79,9 @@ export declare abstract class SwapRouter {
|
|
|
78
79
|
* @param config the router config
|
|
79
80
|
*/
|
|
80
81
|
private static encodePlan;
|
|
82
|
+
/**
|
|
83
|
+
* Encodes a planned route into calldata targeting the SwapProxy contract.
|
|
84
|
+
* The proxy pulls ERC20 tokens from the user into the UR, then executes commands.
|
|
85
|
+
*/
|
|
86
|
+
private static encodeProxyPlan;
|
|
81
87
|
}
|
|
@@ -442,13 +442,14 @@ function getPathCurrency(currency, pool) {
|
|
|
442
442
|
RouterActionType["UnwrapWETH"] = "UnwrapWETH";
|
|
443
443
|
})(exports.RouterActionType || (exports.RouterActionType = {}));
|
|
444
444
|
|
|
445
|
-
var _routerConfigs, _routerConfigs2, _routerConfigs3, _routerConfigs4, _routerConfigs5, _routerConfigs6, _routerConfigs7, _routerConfigs8, _routerConfigs9, _routerConfigs0, _routerConfigs1, _routerConfigs10, _routerConfigs11, _routerConfigs12, _routerConfigs13, _routerConfigs14, _routerConfigs15, _routerConfigs16, _routerConfigs17, _routerConfigs18, _routerConfigs19, _routerConfigs20, _routerConfigs21, _routerConfigs22, _routerConfigs23, _routerConfigs24, _routerConfigs25, _CHAIN_CONFIGS;
|
|
445
|
+
var _routerConfigs, _routerConfigs2, _routerConfigs3, _routerConfigs4, _routerConfigs5, _routerConfigs6, _routerConfigs7, _routerConfigs8, _routerConfigs9, _routerConfigs0, _routerConfigs1, _routerConfigs10, _routerConfigs11, _routerConfigs12, _routerConfigs13, _routerConfigs14, _routerConfigs15, _routerConfigs16, _routerConfigs17, _routerConfigs18, _routerConfigs19, _routerConfigs20, _routerConfigs21, _routerConfigs22, _routerConfigs23, _routerConfigs24, _routerConfigs25, _routerConfigs26, _CHAIN_CONFIGS;
|
|
446
446
|
(function (UniversalRouterVersion) {
|
|
447
447
|
UniversalRouterVersion["V1_2"] = "1.2";
|
|
448
448
|
UniversalRouterVersion["V2_0"] = "2.0";
|
|
449
449
|
UniversalRouterVersion["V2_1"] = "2.1";
|
|
450
450
|
})(exports.UniversalRouterVersion || (exports.UniversalRouterVersion = {}));
|
|
451
451
|
var WETH_NOT_SUPPORTED_ON_CHAIN = '0x0000000000000000000000000000000000000000';
|
|
452
|
+
var SWAP_PROXY_DEPLOY_ADDRESS = '0x02E5be68D46DAc0B524905bfF209cf47EE6dB2a9';
|
|
452
453
|
// Todo: Change `CHAIN_CONFIGS` to pull the UR address with v4
|
|
453
454
|
var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
454
455
|
weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
|
|
@@ -461,7 +462,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
461
462
|
}, _routerConfigs[exports.UniversalRouterVersion.V2_1] = {
|
|
462
463
|
address: '0xd92a36b0000531ef3063ded4de20a0783308446c',
|
|
463
464
|
creationBlock: 23836348
|
|
464
|
-
}, _routerConfigs)
|
|
465
|
+
}, _routerConfigs),
|
|
466
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
465
467
|
}, _CHAIN_CONFIGS[5] = {
|
|
466
468
|
weth: '0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6',
|
|
467
469
|
routerConfigs: (_routerConfigs2 = {}, _routerConfigs2[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -485,7 +487,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
485
487
|
}, _routerConfigs3[exports.UniversalRouterVersion.V2_1] = {
|
|
486
488
|
address: '0x470FFC67b1feEEC31D16C46AC7545C98716a194c',
|
|
487
489
|
creationBlock: 9664766
|
|
488
|
-
}, _routerConfigs3)
|
|
490
|
+
}, _routerConfigs3),
|
|
491
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
489
492
|
}, _CHAIN_CONFIGS[137] = {
|
|
490
493
|
weth: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270',
|
|
491
494
|
routerConfigs: (_routerConfigs4 = {}, _routerConfigs4[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -497,7 +500,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
497
500
|
}, _routerConfigs4[exports.UniversalRouterVersion.V2_1] = {
|
|
498
501
|
address: '0xE27610fD9dD05FC061366bc9dA414CA6F948f204',
|
|
499
502
|
creationBlock: 79245524
|
|
500
|
-
}, _routerConfigs4)
|
|
503
|
+
}, _routerConfigs4),
|
|
504
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
501
505
|
}, _CHAIN_CONFIGS[80001] = {
|
|
502
506
|
weth: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889',
|
|
503
507
|
routerConfigs: (_routerConfigs5 = {}, _routerConfigs5[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -521,7 +525,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
521
525
|
}, _routerConfigs6[exports.UniversalRouterVersion.V2_1] = {
|
|
522
526
|
address: '0xde20EEE5398D3790a4D356e8925bD21Ea65D99Af',
|
|
523
527
|
creationBlock: 143998769
|
|
524
|
-
}, _routerConfigs6)
|
|
528
|
+
}, _routerConfigs6),
|
|
529
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
525
530
|
}, _CHAIN_CONFIGS[420] = {
|
|
526
531
|
weth: '0x4200000000000000000000000000000000000006',
|
|
527
532
|
routerConfigs: (_routerConfigs7 = {}, _routerConfigs7[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -545,7 +550,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
545
550
|
}, _routerConfigs8[exports.UniversalRouterVersion.V2_1] = {
|
|
546
551
|
address: '0x96b2FD2F80e9428Daa65d859653117D453981AB4',
|
|
547
552
|
creationBlock: 402060097
|
|
548
|
-
}, _routerConfigs8)
|
|
553
|
+
}, _routerConfigs8),
|
|
554
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
549
555
|
}, _CHAIN_CONFIGS[421613] = {
|
|
550
556
|
weth: '0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3',
|
|
551
557
|
routerConfigs: (_routerConfigs9 = {}, _routerConfigs9[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -569,7 +575,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
569
575
|
}, _routerConfigs0[exports.UniversalRouterVersion.V2_1] = {
|
|
570
576
|
address: '0xBB8Ed9bF0BFF210652AE5f473a849F82e990DDf6',
|
|
571
577
|
creationBlock: 51696199
|
|
572
|
-
}, _routerConfigs0)
|
|
578
|
+
}, _routerConfigs0),
|
|
579
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
573
580
|
}, _CHAIN_CONFIGS[44787] = {
|
|
574
581
|
weth: WETH_NOT_SUPPORTED_ON_CHAIN,
|
|
575
582
|
routerConfigs: (_routerConfigs1 = {}, _routerConfigs1[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -593,7 +600,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
593
600
|
}, _routerConfigs10[exports.UniversalRouterVersion.V2_1] = {
|
|
594
601
|
address: '0x91BF3bfAEf8D771A74E1A8fE460b3EE646b2e588',
|
|
595
602
|
creationBlock: 68794488
|
|
596
|
-
}, _routerConfigs10)
|
|
603
|
+
}, _routerConfigs10),
|
|
604
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
597
605
|
}, _CHAIN_CONFIGS[43114] = {
|
|
598
606
|
weth: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7',
|
|
599
607
|
routerConfigs: (_routerConfigs11 = {}, _routerConfigs11[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -605,7 +613,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
605
613
|
}, _routerConfigs11[exports.UniversalRouterVersion.V2_1] = {
|
|
606
614
|
address: '0x0Cf1f86B331A03179646341D10A2A87515087221',
|
|
607
615
|
creationBlock: 72254439
|
|
608
|
-
}, _routerConfigs11)
|
|
616
|
+
}, _routerConfigs11),
|
|
617
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
609
618
|
}, _CHAIN_CONFIGS[84531] = {
|
|
610
619
|
weth: '0x4200000000000000000000000000000000000006',
|
|
611
620
|
routerConfigs: (_routerConfigs12 = {}, _routerConfigs12[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -629,7 +638,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
629
638
|
}, _routerConfigs13[exports.UniversalRouterVersion.V2_1] = {
|
|
630
639
|
address: '0xf3a4f4094bd2c6c06ca2f61789d8727b8d1e7259',
|
|
631
640
|
creationBlock: 38404211
|
|
632
|
-
}, _routerConfigs13)
|
|
641
|
+
}, _routerConfigs13),
|
|
642
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
633
643
|
}, _CHAIN_CONFIGS[81457] = {
|
|
634
644
|
weth: '0x4300000000000000000000000000000000000004',
|
|
635
645
|
routerConfigs: (_routerConfigs14 = {}, _routerConfigs14[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -641,7 +651,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
641
651
|
}, _routerConfigs14[exports.UniversalRouterVersion.V2_1] = {
|
|
642
652
|
address: '0x77c0097c1acf6fd84878d3f7c0603e3f04e8bec7',
|
|
643
653
|
creationBlock: 27394047
|
|
644
|
-
}, _routerConfigs14)
|
|
654
|
+
}, _routerConfigs14),
|
|
655
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
645
656
|
}, _CHAIN_CONFIGS[7777777] = {
|
|
646
657
|
weth: '0x4200000000000000000000000000000000000006',
|
|
647
658
|
routerConfigs: (_routerConfigs15 = {}, _routerConfigs15[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -653,7 +664,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
653
664
|
}, _routerConfigs15[exports.UniversalRouterVersion.V2_1] = {
|
|
654
665
|
address: '0x880853091b60f80301a0c1d2f9893c4993041295',
|
|
655
666
|
creationBlock: 38452170
|
|
656
|
-
}, _routerConfigs15)
|
|
667
|
+
}, _routerConfigs15),
|
|
668
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
657
669
|
}, _CHAIN_CONFIGS[324] = {
|
|
658
670
|
weth: '0x5aea5775959fbc2557cc8789bc1bf90a239d9a91',
|
|
659
671
|
routerConfigs: (_routerConfigs16 = {}, _routerConfigs16[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -665,7 +677,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
665
677
|
}, _routerConfigs16[exports.UniversalRouterVersion.V2_1] = {
|
|
666
678
|
address: '0x0000000000000000000000000000000000000000',
|
|
667
679
|
creationBlock: 1
|
|
668
|
-
}, _routerConfigs16)
|
|
680
|
+
}, _routerConfigs16),
|
|
681
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
669
682
|
}, _CHAIN_CONFIGS[480] = {
|
|
670
683
|
weth: '0x4200000000000000000000000000000000000006',
|
|
671
684
|
routerConfigs: (_routerConfigs17 = {}, _routerConfigs17[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -677,7 +690,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
677
690
|
}, _routerConfigs17[exports.UniversalRouterVersion.V2_1] = {
|
|
678
691
|
address: '0x03c4f6b55733cdf3caa07c01e5b83ddee3381f60',
|
|
679
692
|
creationBlock: 22131418
|
|
680
|
-
}, _routerConfigs17)
|
|
693
|
+
}, _routerConfigs17),
|
|
694
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
681
695
|
}, _CHAIN_CONFIGS[1301] = {
|
|
682
696
|
weth: '0x4200000000000000000000000000000000000006',
|
|
683
697
|
routerConfigs: (_routerConfigs18 = {}, _routerConfigs18[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -689,7 +703,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
689
703
|
}, _routerConfigs18[exports.UniversalRouterVersion.V2_1] = {
|
|
690
704
|
address: '0x7F9B8D606E0F35E5073ABf93695814530b28a37b',
|
|
691
705
|
creationBlock: 36746405
|
|
692
|
-
}, _routerConfigs18)
|
|
706
|
+
}, _routerConfigs18),
|
|
707
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
693
708
|
}, _CHAIN_CONFIGS[130] = {
|
|
694
709
|
weth: '0x4200000000000000000000000000000000000006',
|
|
695
710
|
routerConfigs: (_routerConfigs19 = {}, _routerConfigs19[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -701,7 +716,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
701
716
|
}, _routerConfigs19[exports.UniversalRouterVersion.V2_1] = {
|
|
702
717
|
address: '0xe6039ae5b44f90d56c6b029354fb22999861a9a0',
|
|
703
718
|
creationBlock: 32850661
|
|
704
|
-
}, _routerConfigs19)
|
|
719
|
+
}, _routerConfigs19),
|
|
720
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
705
721
|
}, _CHAIN_CONFIGS[10143] = {
|
|
706
722
|
weth: '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701',
|
|
707
723
|
routerConfigs: (_routerConfigs20 = {}, _routerConfigs20[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -713,7 +729,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
713
729
|
}, _routerConfigs20[exports.UniversalRouterVersion.V2_1] = {
|
|
714
730
|
address: '0x0000000000000000000000000000000000000000',
|
|
715
731
|
creationBlock: 1
|
|
716
|
-
}, _routerConfigs20)
|
|
732
|
+
}, _routerConfigs20),
|
|
733
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
717
734
|
}, _CHAIN_CONFIGS[84532] = {
|
|
718
735
|
weth: '0x4200000000000000000000000000000000000006',
|
|
719
736
|
routerConfigs: (_routerConfigs21 = {}, _routerConfigs21[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -725,7 +742,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
725
742
|
}, _routerConfigs21[exports.UniversalRouterVersion.V2_1] = {
|
|
726
743
|
address: '0x0000000000000000000000000000000000000000',
|
|
727
744
|
creationBlock: 1
|
|
728
|
-
}, _routerConfigs21)
|
|
745
|
+
}, _routerConfigs21),
|
|
746
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
729
747
|
}, _CHAIN_CONFIGS[1868] = {
|
|
730
748
|
weth: '0x4200000000000000000000000000000000000006',
|
|
731
749
|
routerConfigs: (_routerConfigs22 = {}, _routerConfigs22[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -737,7 +755,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
737
755
|
}, _routerConfigs22[exports.UniversalRouterVersion.V2_1] = {
|
|
738
756
|
address: '0xdb1d5986551c820bd0f3b1caca3e77ce03acb5ef',
|
|
739
757
|
creationBlock: 15232223
|
|
740
|
-
}, _routerConfigs22)
|
|
758
|
+
}, _routerConfigs22),
|
|
759
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
741
760
|
}, _CHAIN_CONFIGS[143] = {
|
|
742
761
|
weth: '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A',
|
|
743
762
|
routerConfigs: (_routerConfigs23 = {}, _routerConfigs23[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -749,7 +768,8 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
749
768
|
}, _routerConfigs23[exports.UniversalRouterVersion.V2_1] = {
|
|
750
769
|
address: '0xBC2A036E5027b9AE57BbA847eF88E1b14823F7B1',
|
|
751
770
|
creationBlock: 36720825
|
|
752
|
-
}, _routerConfigs23)
|
|
771
|
+
}, _routerConfigs23),
|
|
772
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
753
773
|
}, _CHAIN_CONFIGS[59144] = {
|
|
754
774
|
weth: '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',
|
|
755
775
|
routerConfigs: (_routerConfigs24 = {}, _routerConfigs24[exports.UniversalRouterVersion.V1_2] = {
|
|
@@ -761,24 +781,45 @@ var CHAIN_CONFIGS = (_CHAIN_CONFIGS = {}, _CHAIN_CONFIGS[1] = {
|
|
|
761
781
|
}, _routerConfigs24[exports.UniversalRouterVersion.V2_1] = {
|
|
762
782
|
address: '0xba548ce7a95f87bc66a0c7c6eab1e428735f8b57',
|
|
763
783
|
creationBlock: 1
|
|
764
|
-
}, _routerConfigs24)
|
|
765
|
-
|
|
766
|
-
|
|
784
|
+
}, _routerConfigs24),
|
|
785
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
786
|
+
}, _CHAIN_CONFIGS[4217] = {
|
|
787
|
+
weth: WETH_NOT_SUPPORTED_ON_CHAIN,
|
|
767
788
|
routerConfigs: (_routerConfigs25 = {}, _routerConfigs25[exports.UniversalRouterVersion.V1_2] = {
|
|
768
789
|
address: '0x0000000000000000000000000000000000000000',
|
|
769
790
|
creationBlock: 1
|
|
770
791
|
}, _routerConfigs25[exports.UniversalRouterVersion.V2_0] = {
|
|
792
|
+
address: '0x1febb76be10aaf3a1402f04e8e835f2c382f7914',
|
|
793
|
+
creationBlock: 1
|
|
794
|
+
}, _routerConfigs25[exports.UniversalRouterVersion.V2_1] = {
|
|
795
|
+
address: '0xa2dc7d0266f0cc50b3eeaf36c9bfcecff1beea91',
|
|
796
|
+
creationBlock: 1
|
|
797
|
+
}, _routerConfigs25),
|
|
798
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
799
|
+
}, _CHAIN_CONFIGS[196] = {
|
|
800
|
+
weth: '0xe538905cf8410324e03A5A23C1c177a474D59b2b',
|
|
801
|
+
routerConfigs: (_routerConfigs26 = {}, _routerConfigs26[exports.UniversalRouterVersion.V1_2] = {
|
|
802
|
+
address: '0x0000000000000000000000000000000000000000',
|
|
803
|
+
creationBlock: 1
|
|
804
|
+
}, _routerConfigs26[exports.UniversalRouterVersion.V2_0] = {
|
|
771
805
|
address: '0x5507749f2c558bb3e162c6e90c314c092e7372ff',
|
|
772
806
|
creationBlock: 47680350
|
|
773
|
-
},
|
|
807
|
+
}, _routerConfigs26[exports.UniversalRouterVersion.V2_1] = {
|
|
774
808
|
address: '0x0000000000000000000000000000000000000000',
|
|
775
809
|
creationBlock: 1
|
|
776
|
-
},
|
|
810
|
+
}, _routerConfigs26),
|
|
811
|
+
swapProxy: SWAP_PROXY_DEPLOY_ADDRESS
|
|
777
812
|
}, _CHAIN_CONFIGS);
|
|
778
813
|
var UNIVERSAL_ROUTER_ADDRESS = function UNIVERSAL_ROUTER_ADDRESS(version, chainId) {
|
|
779
814
|
if (!(chainId in CHAIN_CONFIGS)) throw new Error("Universal Router not deployed on chain " + chainId);
|
|
780
815
|
return CHAIN_CONFIGS[chainId].routerConfigs[version].address;
|
|
781
816
|
};
|
|
817
|
+
var SWAP_PROXY_ADDRESS = function SWAP_PROXY_ADDRESS(chainId) {
|
|
818
|
+
if (!(chainId in CHAIN_CONFIGS)) throw new Error("SwapProxy not deployed on chain " + chainId);
|
|
819
|
+
var proxy = CHAIN_CONFIGS[chainId].swapProxy;
|
|
820
|
+
if (!proxy) throw new Error("SwapProxy not configured for chain " + chainId);
|
|
821
|
+
return proxy;
|
|
822
|
+
};
|
|
782
823
|
var UNIVERSAL_ROUTER_CREATION_BLOCK = function UNIVERSAL_ROUTER_CREATION_BLOCK(version, chainId) {
|
|
783
824
|
if (!(chainId in CHAIN_CONFIGS)) throw new Error("Universal Router not deployed on chain " + chainId);
|
|
784
825
|
return CHAIN_CONFIGS[chainId].routerConfigs[version].creationBlock;
|
|
@@ -802,6 +843,10 @@ function encodeFeeBips(fee) {
|
|
|
802
843
|
return v3Sdk.toHex(fee.multiply(10000).quotient);
|
|
803
844
|
}
|
|
804
845
|
|
|
846
|
+
(function (TokenTransferMode) {
|
|
847
|
+
TokenTransferMode["Permit2"] = "Permit2";
|
|
848
|
+
TokenTransferMode["ApproveProxy"] = "ApproveProxy";
|
|
849
|
+
})(exports.TokenTransferMode || (exports.TokenTransferMode = {}));
|
|
805
850
|
var REFUND_ETH_PRICE_IMPACT_THRESHOLD = /*#__PURE__*/new sdkCore.Percent(50, 100);
|
|
806
851
|
// Wrapper for uniswap router-sdk trade entity to encode swaps for Universal Router
|
|
807
852
|
// also translates trade objects from previous (v2, v3) SDKs
|
|
@@ -811,7 +856,12 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
811
856
|
this.options = options;
|
|
812
857
|
this.tradeType = exports.RouterActionType.UniswapTrade;
|
|
813
858
|
if (!!options.fee && !!options.flatFee) throw new Error('Only one fee option permitted');
|
|
814
|
-
if (
|
|
859
|
+
if (options.tokenTransferMode === exports.TokenTransferMode.ApproveProxy) {
|
|
860
|
+
if (!options.recipient || options.recipient === SENDER_AS_RECIPIENT) {
|
|
861
|
+
throw new Error('Explicit recipient address required when using SwapProxy (SENDER_AS_RECIPIENT resolves to proxy)');
|
|
862
|
+
}
|
|
863
|
+
this.payerIsUser = false;
|
|
864
|
+
} else if (this.inputRequiresWrap || this.inputRequiresUnwrap || this.options.useRouterBalance) {
|
|
815
865
|
this.payerIsUser = false;
|
|
816
866
|
} else {
|
|
817
867
|
this.payerIsUser = true;
|
|
@@ -825,8 +875,11 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
825
875
|
// TODO: optimize if only one v2 pool we can directly send this to the pool
|
|
826
876
|
planner.addCommand(exports.CommandType.WRAP_ETH, [ROUTER_AS_RECIPIENT, this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]);
|
|
827
877
|
} else if (this.inputRequiresUnwrap) {
|
|
828
|
-
|
|
829
|
-
|
|
878
|
+
if (this.options.tokenTransferMode !== exports.TokenTransferMode.ApproveProxy) {
|
|
879
|
+
// send wrapped token to router to unwrap via Permit2
|
|
880
|
+
planner.addCommand(exports.CommandType.PERMIT2_TRANSFER_FROM, [this.trade.inputAmount.currency.address, ROUTER_AS_RECIPIENT, this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString()]);
|
|
881
|
+
}
|
|
882
|
+
// In proxy mode, the proxy already transferred tokens to the UR; just unwrap
|
|
830
883
|
planner.addCommand(exports.CommandType.UNWRAP_WETH, [ROUTER_AS_RECIPIENT, 0]);
|
|
831
884
|
}
|
|
832
885
|
// The overall recipient at the end of the trade, SENDER_AS_RECIPIENT uses the msg.sender
|
|
@@ -901,6 +954,9 @@ var UniswapTrade = /*#__PURE__*/function () {
|
|
|
901
954
|
planner.addCommand(exports.CommandType.UNWRAP_WETH, [this.options.recipient, 0]);
|
|
902
955
|
} else if (this.inputRequiresUnwrap) {
|
|
903
956
|
planner.addCommand(exports.CommandType.WRAP_ETH, [this.options.recipient, CONTRACT_BALANCE]);
|
|
957
|
+
} else if (this.options.tokenTransferMode === exports.TokenTransferMode.ApproveProxy) {
|
|
958
|
+
// Proxy pulled maximumAmountIn into the UR; sweep any unused input back to the user
|
|
959
|
+
planner.addCommand(exports.CommandType.SWEEP, [getCurrencyAddress(this.trade.inputAmount.currency), this.options.recipient, 0]);
|
|
904
960
|
} else if (this.trade.inputAmount.currency.isNative) {
|
|
905
961
|
// must refund extra native currency sent along for native v4 trades (no input transition)
|
|
906
962
|
planner.addCommand(exports.CommandType.SWEEP, [ETH_ADDRESS, this.options.recipient, 0]);
|
|
@@ -1275,11 +1331,19 @@ function generateNonce() {
|
|
|
1275
1331
|
*/
|
|
1276
1332
|
var NONCE_SKIP_CHECK = '0x' + /*#__PURE__*/'f'.repeat(64); // bytes32(type(uint256).max)
|
|
1277
1333
|
|
|
1334
|
+
var _UR_VERSION_MAP;
|
|
1278
1335
|
function isMint(options) {
|
|
1279
1336
|
return Object.keys(options).some(function (k) {
|
|
1280
1337
|
return k === 'recipient';
|
|
1281
1338
|
});
|
|
1282
1339
|
}
|
|
1340
|
+
var UR_VERSION_MAP = (_UR_VERSION_MAP = {}, _UR_VERSION_MAP[v4Sdk.URVersion.V2_0] = exports.UniversalRouterVersion.V2_0, _UR_VERSION_MAP[v4Sdk.URVersion.V2_1] = exports.UniversalRouterVersion.V2_1, _UR_VERSION_MAP);
|
|
1341
|
+
function toUniversalRouterVersion(urVersion) {
|
|
1342
|
+
if (urVersion === undefined) return undefined;
|
|
1343
|
+
var mapped = UR_VERSION_MAP[urVersion];
|
|
1344
|
+
if (!mapped) throw new Error("Unsupported URVersion: " + urVersion);
|
|
1345
|
+
return mapped;
|
|
1346
|
+
}
|
|
1283
1347
|
var SwapRouter = /*#__PURE__*/function () {
|
|
1284
1348
|
function SwapRouter() {}
|
|
1285
1349
|
SwapRouter.swapCallParameters = function swapCallParameters(trades, options, bridgeOptions // Optional bridge parameters
|
|
@@ -1288,9 +1352,15 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
1288
1352
|
var planner = new RoutePlanner();
|
|
1289
1353
|
var trade = new UniswapTrade(trades, options);
|
|
1290
1354
|
var inputCurrency = trade.trade.inputAmount.currency;
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1355
|
+
if (options.tokenTransferMode === exports.TokenTransferMode.ApproveProxy) {
|
|
1356
|
+
!!inputCurrency.isNative ? invariant(false, 'PROXY_NATIVE_INPUT: SwapProxy only supports ERC20 input') : void 0;
|
|
1357
|
+
!!!options.chainId ? invariant(false, 'PROXY_MISSING_CHAIN_ID: chainId required when tokenTransferMode is ApproveProxy') : void 0;
|
|
1358
|
+
!!options.inputTokenPermit ? invariant(false, 'PROXY_PERMIT_CONFLICT: Permit2 not used with SwapProxy') : void 0;
|
|
1359
|
+
} else {
|
|
1360
|
+
!!(inputCurrency.isNative && !!options.inputTokenPermit) ? invariant(false, 'NATIVE_INPUT_PERMIT') : void 0;
|
|
1361
|
+
if (options.inputTokenPermit) {
|
|
1362
|
+
encodePermit(planner, options.inputTokenPermit);
|
|
1363
|
+
}
|
|
1294
1364
|
}
|
|
1295
1365
|
var nativeCurrencyValue = inputCurrency.isNative ? ethers.BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString()) : ethers.BigNumber.from(0);
|
|
1296
1366
|
trade.encode(planner, {
|
|
@@ -1303,6 +1373,9 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
1303
1373
|
planner.addAcrossBridge(bridge);
|
|
1304
1374
|
}
|
|
1305
1375
|
}
|
|
1376
|
+
if (options.tokenTransferMode === exports.TokenTransferMode.ApproveProxy) {
|
|
1377
|
+
return SwapRouter.encodeProxyPlan(planner, trade, options);
|
|
1378
|
+
}
|
|
1306
1379
|
return SwapRouter.encodePlan(planner, nativeCurrencyValue, {
|
|
1307
1380
|
deadline: options.deadlineOrPreviousBlockhash ? ethers.BigNumber.from(options.deadlineOrPreviousBlockhash) : undefined
|
|
1308
1381
|
});
|
|
@@ -1484,10 +1557,30 @@ var SwapRouter = /*#__PURE__*/function () {
|
|
|
1484
1557
|
calldata: calldata,
|
|
1485
1558
|
value: nativeCurrencyValue.toHexString()
|
|
1486
1559
|
};
|
|
1560
|
+
}
|
|
1561
|
+
/**
|
|
1562
|
+
* Encodes a planned route into calldata targeting the SwapProxy contract.
|
|
1563
|
+
* The proxy pulls ERC20 tokens from the user into the UR, then executes commands.
|
|
1564
|
+
*/;
|
|
1565
|
+
SwapRouter.encodeProxyPlan = function encodeProxyPlan(planner, trade, options) {
|
|
1566
|
+
var _toUniversalRouterVer;
|
|
1567
|
+
var commands = planner.commands,
|
|
1568
|
+
inputs = planner.inputs;
|
|
1569
|
+
var urVersion = (_toUniversalRouterVer = toUniversalRouterVersion(options.urVersion)) != null ? _toUniversalRouterVer : exports.UniversalRouterVersion.V2_0;
|
|
1570
|
+
var routerAddress = UNIVERSAL_ROUTER_ADDRESS(urVersion, options.chainId);
|
|
1571
|
+
var inputToken = trade.trade.inputAmount.currency.address;
|
|
1572
|
+
var inputAmount = ethers.BigNumber.from(trade.trade.maximumAmountIn(options.slippageTolerance).quotient.toString());
|
|
1573
|
+
var deadline = options.deadlineOrPreviousBlockhash ? ethers.BigNumber.from(options.deadlineOrPreviousBlockhash) : ethers.BigNumber.from(Math.floor(Date.now() / 1000) + 1800); // 30 min default
|
|
1574
|
+
var calldata = SwapRouter.PROXY_INTERFACE.encodeFunctionData('execute', [routerAddress, inputToken, inputAmount, commands, inputs, deadline]);
|
|
1575
|
+
return {
|
|
1576
|
+
calldata: calldata,
|
|
1577
|
+
value: ethers.BigNumber.from(0).toHexString()
|
|
1578
|
+
};
|
|
1487
1579
|
};
|
|
1488
1580
|
return SwapRouter;
|
|
1489
1581
|
}();
|
|
1490
1582
|
SwapRouter.INTERFACE = /*#__PURE__*/new abi.Interface(UniversalRouter.abi);
|
|
1583
|
+
SwapRouter.PROXY_INTERFACE = /*#__PURE__*/new abi.Interface(['function execute(address router, address token, uint256 amount, bytes calldata commands, bytes[] calldata inputs, uint256 deadline) external']);
|
|
1491
1584
|
|
|
1492
1585
|
var UnwrapWETH = /*#__PURE__*/function () {
|
|
1493
1586
|
function UnwrapWETH(amount, chainId, permit2) {
|
|
@@ -1819,6 +1912,7 @@ exports.NONCE_SKIP_CHECK = NONCE_SKIP_CHECK;
|
|
|
1819
1912
|
exports.ROUTER_AS_RECIPIENT = ROUTER_AS_RECIPIENT;
|
|
1820
1913
|
exports.RoutePlanner = RoutePlanner;
|
|
1821
1914
|
exports.RouterTradeAdapter = RouterTradeAdapter;
|
|
1915
|
+
exports.SWAP_PROXY_ADDRESS = SWAP_PROXY_ADDRESS;
|
|
1822
1916
|
exports.SwapRouter = SwapRouter;
|
|
1823
1917
|
exports.UNIVERSAL_ROUTER_ADDRESS = UNIVERSAL_ROUTER_ADDRESS;
|
|
1824
1918
|
exports.UNIVERSAL_ROUTER_CREATION_BLOCK = UNIVERSAL_ROUTER_CREATION_BLOCK;
|