@synthra-swap/sdk 0.1.4

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 (235) hide show
  1. package/README.md +12 -0
  2. package/chains.d.ts +1 -0
  3. package/chains.js +1 -0
  4. package/core.d.ts +1 -0
  5. package/core.js +1 -0
  6. package/dist/chain-registry.d.ts +22 -0
  7. package/dist/chain-registry.js +315 -0
  8. package/dist/chain-registry.js.map +1 -0
  9. package/dist/chains.d.ts +5 -0
  10. package/dist/chains.js +29 -0
  11. package/dist/chains.js.map +1 -0
  12. package/dist/core/addresses.d.ts +21 -0
  13. package/dist/core/addresses.js +76 -0
  14. package/dist/core/addresses.js.map +1 -0
  15. package/dist/core/chains.d.ts +51 -0
  16. package/dist/core/chains.js +82 -0
  17. package/dist/core/chains.js.map +1 -0
  18. package/dist/core/constants.d.ts +12 -0
  19. package/dist/core/constants.js +20 -0
  20. package/dist/core/constants.js.map +1 -0
  21. package/dist/core/entities/baseCurrency.d.ts +48 -0
  22. package/dist/core/entities/baseCurrency.js +29 -0
  23. package/dist/core/entities/baseCurrency.js.map +1 -0
  24. package/dist/core/entities/currency.d.ts +3 -0
  25. package/dist/core/entities/currency.js +3 -0
  26. package/dist/core/entities/currency.js.map +1 -0
  27. package/dist/core/entities/ether.d.ts +13 -0
  28. package/dist/core/entities/ether.js +32 -0
  29. package/dist/core/entities/ether.js.map +1 -0
  30. package/dist/core/entities/fractions/currencyAmount.d.ts +31 -0
  31. package/dist/core/entities/fractions/currencyAmount.js +74 -0
  32. package/dist/core/entities/fractions/currencyAmount.js.map +1 -0
  33. package/dist/core/entities/fractions/fraction.d.ts +24 -0
  34. package/dist/core/entities/fractions/fraction.js +106 -0
  35. package/dist/core/entities/fractions/fraction.js.map +1 -0
  36. package/dist/core/entities/fractions/index.d.ts +4 -0
  37. package/dist/core/entities/fractions/index.js +12 -0
  38. package/dist/core/entities/fractions/index.js.map +1 -0
  39. package/dist/core/entities/fractions/percent.d.ts +14 -0
  40. package/dist/core/entities/fractions/percent.js +45 -0
  41. package/dist/core/entities/fractions/percent.js.map +1 -0
  42. package/dist/core/entities/fractions/price.d.ts +38 -0
  43. package/dist/core/entities/fractions/price.js +75 -0
  44. package/dist/core/entities/fractions/price.js.map +1 -0
  45. package/dist/core/entities/index.d.ts +7 -0
  46. package/dist/core/entities/index.js +24 -0
  47. package/dist/core/entities/index.js.map +1 -0
  48. package/dist/core/entities/nativeCurrency.d.ts +8 -0
  49. package/dist/core/entities/nativeCurrency.js +16 -0
  50. package/dist/core/entities/nativeCurrency.js.map +1 -0
  51. package/dist/core/entities/nativeOnChain.d.ts +19 -0
  52. package/dist/core/entities/nativeOnChain.js +141 -0
  53. package/dist/core/entities/nativeOnChain.js.map +1 -0
  54. package/dist/core/entities/token.d.ts +48 -0
  55. package/dist/core/entities/token.js +71 -0
  56. package/dist/core/entities/token.js.map +1 -0
  57. package/dist/core/entities/weth9.d.ts +7 -0
  58. package/dist/core/entities/weth9.js +28 -0
  59. package/dist/core/entities/weth9.js.map +1 -0
  60. package/dist/core/index.d.ts +5 -0
  61. package/dist/core/index.js +22 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/utils/computePriceImpact.d.ts +8 -0
  64. package/dist/core/utils/computePriceImpact.js +18 -0
  65. package/dist/core/utils/computePriceImpact.js.map +1 -0
  66. package/dist/core/utils/index.d.ts +4 -0
  67. package/dist/core/utils/index.js +12 -0
  68. package/dist/core/utils/index.js.map +1 -0
  69. package/dist/core/utils/sortedInsert.d.ts +1 -0
  70. package/dist/core/utils/sortedInsert.js +40 -0
  71. package/dist/core/utils/sortedInsert.js.map +1 -0
  72. package/dist/core/utils/sqrt.d.ts +7 -0
  73. package/dist/core/utils/sqrt.js +34 -0
  74. package/dist/core/utils/sqrt.js.map +1 -0
  75. package/dist/core/utils/validateAndParseAddress.d.ts +10 -0
  76. package/dist/core/utils/validateAndParseAddress.js +31 -0
  77. package/dist/core/utils/validateAndParseAddress.js.map +1 -0
  78. package/dist/index.d.ts +4 -0
  79. package/dist/index.js +34 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/universal-router/entities/Command.d.ts +12 -0
  82. package/dist/universal-router/entities/Command.js +9 -0
  83. package/dist/universal-router/entities/Command.js.map +1 -0
  84. package/dist/universal-router/entities/index.d.ts +3 -0
  85. package/dist/universal-router/entities/index.js +20 -0
  86. package/dist/universal-router/entities/index.js.map +1 -0
  87. package/dist/universal-router/entities/protocols/index.d.ts +2 -0
  88. package/dist/universal-router/entities/protocols/index.js +19 -0
  89. package/dist/universal-router/entities/protocols/index.js.map +1 -0
  90. package/dist/universal-router/entities/protocols/uniswap.d.ts +32 -0
  91. package/dist/universal-router/entities/protocols/uniswap.js +143 -0
  92. package/dist/universal-router/entities/protocols/uniswap.js.map +1 -0
  93. package/dist/universal-router/entities/protocols/unwrapWETH.d.ts +12 -0
  94. package/dist/universal-router/entities/protocols/unwrapWETH.js +35 -0
  95. package/dist/universal-router/entities/protocols/unwrapWETH.js.map +1 -0
  96. package/dist/universal-router/entities/trade.d.ts +41 -0
  97. package/dist/universal-router/entities/trade.js +114 -0
  98. package/dist/universal-router/entities/trade.js.map +1 -0
  99. package/dist/universal-router/index.d.ts +5 -0
  100. package/dist/universal-router/index.js +31 -0
  101. package/dist/universal-router/index.js.map +1 -0
  102. package/dist/universal-router/swapRouter.d.ts +29 -0
  103. package/dist/universal-router/swapRouter.js +102 -0
  104. package/dist/universal-router/swapRouter.js.map +1 -0
  105. package/dist/universal-router/utils/constants.d.ts +8 -0
  106. package/dist/universal-router/utils/constants.js +21 -0
  107. package/dist/universal-router/utils/constants.js.map +1 -0
  108. package/dist/universal-router/utils/getNativeCurrencyValue.d.ts +2 -0
  109. package/dist/universal-router/utils/getNativeCurrencyValue.js +19 -0
  110. package/dist/universal-router/utils/getNativeCurrencyValue.js.map +1 -0
  111. package/dist/universal-router/utils/inputTokens.d.ts +16 -0
  112. package/dist/universal-router/utils/inputTokens.js +44 -0
  113. package/dist/universal-router/utils/inputTokens.js.map +1 -0
  114. package/dist/universal-router/utils/numbers.d.ts +6 -0
  115. package/dist/universal-router/utils/numbers.js +24 -0
  116. package/dist/universal-router/utils/numbers.js.map +1 -0
  117. package/dist/universal-router/utils/routerCommands.d.ts +29 -0
  118. package/dist/universal-router/utils/routerCommands.js +64 -0
  119. package/dist/universal-router/utils/routerCommands.js.map +1 -0
  120. package/dist/universal-router/utils/routerTradeAdapter.d.ts +40 -0
  121. package/dist/universal-router/utils/routerTradeAdapter.js +82 -0
  122. package/dist/universal-router/utils/routerTradeAdapter.js.map +1 -0
  123. package/dist/v3/abis.d.ts +6 -0
  124. package/dist/v3/abis.js +39 -0
  125. package/dist/v3/abis.js.map +1 -0
  126. package/dist/v3/constants.d.ts +18 -0
  127. package/dist/v3/constants.js +26 -0
  128. package/dist/v3/constants.js.map +1 -0
  129. package/dist/v3/entities/index.d.ts +7 -0
  130. package/dist/v3/entities/index.js +24 -0
  131. package/dist/v3/entities/index.js.map +1 -0
  132. package/dist/v3/entities/pool.d.ts +81 -0
  133. package/dist/v3/entities/pool.js +215 -0
  134. package/dist/v3/entities/pool.js.map +1 -0
  135. package/dist/v3/entities/position.d.ts +131 -0
  136. package/dist/v3/entities/position.js +250 -0
  137. package/dist/v3/entities/position.js.map +1 -0
  138. package/dist/v3/entities/route.d.ts +26 -0
  139. package/dist/v3/entities/route.js +77 -0
  140. package/dist/v3/entities/route.js.map +1 -0
  141. package/dist/v3/entities/tick.d.ts +13 -0
  142. package/dist/v3/entities/tick.js +19 -0
  143. package/dist/v3/entities/tick.js.map +1 -0
  144. package/dist/v3/entities/tickDataProvider.d.ts +31 -0
  145. package/dist/v3/entities/tickDataProvider.js +18 -0
  146. package/dist/v3/entities/tickDataProvider.js.map +1 -0
  147. package/dist/v3/entities/tickListDataProvider.d.ts +15 -0
  148. package/dist/v3/entities/tickListDataProvider.js +23 -0
  149. package/dist/v3/entities/tickListDataProvider.js.map +1 -0
  150. package/dist/v3/entities/trade.d.ts +220 -0
  151. package/dist/v3/entities/trade.js +442 -0
  152. package/dist/v3/entities/trade.js.map +1 -0
  153. package/dist/v3/index.d.ts +9 -0
  154. package/dist/v3/index.js +26 -0
  155. package/dist/v3/index.js.map +1 -0
  156. package/dist/v3/internalConstants.d.ts +6 -0
  157. package/dist/v3/internalConstants.js +15 -0
  158. package/dist/v3/internalConstants.js.map +1 -0
  159. package/dist/v3/multicall.d.ts +9 -0
  160. package/dist/v3/multicall.js +20 -0
  161. package/dist/v3/multicall.js.map +1 -0
  162. package/dist/v3/nonfungiblePositionManager.d.ts +146 -0
  163. package/dist/v3/nonfungiblePositionManager.js +231 -0
  164. package/dist/v3/nonfungiblePositionManager.js.map +1 -0
  165. package/dist/v3/payments.d.ts +24 -0
  166. package/dist/v3/payments.js +55 -0
  167. package/dist/v3/payments.js.map +1 -0
  168. package/dist/v3/quoter.d.ts +37 -0
  169. package/dist/v3/quoter.js +76 -0
  170. package/dist/v3/quoter.js.map +1 -0
  171. package/dist/v3/selfPermit.d.ts +25 -0
  172. package/dist/v3/selfPermit.js +37 -0
  173. package/dist/v3/selfPermit.js.map +1 -0
  174. package/dist/v3/swapRouter.d.ts +51 -0
  175. package/dist/v3/swapRouter.js +147 -0
  176. package/dist/v3/swapRouter.js.map +1 -0
  177. package/dist/v3/utils/calldata.d.ts +20 -0
  178. package/dist/v3/utils/calldata.js +22 -0
  179. package/dist/v3/utils/calldata.js.map +1 -0
  180. package/dist/v3/utils/computePoolAddress.d.ts +18 -0
  181. package/dist/v3/utils/computePoolAddress.js +22 -0
  182. package/dist/v3/utils/computePoolAddress.js.map +1 -0
  183. package/dist/v3/utils/encodeRouteToPath.d.ts +8 -0
  184. package/dist/v3/utils/encodeRouteToPath.js +32 -0
  185. package/dist/v3/utils/encodeRouteToPath.js.map +1 -0
  186. package/dist/v3/utils/encodeSqrtRatioX96.d.ts +9 -0
  187. package/dist/v3/utils/encodeSqrtRatioX96.js +22 -0
  188. package/dist/v3/utils/encodeSqrtRatioX96.js.map +1 -0
  189. package/dist/v3/utils/fullMath.d.ts +8 -0
  190. package/dist/v3/utils/fullMath.js +23 -0
  191. package/dist/v3/utils/fullMath.js.map +1 -0
  192. package/dist/v3/utils/index.d.ts +17 -0
  193. package/dist/v3/utils/index.js +34 -0
  194. package/dist/v3/utils/index.js.map +1 -0
  195. package/dist/v3/utils/isSorted.d.ts +7 -0
  196. package/dist/v3/utils/isSorted.js +19 -0
  197. package/dist/v3/utils/isSorted.js.map +1 -0
  198. package/dist/v3/utils/liquidityMath.d.ts +8 -0
  199. package/dist/v3/utils/liquidityMath.js +24 -0
  200. package/dist/v3/utils/liquidityMath.js.map +1 -0
  201. package/dist/v3/utils/maxLiquidityForAmounts.d.ts +14 -0
  202. package/dist/v3/utils/maxLiquidityForAmounts.js +89 -0
  203. package/dist/v3/utils/maxLiquidityForAmounts.js.map +1 -0
  204. package/dist/v3/utils/mostSignificantBit.d.ts +2 -0
  205. package/dist/v3/utils/mostSignificantBit.js +29 -0
  206. package/dist/v3/utils/mostSignificantBit.js.map +1 -0
  207. package/dist/v3/utils/nearestUsableTick.d.ts +6 -0
  208. package/dist/v3/utils/nearestUsableTick.js +27 -0
  209. package/dist/v3/utils/nearestUsableTick.js.map +1 -0
  210. package/dist/v3/utils/position.d.ts +8 -0
  211. package/dist/v3/utils/position.js +23 -0
  212. package/dist/v3/utils/position.js.map +1 -0
  213. package/dist/v3/utils/priceTickConversions.d.ts +15 -0
  214. package/dist/v3/utils/priceTickConversions.js +52 -0
  215. package/dist/v3/utils/priceTickConversions.js.map +1 -0
  216. package/dist/v3/utils/sqrtPriceMath.d.ts +13 -0
  217. package/dist/v3/utils/sqrtPriceMath.js +97 -0
  218. package/dist/v3/utils/sqrtPriceMath.js.map +1 -0
  219. package/dist/v3/utils/swapMath.d.ts +9 -0
  220. package/dist/v3/utils/swapMath.js +79 -0
  221. package/dist/v3/utils/swapMath.js.map +1 -0
  222. package/dist/v3/utils/tickLibrary.d.ts +14 -0
  223. package/dist/v3/utils/tickLibrary.js +53 -0
  224. package/dist/v3/utils/tickLibrary.js.map +1 -0
  225. package/dist/v3/utils/tickList.d.ts +23 -0
  226. package/dist/v3/utils/tickList.js +110 -0
  227. package/dist/v3/utils/tickList.js.map +1 -0
  228. package/dist/v3/utils/tickMath.d.ts +34 -0
  229. package/dist/v3/utils/tickMath.js +127 -0
  230. package/dist/v3/utils/tickMath.js.map +1 -0
  231. package/package.json +80 -0
  232. package/universal-router.d.ts +1 -0
  233. package/universal-router.js +1 -0
  234. package/v3.d.ts +1 -0
  235. package/v3.js +1 -0
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sortedInsert = void 0;
7
+ const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
8
+ // given an array of items sorted by `comparator`, insert an item into its sort index and constrain the size to
9
+ // `maxSize` by removing the last item
10
+ function sortedInsert(items, add, maxSize, comparator) {
11
+ (0, tiny_invariant_1.default)(maxSize > 0, 'MAX_SIZE_ZERO');
12
+ // this is an invariant because the interface cannot return multiple removed items if items.length exceeds maxSize
13
+ (0, tiny_invariant_1.default)(items.length <= maxSize, 'ITEMS_SIZE');
14
+ // short circuit first item add
15
+ if (items.length === 0) {
16
+ items.push(add);
17
+ return null;
18
+ }
19
+ else {
20
+ const isFull = items.length === maxSize;
21
+ // short circuit if full and the additional item does not come before the last item
22
+ if (isFull && comparator(items[items.length - 1], add) <= 0) {
23
+ return add;
24
+ }
25
+ let lo = 0, hi = items.length;
26
+ while (lo < hi) {
27
+ const mid = (lo + hi) >>> 1;
28
+ if (comparator(items[mid], add) <= 0) {
29
+ lo = mid + 1;
30
+ }
31
+ else {
32
+ hi = mid;
33
+ }
34
+ }
35
+ items.splice(lo, 0, add);
36
+ return isFull ? items.pop() : null;
37
+ }
38
+ }
39
+ exports.sortedInsert = sortedInsert;
40
+ //# sourceMappingURL=sortedInsert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortedInsert.js","sourceRoot":"","sources":["../../../src/core/utils/sortedInsert.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAEtC,+GAA+G;AAC/G,sCAAsC;AACtC,SAAgB,YAAY,CAAI,KAAU,EAAE,GAAM,EAAE,OAAe,EAAE,UAAkC;IACrG,IAAA,wBAAS,EAAC,OAAO,GAAG,CAAC,EAAE,eAAe,CAAC,CAAA;IACvC,kHAAkH;IAClH,IAAA,wBAAS,EAAC,KAAK,CAAC,MAAM,IAAI,OAAO,EAAE,YAAY,CAAC,CAAA;IAEhD,+BAA+B;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,CAAA;KACZ;SAAM;QACL,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,OAAO,CAAA;QACvC,mFAAmF;QACnF,IAAI,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;YAC3D,OAAO,GAAG,CAAA;SACX;QAED,IAAI,EAAE,GAAG,CAAC,EACR,EAAE,GAAG,KAAK,CAAC,MAAM,CAAA;QAEnB,OAAO,EAAE,GAAG,EAAE,EAAE;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;gBACpC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAA;aACb;iBAAM;gBACL,EAAE,GAAG,GAAG,CAAA;aACT;SACF;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;QACxB,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAG,CAAC,CAAC,CAAC,IAAI,CAAA;KACpC;AACH,CAAC;AA9BD,oCA8BC"}
@@ -0,0 +1,7 @@
1
+ import JSBI from 'jsbi';
2
+ export declare const MAX_SAFE_INTEGER: JSBI;
3
+ /**
4
+ * Computes floor(sqrt(value))
5
+ * @param value the value for which to compute the square root, rounded down
6
+ */
7
+ export declare function sqrt(value: JSBI): JSBI;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sqrt = exports.MAX_SAFE_INTEGER = void 0;
7
+ const jsbi_1 = __importDefault(require("jsbi"));
8
+ const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
9
+ exports.MAX_SAFE_INTEGER = jsbi_1.default.BigInt(Number.MAX_SAFE_INTEGER);
10
+ const ZERO = jsbi_1.default.BigInt(0);
11
+ const ONE = jsbi_1.default.BigInt(1);
12
+ const TWO = jsbi_1.default.BigInt(2);
13
+ /**
14
+ * Computes floor(sqrt(value))
15
+ * @param value the value for which to compute the square root, rounded down
16
+ */
17
+ function sqrt(value) {
18
+ (0, tiny_invariant_1.default)(jsbi_1.default.greaterThanOrEqual(value, ZERO), 'NEGATIVE');
19
+ // rely on built in sqrt if possible
20
+ if (jsbi_1.default.lessThan(value, exports.MAX_SAFE_INTEGER)) {
21
+ return jsbi_1.default.BigInt(Math.floor(Math.sqrt(jsbi_1.default.toNumber(value))));
22
+ }
23
+ let z;
24
+ let x;
25
+ z = value;
26
+ x = jsbi_1.default.add(jsbi_1.default.divide(value, TWO), ONE);
27
+ while (jsbi_1.default.lessThan(x, z)) {
28
+ z = x;
29
+ x = jsbi_1.default.divide(jsbi_1.default.add(jsbi_1.default.divide(value, x), x), TWO);
30
+ }
31
+ return z;
32
+ }
33
+ exports.sqrt = sqrt;
34
+ //# sourceMappingURL=sqrt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqrt.js","sourceRoot":"","sources":["../../../src/core/utils/sqrt.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,oEAAsC;AAEzB,QAAA,gBAAgB,GAAG,cAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAEpE,MAAM,IAAI,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,MAAM,GAAG,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1B,MAAM,GAAG,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE1B;;;GAGG;AACH,SAAgB,IAAI,CAAC,KAAW;IAC9B,IAAA,wBAAS,EAAC,cAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;IAE3D,oCAAoC;IACpC,IAAI,cAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,wBAAgB,CAAC,EAAE;QAC1C,OAAO,cAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KAChE;IAED,IAAI,CAAO,CAAA;IACX,IAAI,CAAO,CAAA;IACX,CAAC,GAAG,KAAK,CAAA;IACT,CAAC,GAAG,cAAI,CAAC,GAAG,CAAC,cAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1C,OAAO,cAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC1B,CAAC,GAAG,CAAC,CAAA;QACL,CAAC,GAAG,cAAI,CAAC,MAAM,CAAC,cAAI,CAAC,GAAG,CAAC,cAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;KACzD;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAjBD,oBAiBC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Validates an address and returns the parsed (checksummed) version of that address
3
+ * @param address the unchecksummed hex address
4
+ */
5
+ export declare function validateAndParseAddress(address: string): string;
6
+ /**
7
+ * Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding.
8
+ * @param address the unchecksummed hex address
9
+ */
10
+ export declare function checkValidAddress(address: string): string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkValidAddress = exports.validateAndParseAddress = void 0;
4
+ const address_1 = require("@ethersproject/address");
5
+ /**
6
+ * Validates an address and returns the parsed (checksummed) version of that address
7
+ * @param address the unchecksummed hex address
8
+ */
9
+ function validateAndParseAddress(address) {
10
+ try {
11
+ return (0, address_1.getAddress)(address);
12
+ }
13
+ catch (error) {
14
+ throw new Error(`${address} is not a valid address.`);
15
+ }
16
+ }
17
+ exports.validateAndParseAddress = validateAndParseAddress;
18
+ // Checks a string starts with 0x, is 42 characters long and contains only hex characters after 0x
19
+ const startsWith0xLen42HexRegex = /^0x[0-9a-fA-F]{40}$/;
20
+ /**
21
+ * Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding.
22
+ * @param address the unchecksummed hex address
23
+ */
24
+ function checkValidAddress(address) {
25
+ if (startsWith0xLen42HexRegex.test(address)) {
26
+ return address;
27
+ }
28
+ throw new Error(`${address} is not a valid address.`);
29
+ }
30
+ exports.checkValidAddress = checkValidAddress;
31
+ //# sourceMappingURL=validateAndParseAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateAndParseAddress.js","sourceRoot":"","sources":["../../../src/core/utils/validateAndParseAddress.ts"],"names":[],"mappings":";;;AAAA,oDAAmD;AAEnD;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,IAAI;QACF,OAAO,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAA;KACtD;AACH,CAAC;AAND,0DAMC;AAED,kGAAkG;AAClG,MAAM,yBAAyB,GAAG,qBAAqB,CAAA;AAEvD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QAC3C,OAAO,OAAO,CAAA;KACf;IAED,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,CAAC,CAAA;AACvD,CAAC;AAND,8CAMC"}
@@ -0,0 +1,4 @@
1
+ export * as Core from './core';
2
+ export * as V3 from './v3';
3
+ export * as UniversalRouter from './universal-router';
4
+ export * from './core';
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.UniversalRouter = exports.V3 = exports.Core = void 0;
30
+ exports.Core = __importStar(require("./core"));
31
+ exports.V3 = __importStar(require("./v3"));
32
+ exports.UniversalRouter = __importStar(require("./universal-router"));
33
+ __exportStar(require("./core"), exports);
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA8B;AAC9B,2CAA0B;AAC1B,sEAAqD;AACrD,yCAAsB"}
@@ -0,0 +1,12 @@
1
+ import { RoutePlanner } from '../utils/routerCommands';
2
+ export type TradeConfig = {
3
+ allowRevert: boolean;
4
+ };
5
+ export declare enum RouterTradeType {
6
+ UniswapTrade = "UniswapTrade",
7
+ UnwrapWETH = "UnwrapWETH"
8
+ }
9
+ export interface Command {
10
+ tradeType: RouterTradeType;
11
+ encode(planner: RoutePlanner, config: TradeConfig): void;
12
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RouterTradeType = void 0;
4
+ var RouterTradeType;
5
+ (function (RouterTradeType) {
6
+ RouterTradeType["UniswapTrade"] = "UniswapTrade";
7
+ RouterTradeType["UnwrapWETH"] = "UnwrapWETH";
8
+ })(RouterTradeType = exports.RouterTradeType || (exports.RouterTradeType = {}));
9
+ //# sourceMappingURL=Command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../src/universal-router/entities/Command.ts"],"names":[],"mappings":";;;AAMA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,gDAA6B,CAAA;IAC7B,4CAAyB,CAAA;AAC3B,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B"}
@@ -0,0 +1,3 @@
1
+ export * from './trade';
2
+ export * from './protocols';
3
+ export * from './Command';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./trade"), exports);
18
+ __exportStar(require("./protocols"), exports);
19
+ __exportStar(require("./Command"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/universal-router/entities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,8CAA2B;AAC3B,4CAAyB"}
@@ -0,0 +1,2 @@
1
+ export * from './uniswap';
2
+ export * from './unwrapWETH';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./uniswap"), exports);
18
+ __exportStar(require("./unwrapWETH"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/universal-router/entities/protocols/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,+CAA4B"}
@@ -0,0 +1,32 @@
1
+ import { RoutePlanner } from '../../utils/routerCommands';
2
+ import { Permit2Permit } from '../../utils/inputTokens';
3
+ import { Currency, TradeType, Percent } from '../../../core';
4
+ import { Command, RouterTradeType, TradeConfig } from '../Command';
5
+ import { SynthraTrade } from '../trade';
6
+ import { BigNumberish } from 'ethers';
7
+ export type FlatFeeOptions = {
8
+ amount: BigNumberish;
9
+ recipient: string;
10
+ };
11
+ export type SwapOptions = {
12
+ slippageTolerance: Percent;
13
+ recipient?: string;
14
+ deadlineOrPreviousBlockhash?: BigNumberish;
15
+ fee?: {
16
+ fee: Percent;
17
+ recipient: string;
18
+ };
19
+ useRouterBalance?: boolean;
20
+ inputTokenPermit?: Permit2Permit;
21
+ flatFee?: FlatFeeOptions;
22
+ safeMode?: boolean;
23
+ };
24
+ export declare class UniswapTrade implements Command {
25
+ trade: SynthraTrade<Currency, Currency, TradeType>;
26
+ options: SwapOptions;
27
+ readonly tradeType: RouterTradeType;
28
+ readonly payerIsUser: boolean;
29
+ constructor(trade: SynthraTrade<Currency, Currency, TradeType>, options: SwapOptions);
30
+ get inputRequiresWrap(): boolean;
31
+ encode(planner: RoutePlanner, _config: TradeConfig): void;
32
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UniswapTrade = void 0;
4
+ const routerCommands_1 = require("../../utils/routerCommands");
5
+ const v3_1 = require("../../../v3");
6
+ const core_1 = require("../../../core");
7
+ const Command_1 = require("../Command");
8
+ const constants_1 = require("../../utils/constants");
9
+ const numbers_1 = require("../../utils/numbers");
10
+ const ethers_1 = require("ethers");
11
+ const REFUND_ETH_PRICE_IMPACT_THRESHOLD = new core_1.Percent(50, 100);
12
+ class UniswapTrade {
13
+ constructor(trade, options) {
14
+ this.trade = trade;
15
+ this.options = options;
16
+ this.tradeType = Command_1.RouterTradeType.UniswapTrade;
17
+ if (!!options.fee && !!options.flatFee)
18
+ throw new Error('Only one fee option permitted');
19
+ if (this.inputRequiresWrap)
20
+ this.payerIsUser = false;
21
+ else if (this.options.useRouterBalance)
22
+ this.payerIsUser = false;
23
+ else
24
+ this.payerIsUser = true;
25
+ }
26
+ get inputRequiresWrap() {
27
+ return this.trade.inputAmount.currency.isNative;
28
+ }
29
+ encode(planner, _config) {
30
+ var _a;
31
+ // If the input currency is the native currency, we need to wrap it with the router as the recipient
32
+ if (this.inputRequiresWrap) {
33
+ planner.addCommand(routerCommands_1.CommandType.WRAP_ETH, [
34
+ constants_1.ROUTER_AS_RECIPIENT,
35
+ this.trade.maximumAmountIn(this.options.slippageTolerance).quotient.toString(),
36
+ ]);
37
+ }
38
+ // The overall recipient at the end of the trade, SENDER_AS_RECIPIENT uses the msg.sender
39
+ this.options.recipient = (_a = this.options.recipient) !== null && _a !== void 0 ? _a : constants_1.SENDER_AS_RECIPIENT;
40
+ // flag for whether we want to perform slippage check on aggregate output of multiple routes
41
+ // 1. when there are >2 exact input trades. this is only a heuristic,
42
+ // as it's still more gas-expensive even in this case, but has benefits
43
+ // in that the reversion probability is lower
44
+ const performAggregatedSlippageCheck = this.trade.tradeType === core_1.TradeType.EXACT_INPUT && this.trade.routes.length > 2;
45
+ const outputIsNative = this.trade.outputAmount.currency.isNative;
46
+ const routerMustCustody = performAggregatedSlippageCheck || outputIsNative || hasFeeOption(this.options);
47
+ for (const swap of this.trade.swaps) {
48
+ addV3Swap(planner, swap, this.trade.tradeType, this.options, this.payerIsUser, routerMustCustody);
49
+ }
50
+ let minimumAmountOut = ethers_1.BigNumber.from(this.trade.minimumAmountOut(this.options.slippageTolerance).quotient.toString());
51
+ // The router custodies for 3 reasons: to unwrap, to take a fee, and/or to do a slippage check
52
+ if (routerMustCustody) {
53
+ // If there is a fee, that percentage is sent to the fee recipient
54
+ // In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
55
+ if (!!this.options.fee) {
56
+ const feeBips = (0, numbers_1.encodeFeeBips)(this.options.fee.fee);
57
+ planner.addCommand(routerCommands_1.CommandType.PAY_PORTION, [
58
+ this.trade.outputAmount.currency.wrapped.address,
59
+ this.options.fee.recipient,
60
+ feeBips,
61
+ ]);
62
+ // If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
63
+ // Otherwise we continue as expected with the trade's normal expected output
64
+ if (this.trade.tradeType === core_1.TradeType.EXACT_OUTPUT) {
65
+ minimumAmountOut = minimumAmountOut.sub(minimumAmountOut.mul(feeBips).div(10000));
66
+ }
67
+ }
68
+ // If there is a flat fee, that absolute amount is sent to the fee recipient
69
+ // In the case where ETH is the output currency, the fee is taken in WETH (for gas reasons)
70
+ if (!!this.options.flatFee) {
71
+ const feeAmount = this.options.flatFee.amount;
72
+ if (minimumAmountOut.lt(feeAmount))
73
+ throw new Error('Flat fee amount greater than minimumAmountOut');
74
+ planner.addCommand(routerCommands_1.CommandType.TRANSFER, [
75
+ this.trade.outputAmount.currency.wrapped.address,
76
+ this.options.flatFee.recipient,
77
+ feeAmount,
78
+ ]);
79
+ // If the trade is exact output, and a fee was taken, we must adjust the amount out to be the amount after the fee
80
+ // Otherwise we continue as expected with the trade's normal expected output
81
+ if (this.trade.tradeType === core_1.TradeType.EXACT_OUTPUT) {
82
+ minimumAmountOut = minimumAmountOut.sub(feeAmount);
83
+ }
84
+ }
85
+ // The remaining tokens that need to be sent to the user after the fee is taken will be caught
86
+ // by this if-else clause.
87
+ if (outputIsNative) {
88
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [this.options.recipient, minimumAmountOut]);
89
+ }
90
+ else {
91
+ planner.addCommand(routerCommands_1.CommandType.SWEEP, [
92
+ this.trade.outputAmount.currency.wrapped.address,
93
+ this.options.recipient,
94
+ minimumAmountOut,
95
+ ]);
96
+ }
97
+ }
98
+ if (this.inputRequiresWrap && (this.trade.tradeType === core_1.TradeType.EXACT_OUTPUT || riskOfPartialFill(this.trade))) {
99
+ // for exactOutput swaps that take native currency as input
100
+ // we need to send back the change to the user
101
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [this.options.recipient, 0]);
102
+ }
103
+ if (this.options.safeMode)
104
+ planner.addCommand(routerCommands_1.CommandType.SWEEP, [constants_1.ETH_ADDRESS, this.options.recipient, 0]);
105
+ }
106
+ }
107
+ exports.UniswapTrade = UniswapTrade;
108
+ // encode a V3 swap
109
+ function addV3Swap(planner, { route, inputAmount, outputAmount }, tradeType, options, payerIsUser, routerMustCustody) {
110
+ const trade = v3_1.Trade.createUncheckedTrade({
111
+ route,
112
+ inputAmount,
113
+ outputAmount,
114
+ tradeType,
115
+ });
116
+ const path = (0, v3_1.encodeRouteToPath)(route, trade.tradeType === core_1.TradeType.EXACT_OUTPUT);
117
+ if (tradeType == core_1.TradeType.EXACT_INPUT) {
118
+ planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_IN, [
119
+ routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
120
+ trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
121
+ trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
122
+ path,
123
+ payerIsUser,
124
+ ]);
125
+ }
126
+ else if (tradeType == core_1.TradeType.EXACT_OUTPUT) {
127
+ planner.addCommand(routerCommands_1.CommandType.V3_SWAP_EXACT_OUT, [
128
+ routerMustCustody ? constants_1.ROUTER_AS_RECIPIENT : options.recipient,
129
+ trade.minimumAmountOut(options.slippageTolerance).quotient.toString(),
130
+ trade.maximumAmountIn(options.slippageTolerance).quotient.toString(),
131
+ path,
132
+ payerIsUser,
133
+ ]);
134
+ }
135
+ }
136
+ // if price impact is very high, there's a chance of hitting max/min prices resulting in a partial fill of the swap
137
+ function riskOfPartialFill(trade) {
138
+ return trade.priceImpact.greaterThan(REFUND_ETH_PRICE_IMPACT_THRESHOLD);
139
+ }
140
+ function hasFeeOption(swapOptions) {
141
+ return !!swapOptions.fee || !!swapOptions.flatFee;
142
+ }
143
+ //# sourceMappingURL=uniswap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../../src/universal-router/entities/protocols/uniswap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { BigNumberish } from 'ethers';
2
+ import { RoutePlanner } from '../../utils/routerCommands';
3
+ import { Permit2Permit } from '../../utils/inputTokens';
4
+ import { Command, RouterTradeType, TradeConfig } from '../Command';
5
+ export declare class UnwrapWETH implements Command {
6
+ readonly tradeType: RouterTradeType;
7
+ readonly permit2Data: Permit2Permit;
8
+ readonly wethAddress: string;
9
+ readonly amount: BigNumberish;
10
+ constructor(amount: BigNumberish, chainId: number, permit2?: Permit2Permit);
11
+ encode(planner: RoutePlanner, _: TradeConfig): void;
12
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UnwrapWETH = void 0;
7
+ const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
8
+ const routerCommands_1 = require("../../utils/routerCommands");
9
+ const inputTokens_1 = require("../../utils/inputTokens");
10
+ const Command_1 = require("../Command");
11
+ const constants_1 = require("../../utils/constants");
12
+ class UnwrapWETH {
13
+ constructor(amount, chainId, permit2) {
14
+ this.tradeType = Command_1.RouterTradeType.UnwrapWETH;
15
+ this.wethAddress = (0, constants_1.WETH_ADDRESS)(chainId);
16
+ this.amount = amount;
17
+ if (!!permit2) {
18
+ (0, tiny_invariant_1.default)(permit2.details.token.toLowerCase() === this.wethAddress.toLowerCase(), `must be permitting WETH address: ${this.wethAddress}`);
19
+ (0, tiny_invariant_1.default)(permit2.details.amount >= amount, `Did not permit enough WETH for unwrapWETH transaction`);
20
+ this.permit2Data = permit2;
21
+ }
22
+ }
23
+ encode(planner, _) {
24
+ (0, inputTokens_1.encodeInputTokenOptions)(planner, {
25
+ permit2Permit: this.permit2Data,
26
+ permit2TransferFrom: {
27
+ token: this.wethAddress,
28
+ amount: this.amount.toString(),
29
+ },
30
+ });
31
+ planner.addCommand(routerCommands_1.CommandType.UNWRAP_WETH, [constants_1.ROUTER_AS_RECIPIENT, this.amount]);
32
+ }
33
+ }
34
+ exports.UnwrapWETH = UnwrapWETH;
35
+ //# sourceMappingURL=unwrapWETH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unwrapWETH.js","sourceRoot":"","sources":["../../../../src/universal-router/entities/protocols/unwrapWETH.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AAEtC,+DAAsE;AACtE,yDAAgF;AAChF,wCAAkE;AAClE,qDAAyE;AAEzE,MAAa,UAAU;IAMrB,YAAY,MAAoB,EAAE,OAAe,EAAE,OAAuB;QALjE,cAAS,GAAoB,yBAAe,CAAC,UAAU,CAAA;QAM9D,IAAI,CAAC,WAAW,GAAG,IAAA,wBAAY,EAAC,OAAO,CAAC,CAAA;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,CAAC,OAAO,EAAE;YACb,IAAA,wBAAS,EACP,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EACtE,oCAAoC,IAAI,CAAC,WAAW,EAAE,CACvD,CAAA;YACD,IAAA,wBAAS,EAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,uDAAuD,CAAC,CAAA;YACpG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;SAC3B;IACH,CAAC;IAED,MAAM,CAAC,OAAqB,EAAE,CAAc;QAC1C,IAAA,qCAAuB,EAAC,OAAO,EAAE;YAC/B,aAAa,EAAE,IAAI,CAAC,WAAW;YAC/B,mBAAmB,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;aAC/B;SACF,CAAC,CAAA;QACF,OAAO,CAAC,UAAU,CAAC,4BAAW,CAAC,WAAW,EAAE,CAAC,+BAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACjF,CAAC;CACF;AA9BD,gCA8BC"}
@@ -0,0 +1,41 @@
1
+ import { Currency, CurrencyAmount, Percent, Price, TradeType } from '../../core';
2
+ import { Route as V3Route } from '../../v3';
3
+ export declare const ONE = 1;
4
+ export declare const ZERO_PERCENT: Percent;
5
+ export declare const ONE_HUNDRED_PERCENT: Percent;
6
+ export declare enum Protocol {
7
+ V3 = "V3"
8
+ }
9
+ export type V3RouteWithAmounts<TInput extends Currency, TOutput extends Currency> = {
10
+ routev3: V3Route<TInput, TOutput>;
11
+ inputAmount: CurrencyAmount<TInput>;
12
+ outputAmount: CurrencyAmount<TOutput>;
13
+ };
14
+ export type SynthraTradeConstructorArgs<TInput extends Currency, TOutput extends Currency, TTradeType extends TradeType> = {
15
+ v3Routes: V3RouteWithAmounts<TInput, TOutput>[];
16
+ tradeType: TTradeType;
17
+ };
18
+ export declare class SynthraTrade<TInput extends Currency, TOutput extends Currency, TTradeType extends TradeType> {
19
+ readonly routes: V3Route<TInput, TOutput>[];
20
+ readonly swaps: {
21
+ route: V3Route<TInput, TOutput>;
22
+ inputAmount: CurrencyAmount<TInput>;
23
+ outputAmount: CurrencyAmount<TOutput>;
24
+ }[];
25
+ readonly tradeType: TTradeType;
26
+ private _inputAmount?;
27
+ private _outputAmount?;
28
+ private _executionPrice?;
29
+ private _priceImpact?;
30
+ constructor({ v3Routes, tradeType }: SynthraTradeConstructorArgs<TInput, TOutput, TTradeType>);
31
+ get inputAmount(): CurrencyAmount<TInput>;
32
+ get outputAmount(): CurrencyAmount<TOutput>;
33
+ get executionPrice(): Price<TInput, TOutput>;
34
+ get inputTax(): Percent;
35
+ get outputTax(): Percent;
36
+ get priceImpact(): Percent;
37
+ minimumAmountOut(slippageTolerance: Percent, amountOut?: CurrencyAmount<TOutput>): CurrencyAmount<TOutput>;
38
+ maximumAmountIn(slippageTolerance: Percent, amountIn?: CurrencyAmount<TInput>): CurrencyAmount<TInput>;
39
+ worstExecutionPrice(slippageTolerance: Percent): Price<TInput, TOutput>;
40
+ }
41
+ export { SynthraTrade as Trade };