@uniswap/universal-router-sdk 4.34.2 → 4.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +104 -96
  2. package/dist/{entities → cjs/src/entities}/Command.d.ts +12 -12
  3. package/dist/cjs/src/entities/Command.js +9 -0
  4. package/dist/cjs/src/entities/Command.js.map +1 -0
  5. package/dist/{entities → cjs/src/entities}/actions/across.d.ts +21 -21
  6. package/dist/cjs/src/entities/actions/across.js +7 -0
  7. package/dist/cjs/src/entities/actions/across.js.map +1 -0
  8. package/dist/{entities → cjs/src/entities}/actions/index.d.ts +3 -3
  9. package/dist/cjs/src/entities/actions/index.js +7 -0
  10. package/dist/cjs/src/entities/actions/index.js.map +1 -0
  11. package/dist/{entities → cjs/src/entities}/actions/uniswap.d.ts +38 -39
  12. package/dist/cjs/src/entities/actions/uniswap.js +532 -0
  13. package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
  14. package/dist/{entities → cjs/src/entities}/actions/unwrapWETH.d.ts +12 -12
  15. package/dist/cjs/src/entities/actions/unwrapWETH.js +33 -0
  16. package/dist/cjs/src/entities/actions/unwrapWETH.js.map +1 -0
  17. package/dist/{entities → cjs/src/entities}/index.d.ts +2 -2
  18. package/dist/cjs/src/entities/index.js +6 -0
  19. package/dist/cjs/src/entities/index.js.map +1 -0
  20. package/dist/{index.d.ts → cjs/src/index.d.ts} +12 -12
  21. package/dist/cjs/src/index.js +33 -0
  22. package/dist/cjs/src/index.js.map +1 -0
  23. package/dist/{swapRouter.d.ts → cjs/src/swapRouter.d.ts} +87 -87
  24. package/dist/cjs/src/swapRouter.js +276 -0
  25. package/dist/cjs/src/swapRouter.js.map +1 -0
  26. package/dist/{utils → cjs/src/utils}/commandParser.d.ts +34 -34
  27. package/dist/cjs/src/utils/commandParser.js +145 -0
  28. package/dist/cjs/src/utils/commandParser.js.map +1 -0
  29. package/dist/{utils → cjs/src/utils}/constants.d.ts +33 -33
  30. package/dist/cjs/src/utils/constants.js +541 -0
  31. package/dist/cjs/src/utils/constants.js.map +1 -0
  32. package/dist/{utils → cjs/src/utils}/eip712.d.ts +17 -17
  33. package/dist/cjs/src/utils/eip712.js +43 -0
  34. package/dist/cjs/src/utils/eip712.js.map +1 -0
  35. package/dist/{utils → cjs/src/utils}/getCurrencyAddress.d.ts +2 -2
  36. package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
  37. package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
  38. package/dist/{utils → cjs/src/utils}/inputTokens.d.ts +23 -23
  39. package/dist/cjs/src/utils/inputTokens.js +58 -0
  40. package/dist/cjs/src/utils/inputTokens.js.map +1 -0
  41. package/dist/{utils → cjs/src/utils}/numbers.d.ts +7 -6
  42. package/dist/cjs/src/utils/numbers.js +27 -0
  43. package/dist/cjs/src/utils/numbers.js.map +1 -0
  44. package/dist/{utils → cjs/src/utils}/pathCurrency.d.ts +3 -3
  45. package/dist/cjs/src/utils/pathCurrency.js +27 -0
  46. package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
  47. package/dist/{utils → cjs/src/utils}/routerCommands.d.ts +77 -72
  48. package/dist/cjs/src/utils/routerCommands.js +334 -0
  49. package/dist/cjs/src/utils/routerCommands.js.map +1 -0
  50. package/dist/{utils → cjs/src/utils}/routerTradeAdapter.d.ts +73 -73
  51. package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
  52. package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
  53. package/dist/esm/src/entities/Command.d.ts +12 -0
  54. package/dist/esm/src/entities/Command.js +6 -0
  55. package/dist/esm/src/entities/Command.js.map +1 -0
  56. package/dist/esm/src/entities/actions/across.d.ts +21 -0
  57. package/dist/esm/src/entities/actions/across.js +3 -0
  58. package/dist/esm/src/entities/actions/across.js.map +1 -0
  59. package/dist/esm/src/entities/actions/index.d.ts +3 -0
  60. package/dist/esm/src/entities/actions/index.js +4 -0
  61. package/dist/esm/src/entities/actions/index.js.map +1 -0
  62. package/dist/esm/src/entities/actions/uniswap.d.ts +38 -0
  63. package/dist/esm/src/entities/actions/uniswap.js +528 -0
  64. package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
  65. package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
  66. package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
  67. package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
  68. package/dist/esm/src/entities/index.d.ts +2 -0
  69. package/dist/esm/src/entities/index.js +3 -0
  70. package/dist/esm/src/entities/index.js.map +1 -0
  71. package/dist/esm/src/index.d.ts +12 -0
  72. package/dist/esm/src/index.js +9 -0
  73. package/dist/esm/src/index.js.map +1 -0
  74. package/dist/esm/src/swapRouter.d.ts +87 -0
  75. package/dist/esm/src/swapRouter.js +271 -0
  76. package/dist/esm/src/swapRouter.js.map +1 -0
  77. package/dist/esm/src/utils/commandParser.d.ts +34 -0
  78. package/dist/esm/src/utils/commandParser.js +137 -0
  79. package/dist/esm/src/utils/commandParser.js.map +1 -0
  80. package/dist/esm/src/utils/constants.d.ts +33 -0
  81. package/dist/esm/src/utils/constants.js +534 -0
  82. package/dist/esm/src/utils/constants.js.map +1 -0
  83. package/dist/esm/src/utils/eip712.d.ts +17 -0
  84. package/dist/esm/src/utils/eip712.js +38 -0
  85. package/dist/esm/src/utils/eip712.js.map +1 -0
  86. package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
  87. package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
  88. package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
  89. package/dist/esm/src/utils/inputTokens.d.ts +23 -0
  90. package/dist/esm/src/utils/inputTokens.js +51 -0
  91. package/dist/esm/src/utils/inputTokens.js.map +1 -0
  92. package/dist/esm/src/utils/numbers.d.ts +7 -0
  93. package/dist/esm/src/utils/numbers.js +19 -0
  94. package/dist/esm/src/utils/numbers.js.map +1 -0
  95. package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
  96. package/dist/esm/src/utils/pathCurrency.js +23 -0
  97. package/dist/esm/src/utils/pathCurrency.js.map +1 -0
  98. package/dist/esm/src/utils/routerCommands.d.ts +77 -0
  99. package/dist/esm/src/utils/routerCommands.js +329 -0
  100. package/dist/esm/src/utils/routerCommands.js.map +1 -0
  101. package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
  102. package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
  103. package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
  104. package/dist/types/src/entities/Command.d.ts +12 -0
  105. package/dist/types/src/entities/actions/across.d.ts +21 -0
  106. package/dist/types/src/entities/actions/index.d.ts +3 -0
  107. package/dist/types/src/entities/actions/uniswap.d.ts +38 -0
  108. package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
  109. package/dist/types/src/entities/index.d.ts +2 -0
  110. package/dist/types/src/index.d.ts +12 -0
  111. package/dist/types/src/swapRouter.d.ts +87 -0
  112. package/dist/types/src/utils/commandParser.d.ts +34 -0
  113. package/dist/types/src/utils/constants.d.ts +33 -0
  114. package/dist/types/src/utils/eip712.d.ts +17 -0
  115. package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
  116. package/dist/types/src/utils/inputTokens.d.ts +23 -0
  117. package/dist/types/src/utils/numbers.d.ts +7 -0
  118. package/dist/types/src/utils/pathCurrency.d.ts +3 -0
  119. package/dist/types/src/utils/routerCommands.d.ts +77 -0
  120. package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
  121. package/package.json +31 -22
  122. package/dist/index.js +0 -8
  123. package/dist/test/forge/writeInterop.d.ts +0 -2
  124. package/dist/test/utils/addresses.d.ts +0 -5
  125. package/dist/test/utils/hexToDecimalString.d.ts +0 -2
  126. package/dist/test/utils/permit2.d.ts +0 -7
  127. package/dist/test/utils/uniswapData.d.ts +0 -24
  128. package/dist/universal-router-sdk.cjs.development.js +0 -1925
  129. package/dist/universal-router-sdk.cjs.development.js.map +0 -1
  130. package/dist/universal-router-sdk.cjs.production.min.js +0 -2
  131. package/dist/universal-router-sdk.cjs.production.min.js.map +0 -1
  132. package/dist/universal-router-sdk.esm.js +0 -1912
  133. package/dist/universal-router-sdk.esm.js.map +0 -1
@@ -0,0 +1,51 @@
1
+ import invariant from 'tiny-invariant';
2
+ import { ethers } from 'ethers';
3
+ import { validateAndParseAddress } from '@uniswap/sdk-core';
4
+ import { NonfungiblePositionManager } from '@uniswap/v3-sdk';
5
+ import { CommandType } from './routerCommands';
6
+ import { ROUTER_AS_RECIPIENT } from './constants';
7
+ const SIGNATURE_LENGTH = 65;
8
+ const EIP_2098_SIGNATURE_LENGTH = 64;
9
+ export function encodePermit(planner, permit2) {
10
+ let signature = permit2.signature;
11
+ const length = ethers.utils.arrayify(permit2.signature).length;
12
+ // signature data provided for EIP-1271 may have length different from ECDSA signature
13
+ if (length === SIGNATURE_LENGTH || length === EIP_2098_SIGNATURE_LENGTH) {
14
+ // sanitizes signature to cover edge cases of malformed EIP-2098 sigs and v used as recovery id
15
+ signature = ethers.utils.joinSignature(ethers.utils.splitSignature(permit2.signature));
16
+ }
17
+ planner.addCommand(CommandType.PERMIT2_PERMIT, [permit2, signature]);
18
+ }
19
+ export function encodeV3PositionPermit(planner, permit, tokenId) {
20
+ const calldata = NonfungiblePositionManager.INTERFACE.encodeFunctionData('permit', [
21
+ validateAndParseAddress(permit.spender),
22
+ tokenId,
23
+ permit.deadline,
24
+ permit.v,
25
+ permit.r,
26
+ permit.s,
27
+ ]);
28
+ planner.addCommand(CommandType.V3_POSITION_MANAGER_PERMIT, [calldata]);
29
+ }
30
+ // Handles the encoding of commands needed to gather input tokens for a trade
31
+ // Approval: The router approving another address to take tokens.
32
+ // note: Only seaport and sudoswap support this action. Approvals are left open.
33
+ // Permit: A Permit2 signature-based Permit to allow the router to access a user's tokens
34
+ // Transfer: A Permit2 TransferFrom of tokens from a user to either the router or another address
35
+ export function encodeInputTokenOptions(planner, options) {
36
+ // first ensure that all tokens provided for encoding are the same
37
+ if (!!options.permit2TransferFrom && !!options.permit2Permit)
38
+ invariant(options.permit2TransferFrom.token === options.permit2Permit.details.token, `inconsistent token`);
39
+ // if this order has a options.permit2Permit, encode it
40
+ if (!!options.permit2Permit) {
41
+ encodePermit(planner, options.permit2Permit);
42
+ }
43
+ if (!!options.permit2TransferFrom) {
44
+ planner.addCommand(CommandType.PERMIT2_TRANSFER_FROM, [
45
+ options.permit2TransferFrom.token,
46
+ options.permit2TransferFrom.recipient ? options.permit2TransferFrom.recipient : ROUTER_AS_RECIPIENT,
47
+ options.permit2TransferFrom.amount,
48
+ ]);
49
+ }
50
+ }
51
+ //# sourceMappingURL=inputTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputTokens.js","sourceRoot":"","sources":["../../../../src/utils/inputTokens.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,uBAAuB,EAAa,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAoB,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAsBjD,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAEpC,MAAM,UAAU,YAAY,CAAC,OAAqB,EAAE,OAAsB;IACxE,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAA;IAC9D,sFAAsF;IACtF,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,yBAAyB,EAAE;QACvE,+FAA+F;QAC/F,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;KACvF;IAED,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAqB,EAAE,MAAwB,EAAE,OAAkB;IACxG,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE;QACjF,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,OAAO;QACP,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,CAAC;QACR,MAAM,CAAC,CAAC;QACR,MAAM,CAAC,CAAC;KACT,CAAC,CAAA;IAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,CAAC;AAED,6EAA6E;AAC7E,iEAAiE;AACjE,kFAAkF;AAClF,yFAAyF;AACzF,iGAAiG;AACjG,MAAM,UAAU,uBAAuB,CAAC,OAAqB,EAAE,OAA0B;IACvF,kEAAkE;IAClE,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa;QAC1D,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,KAAK,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;IAE5G,uDAAuD;IACvD,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE;QAC3B,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;KAC7C;IAED,IAAI,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE;QACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,qBAAqB,EAAE;YACpD,OAAO,CAAC,mBAAmB,CAAC,KAAK;YACjC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB;YACnG,OAAO,CAAC,mBAAmB,CAAC,MAAM;SACnC,CAAC,CAAA;KACH;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BigNumber } from 'ethers';
2
+ import JSBI from 'jsbi';
3
+ import { Percent } from '@uniswap/sdk-core';
4
+ export declare function expandTo18DecimalsBN(n: number): BigNumber;
5
+ export declare function expandTo18Decimals(n: number): JSBI;
6
+ export declare function encodeFeeBips(fee: Percent): string;
7
+ export declare function encodeFee1e18(fee: Percent): string;
@@ -0,0 +1,19 @@
1
+ import { BigNumber } from 'ethers';
2
+ import JSBI from 'jsbi';
3
+ import bn from 'bignumber.js';
4
+ import { toHex } from '@uniswap/v3-sdk';
5
+ export function expandTo18DecimalsBN(n) {
6
+ // use bn intermediately to allow decimals in intermediate calculations
7
+ return BigNumber.from(new bn(n).times(new bn(10).pow(18)).toFixed());
8
+ }
9
+ export function expandTo18Decimals(n) {
10
+ return JSBI.BigInt(BigNumber.from(n).mul(BigNumber.from(10).pow(18)).toString());
11
+ }
12
+ export function encodeFeeBips(fee) {
13
+ return toHex(fee.multiply(10000).quotient);
14
+ }
15
+ const FULL_PORTION_PRECISION = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(18));
16
+ export function encodeFee1e18(fee) {
17
+ return toHex(fee.multiply(FULL_PORTION_PRECISION).quotient);
18
+ }
19
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../../src/utils/numbers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7B,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEvC,MAAM,UAAU,oBAAoB,CAAC,CAAS;IAC5C,uEAAuE;IACvE,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AAElF,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC7D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Currency } from '@uniswap/sdk-core';
2
+ import { TPool } from '@uniswap/router-sdk';
3
+ export declare function getPathCurrency(currency: Currency, pool: TPool): Currency;
@@ -0,0 +1,23 @@
1
+ import { Pool as V4Pool } from '@uniswap/v4-sdk';
2
+ export function getPathCurrency(currency, pool) {
3
+ // return currency if the currency matches a currency of the pool
4
+ if (pool.involvesToken(currency)) {
5
+ return currency;
6
+ // return if currency.wrapped if pool involves wrapped currency
7
+ }
8
+ else if (pool.involvesToken(currency.wrapped)) {
9
+ return currency.wrapped;
10
+ // return native currency if pool involves native version of wrapped currency (only applies to V4)
11
+ }
12
+ else if (pool instanceof V4Pool && pool.token0.wrapped.equals(currency)) {
13
+ return pool.token0;
14
+ }
15
+ else if (pool instanceof V4Pool && pool.token1.wrapped.equals(currency)) {
16
+ return pool.token1;
17
+ }
18
+ else {
19
+ throw new Error(`Expected currency ${currency.symbol} to be either ${pool.token0.symbol} or ${pool.token1.symbol}`);
20
+ }
21
+ return currency; // this line needed for typescript to compile
22
+ }
23
+ //# sourceMappingURL=pathCurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathCurrency.js","sourceRoot":"","sources":["../../../../src/utils/pathCurrency.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAGhD,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,IAAW;IAC7D,iEAAiE;IACjE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAiB,CAAC,EAAE;QACzC,OAAO,QAAQ,CAAA;QAEf,+DAA+D;KAChE;SAAM,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAgB,CAAC,EAAE;QACxD,OAAO,QAAQ,CAAC,OAAO,CAAA;QAEvB,kGAAkG;KACnG;SAAM,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM,IAAI,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzE,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;KACpH;IAED,OAAO,QAAQ,CAAA,CAAC,6CAA6C;AAC/D,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { URVersion } from '@uniswap/v4-sdk';
2
+ import { AcrossV4DepositV3Params } from '../entities/actions/across';
3
+ /**
4
+ * CommandTypes
5
+ * @description Flags that modify a command's execution
6
+ * @enum {number}
7
+ */
8
+ export declare enum CommandType {
9
+ V3_SWAP_EXACT_IN = 0,
10
+ V3_SWAP_EXACT_OUT = 1,
11
+ PERMIT2_TRANSFER_FROM = 2,
12
+ PERMIT2_PERMIT_BATCH = 3,
13
+ SWEEP = 4,
14
+ TRANSFER = 5,
15
+ PAY_PORTION = 6,
16
+ PAY_PORTION_FULL_PRECISION = 7,
17
+ V2_SWAP_EXACT_IN = 8,
18
+ V2_SWAP_EXACT_OUT = 9,
19
+ PERMIT2_PERMIT = 10,
20
+ WRAP_ETH = 11,
21
+ UNWRAP_WETH = 12,
22
+ PERMIT2_TRANSFER_FROM_BATCH = 13,
23
+ BALANCE_CHECK_ERC20 = 14,
24
+ V4_SWAP = 16,
25
+ V3_POSITION_MANAGER_PERMIT = 17,
26
+ V3_POSITION_MANAGER_CALL = 18,
27
+ V4_INITIALIZE_POOL = 19,
28
+ V4_POSITION_MANAGER_CALL = 20,
29
+ EXECUTE_SUB_PLAN = 33,
30
+ ACROSS_V4_DEPOSIT_V3 = 64
31
+ }
32
+ export declare enum Subparser {
33
+ V3PathExactIn = 0,
34
+ V3PathExactOut = 1
35
+ }
36
+ export declare enum Parser {
37
+ Abi = 0,
38
+ V4Actions = 1,
39
+ V3Actions = 2
40
+ }
41
+ export type ParamType = {
42
+ readonly name: string;
43
+ readonly type: string;
44
+ readonly subparser?: Subparser;
45
+ };
46
+ export type CommandDefinition = {
47
+ parser: Parser.Abi;
48
+ params: ParamType[];
49
+ } | {
50
+ parser: Parser.V4Actions;
51
+ } | {
52
+ parser: Parser.V3Actions;
53
+ };
54
+ export declare const COMMAND_DEFINITION: {
55
+ [key in CommandType]: CommandDefinition;
56
+ };
57
+ export declare const V2V3_SWAP_COMMANDS_V2_1_1: {
58
+ [key: number]: CommandDefinition;
59
+ };
60
+ export declare class RoutePlanner {
61
+ commands: string;
62
+ inputs: string[];
63
+ constructor();
64
+ addSubPlan(subplan: RoutePlanner): RoutePlanner;
65
+ addCommand(type: CommandType, parameters: any[], allowRevert?: boolean, urVersion?: URVersion): RoutePlanner;
66
+ /**
67
+ * Add Across bridge deposit command for cross-chain bridging
68
+ * @param params AcrossV4DepositV3Params containing bridge parameters
69
+ * @returns RoutePlanner instance for chaining
70
+ */
71
+ addAcrossBridge(params: AcrossV4DepositV3Params): RoutePlanner;
72
+ }
73
+ export type RouterCommand = {
74
+ type: CommandType;
75
+ encodedInput: string;
76
+ };
77
+ export declare function createCommand(type: CommandType, parameters: any[], urVersion?: URVersion): RouterCommand;
@@ -0,0 +1,329 @@
1
+ import { defaultAbiCoder } from 'ethers/lib/utils';
2
+ import { isAtLeastV2_1_1 } from '@uniswap/v4-sdk';
3
+ /**
4
+ * CommandTypes
5
+ * @description Flags that modify a command's execution
6
+ * @enum {number}
7
+ */
8
+ export var CommandType;
9
+ (function (CommandType) {
10
+ CommandType[CommandType["V3_SWAP_EXACT_IN"] = 0] = "V3_SWAP_EXACT_IN";
11
+ CommandType[CommandType["V3_SWAP_EXACT_OUT"] = 1] = "V3_SWAP_EXACT_OUT";
12
+ CommandType[CommandType["PERMIT2_TRANSFER_FROM"] = 2] = "PERMIT2_TRANSFER_FROM";
13
+ CommandType[CommandType["PERMIT2_PERMIT_BATCH"] = 3] = "PERMIT2_PERMIT_BATCH";
14
+ CommandType[CommandType["SWEEP"] = 4] = "SWEEP";
15
+ CommandType[CommandType["TRANSFER"] = 5] = "TRANSFER";
16
+ CommandType[CommandType["PAY_PORTION"] = 6] = "PAY_PORTION";
17
+ CommandType[CommandType["PAY_PORTION_FULL_PRECISION"] = 7] = "PAY_PORTION_FULL_PRECISION";
18
+ CommandType[CommandType["V2_SWAP_EXACT_IN"] = 8] = "V2_SWAP_EXACT_IN";
19
+ CommandType[CommandType["V2_SWAP_EXACT_OUT"] = 9] = "V2_SWAP_EXACT_OUT";
20
+ CommandType[CommandType["PERMIT2_PERMIT"] = 10] = "PERMIT2_PERMIT";
21
+ CommandType[CommandType["WRAP_ETH"] = 11] = "WRAP_ETH";
22
+ CommandType[CommandType["UNWRAP_WETH"] = 12] = "UNWRAP_WETH";
23
+ CommandType[CommandType["PERMIT2_TRANSFER_FROM_BATCH"] = 13] = "PERMIT2_TRANSFER_FROM_BATCH";
24
+ CommandType[CommandType["BALANCE_CHECK_ERC20"] = 14] = "BALANCE_CHECK_ERC20";
25
+ CommandType[CommandType["V4_SWAP"] = 16] = "V4_SWAP";
26
+ CommandType[CommandType["V3_POSITION_MANAGER_PERMIT"] = 17] = "V3_POSITION_MANAGER_PERMIT";
27
+ CommandType[CommandType["V3_POSITION_MANAGER_CALL"] = 18] = "V3_POSITION_MANAGER_CALL";
28
+ CommandType[CommandType["V4_INITIALIZE_POOL"] = 19] = "V4_INITIALIZE_POOL";
29
+ CommandType[CommandType["V4_POSITION_MANAGER_CALL"] = 20] = "V4_POSITION_MANAGER_CALL";
30
+ CommandType[CommandType["EXECUTE_SUB_PLAN"] = 33] = "EXECUTE_SUB_PLAN";
31
+ // 3rd party integrations (0x40-0x5f range)
32
+ CommandType[CommandType["ACROSS_V4_DEPOSIT_V3"] = 64] = "ACROSS_V4_DEPOSIT_V3";
33
+ })(CommandType || (CommandType = {}));
34
+ export var Subparser;
35
+ (function (Subparser) {
36
+ Subparser[Subparser["V3PathExactIn"] = 0] = "V3PathExactIn";
37
+ Subparser[Subparser["V3PathExactOut"] = 1] = "V3PathExactOut";
38
+ })(Subparser || (Subparser = {}));
39
+ export var Parser;
40
+ (function (Parser) {
41
+ Parser[Parser["Abi"] = 0] = "Abi";
42
+ Parser[Parser["V4Actions"] = 1] = "V4Actions";
43
+ Parser[Parser["V3Actions"] = 2] = "V3Actions";
44
+ })(Parser || (Parser = {}));
45
+ const ALLOW_REVERT_FLAG = 0x80;
46
+ const REVERTIBLE_COMMANDS = new Set([CommandType.EXECUTE_SUB_PLAN]);
47
+ const PERMIT_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce) details,address spender,uint256 sigDeadline)';
48
+ const PERMIT_BATCH_STRUCT = '((address token,uint160 amount,uint48 expiration,uint48 nonce)[] details,address spender,uint256 sigDeadline)';
49
+ const POOL_KEY_STRUCT = '(address currency0,address currency1,uint24 fee,int24 tickSpacing,address hooks)';
50
+ const PERMIT2_TRANSFER_FROM_STRUCT = '(address from,address to,uint160 amount,address token)';
51
+ const PERMIT2_TRANSFER_FROM_BATCH_STRUCT = PERMIT2_TRANSFER_FROM_STRUCT + '[]';
52
+ export const COMMAND_DEFINITION = {
53
+ // Batch Reverts
54
+ [CommandType.EXECUTE_SUB_PLAN]: {
55
+ parser: Parser.Abi,
56
+ params: [
57
+ { name: 'commands', type: 'bytes' },
58
+ { name: 'inputs', type: 'bytes[]' },
59
+ ],
60
+ },
61
+ // Permit2 Actions
62
+ [CommandType.PERMIT2_PERMIT]: {
63
+ parser: Parser.Abi,
64
+ params: [
65
+ { name: 'permit', type: PERMIT_STRUCT },
66
+ { name: 'signature', type: 'bytes' },
67
+ ],
68
+ },
69
+ [CommandType.PERMIT2_PERMIT_BATCH]: {
70
+ parser: Parser.Abi,
71
+ params: [
72
+ { name: 'permit', type: PERMIT_BATCH_STRUCT },
73
+ { name: 'signature', type: 'bytes' },
74
+ ],
75
+ },
76
+ [CommandType.PERMIT2_TRANSFER_FROM]: {
77
+ parser: Parser.Abi,
78
+ params: [
79
+ { name: 'token', type: 'address' },
80
+ { name: 'recipient', type: 'address' },
81
+ { name: 'amount', type: 'uint160' },
82
+ ],
83
+ },
84
+ [CommandType.PERMIT2_TRANSFER_FROM_BATCH]: {
85
+ parser: Parser.Abi,
86
+ params: [
87
+ {
88
+ name: 'transferFrom',
89
+ type: PERMIT2_TRANSFER_FROM_BATCH_STRUCT,
90
+ },
91
+ ],
92
+ },
93
+ // Uniswap Actions
94
+ [CommandType.V3_SWAP_EXACT_IN]: {
95
+ parser: Parser.Abi,
96
+ params: [
97
+ { name: 'recipient', type: 'address' },
98
+ { name: 'amountIn', type: 'uint256' },
99
+ { name: 'amountOutMin', type: 'uint256' },
100
+ { name: 'path', subparser: Subparser.V3PathExactIn, type: 'bytes' },
101
+ { name: 'payerIsUser', type: 'bool' },
102
+ ],
103
+ },
104
+ [CommandType.V3_SWAP_EXACT_OUT]: {
105
+ parser: Parser.Abi,
106
+ params: [
107
+ { name: 'recipient', type: 'address' },
108
+ { name: 'amountOut', type: 'uint256' },
109
+ { name: 'amountInMax', type: 'uint256' },
110
+ { name: 'path', subparser: Subparser.V3PathExactOut, type: 'bytes' },
111
+ { name: 'payerIsUser', type: 'bool' },
112
+ ],
113
+ },
114
+ [CommandType.V2_SWAP_EXACT_IN]: {
115
+ parser: Parser.Abi,
116
+ params: [
117
+ { name: 'recipient', type: 'address' },
118
+ { name: 'amountIn', type: 'uint256' },
119
+ { name: 'amountOutMin', type: 'uint256' },
120
+ { name: 'path', type: 'address[]' },
121
+ { name: 'payerIsUser', type: 'bool' },
122
+ ],
123
+ },
124
+ [CommandType.V2_SWAP_EXACT_OUT]: {
125
+ parser: Parser.Abi,
126
+ params: [
127
+ { name: 'recipient', type: 'address' },
128
+ { name: 'amountOut', type: 'uint256' },
129
+ { name: 'amountInMax', type: 'uint256' },
130
+ { name: 'path', type: 'address[]' },
131
+ { name: 'payerIsUser', type: 'bool' },
132
+ ],
133
+ },
134
+ [CommandType.V4_SWAP]: { parser: Parser.V4Actions },
135
+ // Token Actions and Checks
136
+ [CommandType.WRAP_ETH]: {
137
+ parser: Parser.Abi,
138
+ params: [
139
+ { name: 'recipient', type: 'address' },
140
+ { name: 'amount', type: 'uint256' },
141
+ ],
142
+ },
143
+ [CommandType.UNWRAP_WETH]: {
144
+ parser: Parser.Abi,
145
+ params: [
146
+ { name: 'recipient', type: 'address' },
147
+ { name: 'amountMin', type: 'uint256' },
148
+ ],
149
+ },
150
+ [CommandType.SWEEP]: {
151
+ parser: Parser.Abi,
152
+ params: [
153
+ { name: 'token', type: 'address' },
154
+ { name: 'recipient', type: 'address' },
155
+ { name: 'amountMin', type: 'uint256' },
156
+ ],
157
+ },
158
+ [CommandType.TRANSFER]: {
159
+ parser: Parser.Abi,
160
+ params: [
161
+ { name: 'token', type: 'address' },
162
+ { name: 'recipient', type: 'address' },
163
+ { name: 'value', type: 'uint256' },
164
+ ],
165
+ },
166
+ [CommandType.PAY_PORTION]: {
167
+ parser: Parser.Abi,
168
+ params: [
169
+ { name: 'token', type: 'address' },
170
+ { name: 'recipient', type: 'address' },
171
+ { name: 'bips', type: 'uint256' },
172
+ ],
173
+ },
174
+ [CommandType.PAY_PORTION_FULL_PRECISION]: {
175
+ parser: Parser.Abi,
176
+ params: [
177
+ { name: 'token', type: 'address' },
178
+ { name: 'recipient', type: 'address' },
179
+ { name: 'portion', type: 'uint256' },
180
+ ],
181
+ },
182
+ [CommandType.BALANCE_CHECK_ERC20]: {
183
+ parser: Parser.Abi,
184
+ params: [
185
+ { name: 'owner', type: 'address' },
186
+ { name: 'token', type: 'address' },
187
+ { name: 'minBalance', type: 'uint256' },
188
+ ],
189
+ },
190
+ [CommandType.V4_INITIALIZE_POOL]: {
191
+ parser: Parser.Abi,
192
+ params: [
193
+ { name: 'poolKey', type: POOL_KEY_STRUCT },
194
+ { name: 'sqrtPriceX96', type: 'uint160' },
195
+ ],
196
+ },
197
+ // Position Actions
198
+ [CommandType.V3_POSITION_MANAGER_PERMIT]: { parser: Parser.V3Actions },
199
+ [CommandType.V3_POSITION_MANAGER_CALL]: { parser: Parser.V3Actions },
200
+ [CommandType.V4_POSITION_MANAGER_CALL]: { parser: Parser.V4Actions },
201
+ // 3rd Party Integrations
202
+ [CommandType.ACROSS_V4_DEPOSIT_V3]: {
203
+ parser: Parser.Abi,
204
+ params: [
205
+ { name: 'depositor', type: 'address' },
206
+ { name: 'recipient', type: 'address' },
207
+ { name: 'inputToken', type: 'address' },
208
+ { name: 'outputToken', type: 'address' },
209
+ { name: 'inputAmount', type: 'uint256' },
210
+ { name: 'outputAmount', type: 'uint256' },
211
+ { name: 'destinationChainId', type: 'uint256' },
212
+ { name: 'exclusiveRelayer', type: 'address' },
213
+ { name: 'quoteTimestamp', type: 'uint32' },
214
+ { name: 'fillDeadline', type: 'uint32' },
215
+ { name: 'exclusivityDeadline', type: 'uint32' },
216
+ { name: 'message', type: 'bytes' },
217
+ { name: 'useNative', type: 'bool' },
218
+ ],
219
+ },
220
+ };
221
+ // V2.1.1 ABI definitions for V2/V3 swap commands (extended with maxHopSlippage)
222
+ export const V2V3_SWAP_COMMANDS_V2_1_1 = {
223
+ [CommandType.V3_SWAP_EXACT_IN]: {
224
+ parser: Parser.Abi,
225
+ params: [
226
+ { name: 'recipient', type: 'address' },
227
+ { name: 'amountIn', type: 'uint256' },
228
+ { name: 'amountOutMin', type: 'uint256' },
229
+ { name: 'path', subparser: Subparser.V3PathExactIn, type: 'bytes' },
230
+ { name: 'payerIsUser', type: 'bool' },
231
+ { name: 'maxHopSlippage', type: 'uint256[]' },
232
+ ],
233
+ },
234
+ [CommandType.V3_SWAP_EXACT_OUT]: {
235
+ parser: Parser.Abi,
236
+ params: [
237
+ { name: 'recipient', type: 'address' },
238
+ { name: 'amountOut', type: 'uint256' },
239
+ { name: 'amountInMax', type: 'uint256' },
240
+ { name: 'path', subparser: Subparser.V3PathExactOut, type: 'bytes' },
241
+ { name: 'payerIsUser', type: 'bool' },
242
+ { name: 'maxHopSlippage', type: 'uint256[]' },
243
+ ],
244
+ },
245
+ [CommandType.V2_SWAP_EXACT_IN]: {
246
+ parser: Parser.Abi,
247
+ params: [
248
+ { name: 'recipient', type: 'address' },
249
+ { name: 'amountIn', type: 'uint256' },
250
+ { name: 'amountOutMin', type: 'uint256' },
251
+ { name: 'path', type: 'address[]' },
252
+ { name: 'payerIsUser', type: 'bool' },
253
+ { name: 'maxHopSlippage', type: 'uint256[]' },
254
+ ],
255
+ },
256
+ [CommandType.V2_SWAP_EXACT_OUT]: {
257
+ parser: Parser.Abi,
258
+ params: [
259
+ { name: 'recipient', type: 'address' },
260
+ { name: 'amountOut', type: 'uint256' },
261
+ { name: 'amountInMax', type: 'uint256' },
262
+ { name: 'path', type: 'address[]' },
263
+ { name: 'payerIsUser', type: 'bool' },
264
+ { name: 'maxHopSlippage', type: 'uint256[]' },
265
+ ],
266
+ },
267
+ };
268
+ export class RoutePlanner {
269
+ constructor() {
270
+ this.commands = '0x';
271
+ this.inputs = [];
272
+ }
273
+ addSubPlan(subplan) {
274
+ this.addCommand(CommandType.EXECUTE_SUB_PLAN, [subplan.commands, subplan.inputs], true);
275
+ return this;
276
+ }
277
+ addCommand(type, parameters, allowRevert = false, urVersion) {
278
+ let command = createCommand(type, parameters, urVersion);
279
+ this.inputs.push(command.encodedInput);
280
+ if (allowRevert) {
281
+ if (!REVERTIBLE_COMMANDS.has(command.type)) {
282
+ throw new Error(`command type: ${command.type} cannot be allowed to revert`);
283
+ }
284
+ command.type = command.type | ALLOW_REVERT_FLAG;
285
+ }
286
+ this.commands = this.commands.concat(command.type.toString(16).padStart(2, '0'));
287
+ return this;
288
+ }
289
+ /**
290
+ * Add Across bridge deposit command for cross-chain bridging
291
+ * @param params AcrossV4DepositV3Params containing bridge parameters
292
+ * @returns RoutePlanner instance for chaining
293
+ */
294
+ addAcrossBridge(params) {
295
+ this.addCommand(CommandType.ACROSS_V4_DEPOSIT_V3, [
296
+ params.depositor,
297
+ params.recipient,
298
+ params.inputToken,
299
+ params.outputToken,
300
+ params.inputAmount,
301
+ params.outputAmount,
302
+ params.destinationChainId,
303
+ params.exclusiveRelayer,
304
+ params.quoteTimestamp,
305
+ params.fillDeadline,
306
+ params.exclusivityDeadline,
307
+ params.message,
308
+ params.useNative,
309
+ ]);
310
+ return this;
311
+ }
312
+ }
313
+ export function createCommand(type, parameters, urVersion) {
314
+ const commandDef = isAtLeastV2_1_1(urVersion) && type in V2V3_SWAP_COMMANDS_V2_1_1
315
+ ? V2V3_SWAP_COMMANDS_V2_1_1[type]
316
+ : COMMAND_DEFINITION[type];
317
+ switch (commandDef.parser) {
318
+ case Parser.Abi:
319
+ const encodedInput = defaultAbiCoder.encode(commandDef.params.map((abi) => abi.type), parameters);
320
+ return { type, encodedInput };
321
+ case Parser.V4Actions:
322
+ // v4 swap data comes pre-encoded at index 0
323
+ return { type, encodedInput: parameters[0] };
324
+ case Parser.V3Actions:
325
+ // v3 swap data comes pre-encoded at index 0
326
+ return { type, encodedInput: parameters[0] };
327
+ }
328
+ }
329
+ //# sourceMappingURL=routerCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerCommands.js","sourceRoot":"","sources":["../../../../src/utils/routerCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { Trade as RouterTrade } from '@uniswap/router-sdk';
2
+ import { Currency, TradeType } from '@uniswap/sdk-core';
3
+ export type TokenInRoute = {
4
+ address: string;
5
+ chainId: number;
6
+ symbol: string;
7
+ decimals: string;
8
+ name?: string;
9
+ buyFeeBps?: string;
10
+ sellFeeBps?: string;
11
+ };
12
+ export declare enum PoolType {
13
+ V2Pool = "v2-pool",
14
+ V3Pool = "v3-pool",
15
+ V4Pool = "v4-pool"
16
+ }
17
+ export type V2Reserve = {
18
+ token: TokenInRoute;
19
+ quotient: string;
20
+ };
21
+ export type V2PoolInRoute = {
22
+ type: PoolType.V2Pool;
23
+ address?: string;
24
+ tokenIn: TokenInRoute;
25
+ tokenOut: TokenInRoute;
26
+ reserve0: V2Reserve;
27
+ reserve1: V2Reserve;
28
+ amountIn?: string;
29
+ amountOut?: string;
30
+ };
31
+ export type V3PoolInRoute = {
32
+ type: PoolType.V3Pool;
33
+ address?: string;
34
+ tokenIn: TokenInRoute;
35
+ tokenOut: TokenInRoute;
36
+ sqrtRatioX96: string;
37
+ liquidity: string;
38
+ tickCurrent: string;
39
+ fee: string;
40
+ amountIn?: string;
41
+ amountOut?: string;
42
+ };
43
+ export type V4PoolInRoute = {
44
+ type: PoolType.V4Pool;
45
+ address?: string;
46
+ tokenIn: TokenInRoute;
47
+ tokenOut: TokenInRoute;
48
+ fee: string;
49
+ tickSpacing: string;
50
+ hooks: string;
51
+ liquidity: string;
52
+ sqrtRatioX96: string;
53
+ tickCurrent: string;
54
+ amountIn?: string;
55
+ amountOut?: string;
56
+ };
57
+ export type PartialClassicQuote = {
58
+ tokenIn: string;
59
+ tokenOut: string;
60
+ tradeType: TradeType;
61
+ route: Array<(V4PoolInRoute | V3PoolInRoute | V2PoolInRoute)[]>;
62
+ };
63
+ export declare const isNativeCurrency: (address: string) => boolean;
64
+ export declare class RouterTradeAdapter {
65
+ static fromClassicQuote(quote: PartialClassicQuote): RouterTrade<Currency, Currency, TradeType>;
66
+ private static toCurrency;
67
+ private static toPoolOrPair;
68
+ private static toToken;
69
+ private static toV3Pool;
70
+ private static toV4Pool;
71
+ private static toPair;
72
+ private static isVersionedRoute;
73
+ }