@fenine/universal-router-sdk 1.0.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 (163) hide show
  1. package/README.md +331 -0
  2. package/dist/cjs/src/entities/Command.d.ts +12 -0
  3. package/dist/cjs/src/entities/Command.js +9 -0
  4. package/dist/cjs/src/entities/Command.js.map +1 -0
  5. package/dist/cjs/src/entities/actions/across.d.ts +21 -0
  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/cjs/src/entities/actions/index.d.ts +3 -0
  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/cjs/src/entities/actions/uniswap.d.ts +38 -0
  12. package/dist/cjs/src/entities/actions/uniswap.js +545 -0
  13. package/dist/cjs/src/entities/actions/uniswap.js.map +1 -0
  14. package/dist/cjs/src/entities/actions/unwrapWETH.d.ts +12 -0
  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/cjs/src/entities/index.d.ts +2 -0
  18. package/dist/cjs/src/entities/index.js +6 -0
  19. package/dist/cjs/src/entities/index.js.map +1 -0
  20. package/dist/cjs/src/index.d.ts +14 -0
  21. package/dist/cjs/src/index.js +36 -0
  22. package/dist/cjs/src/index.js.map +1 -0
  23. package/dist/cjs/src/swapRouter.d.ts +103 -0
  24. package/dist/cjs/src/swapRouter.js +338 -0
  25. package/dist/cjs/src/swapRouter.js.map +1 -0
  26. package/dist/cjs/src/types/encodeSwaps.d.ts +149 -0
  27. package/dist/cjs/src/types/encodeSwaps.js +3 -0
  28. package/dist/cjs/src/types/encodeSwaps.js.map +1 -0
  29. package/dist/cjs/src/utils/commandParser.d.ts +34 -0
  30. package/dist/cjs/src/utils/commandParser.js +145 -0
  31. package/dist/cjs/src/utils/commandParser.js.map +1 -0
  32. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  33. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js +47 -0
  34. package/dist/cjs/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
  35. package/dist/cjs/src/utils/constants.d.ts +39 -0
  36. package/dist/cjs/src/utils/constants.js +560 -0
  37. package/dist/cjs/src/utils/constants.js.map +1 -0
  38. package/dist/cjs/src/utils/eip712.d.ts +17 -0
  39. package/dist/cjs/src/utils/eip712.js +43 -0
  40. package/dist/cjs/src/utils/eip712.js.map +1 -0
  41. package/dist/cjs/src/utils/encodeSwapStep.d.ts +4 -0
  42. package/dist/cjs/src/utils/encodeSwapStep.js +61 -0
  43. package/dist/cjs/src/utils/encodeSwapStep.js.map +1 -0
  44. package/dist/cjs/src/utils/encodeV4Action.d.ts +8 -0
  45. package/dist/cjs/src/utils/encodeV4Action.js +97 -0
  46. package/dist/cjs/src/utils/encodeV4Action.js.map +1 -0
  47. package/dist/cjs/src/utils/getCurrencyAddress.d.ts +2 -0
  48. package/dist/cjs/src/utils/getCurrencyAddress.js +9 -0
  49. package/dist/cjs/src/utils/getCurrencyAddress.js.map +1 -0
  50. package/dist/cjs/src/utils/inputTokens.d.ts +23 -0
  51. package/dist/cjs/src/utils/inputTokens.js +58 -0
  52. package/dist/cjs/src/utils/inputTokens.js.map +1 -0
  53. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
  54. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js +18 -0
  55. package/dist/cjs/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
  56. package/dist/cjs/src/utils/numbers.d.ts +7 -0
  57. package/dist/cjs/src/utils/numbers.js +27 -0
  58. package/dist/cjs/src/utils/numbers.js.map +1 -0
  59. package/dist/cjs/src/utils/pathCurrency.d.ts +3 -0
  60. package/dist/cjs/src/utils/pathCurrency.js +27 -0
  61. package/dist/cjs/src/utils/pathCurrency.js.map +1 -0
  62. package/dist/cjs/src/utils/routerCommands.d.ts +77 -0
  63. package/dist/cjs/src/utils/routerCommands.js +334 -0
  64. package/dist/cjs/src/utils/routerCommands.js.map +1 -0
  65. package/dist/cjs/src/utils/routerTradeAdapter.d.ts +73 -0
  66. package/dist/cjs/src/utils/routerTradeAdapter.js +139 -0
  67. package/dist/cjs/src/utils/routerTradeAdapter.js.map +1 -0
  68. package/dist/cjs/src/utils/validateEncodeSwaps.d.ts +2 -0
  69. package/dist/cjs/src/utils/validateEncodeSwaps.js +135 -0
  70. package/dist/cjs/src/utils/validateEncodeSwaps.js.map +1 -0
  71. package/dist/esm/src/entities/Command.d.ts +12 -0
  72. package/dist/esm/src/entities/Command.js +6 -0
  73. package/dist/esm/src/entities/Command.js.map +1 -0
  74. package/dist/esm/src/entities/actions/across.d.ts +21 -0
  75. package/dist/esm/src/entities/actions/across.js +3 -0
  76. package/dist/esm/src/entities/actions/across.js.map +1 -0
  77. package/dist/esm/src/entities/actions/index.d.ts +3 -0
  78. package/dist/esm/src/entities/actions/index.js +4 -0
  79. package/dist/esm/src/entities/actions/index.js.map +1 -0
  80. package/dist/esm/src/entities/actions/uniswap.d.ts +38 -0
  81. package/dist/esm/src/entities/actions/uniswap.js +541 -0
  82. package/dist/esm/src/entities/actions/uniswap.js.map +1 -0
  83. package/dist/esm/src/entities/actions/unwrapWETH.d.ts +12 -0
  84. package/dist/esm/src/entities/actions/unwrapWETH.js +28 -0
  85. package/dist/esm/src/entities/actions/unwrapWETH.js.map +1 -0
  86. package/dist/esm/src/entities/index.d.ts +2 -0
  87. package/dist/esm/src/entities/index.js +3 -0
  88. package/dist/esm/src/entities/index.js.map +1 -0
  89. package/dist/esm/src/index.d.ts +14 -0
  90. package/dist/esm/src/index.js +11 -0
  91. package/dist/esm/src/index.js.map +1 -0
  92. package/dist/esm/src/swapRouter.d.ts +103 -0
  93. package/dist/esm/src/swapRouter.js +333 -0
  94. package/dist/esm/src/swapRouter.js.map +1 -0
  95. package/dist/esm/src/types/encodeSwaps.d.ts +149 -0
  96. package/dist/esm/src/types/encodeSwaps.js +2 -0
  97. package/dist/esm/src/types/encodeSwaps.js.map +1 -0
  98. package/dist/esm/src/utils/commandParser.d.ts +34 -0
  99. package/dist/esm/src/utils/commandParser.js +137 -0
  100. package/dist/esm/src/utils/commandParser.js.map +1 -0
  101. package/dist/esm/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  102. package/dist/esm/src/utils/computeEncodeSwapsAmounts.js +43 -0
  103. package/dist/esm/src/utils/computeEncodeSwapsAmounts.js.map +1 -0
  104. package/dist/esm/src/utils/constants.d.ts +39 -0
  105. package/dist/esm/src/utils/constants.js +552 -0
  106. package/dist/esm/src/utils/constants.js.map +1 -0
  107. package/dist/esm/src/utils/eip712.d.ts +17 -0
  108. package/dist/esm/src/utils/eip712.js +38 -0
  109. package/dist/esm/src/utils/eip712.js.map +1 -0
  110. package/dist/esm/src/utils/encodeSwapStep.d.ts +4 -0
  111. package/dist/esm/src/utils/encodeSwapStep.js +57 -0
  112. package/dist/esm/src/utils/encodeSwapStep.js.map +1 -0
  113. package/dist/esm/src/utils/encodeV4Action.d.ts +8 -0
  114. package/dist/esm/src/utils/encodeV4Action.js +92 -0
  115. package/dist/esm/src/utils/encodeV4Action.js.map +1 -0
  116. package/dist/esm/src/utils/getCurrencyAddress.d.ts +2 -0
  117. package/dist/esm/src/utils/getCurrencyAddress.js +5 -0
  118. package/dist/esm/src/utils/getCurrencyAddress.js.map +1 -0
  119. package/dist/esm/src/utils/inputTokens.d.ts +23 -0
  120. package/dist/esm/src/utils/inputTokens.js +51 -0
  121. package/dist/esm/src/utils/inputTokens.js.map +1 -0
  122. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
  123. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js +14 -0
  124. package/dist/esm/src/utils/normalizeEncodeSwapsSpec.js.map +1 -0
  125. package/dist/esm/src/utils/numbers.d.ts +7 -0
  126. package/dist/esm/src/utils/numbers.js +19 -0
  127. package/dist/esm/src/utils/numbers.js.map +1 -0
  128. package/dist/esm/src/utils/pathCurrency.d.ts +3 -0
  129. package/dist/esm/src/utils/pathCurrency.js +23 -0
  130. package/dist/esm/src/utils/pathCurrency.js.map +1 -0
  131. package/dist/esm/src/utils/routerCommands.d.ts +77 -0
  132. package/dist/esm/src/utils/routerCommands.js +329 -0
  133. package/dist/esm/src/utils/routerCommands.js.map +1 -0
  134. package/dist/esm/src/utils/routerTradeAdapter.d.ts +73 -0
  135. package/dist/esm/src/utils/routerTradeAdapter.js +134 -0
  136. package/dist/esm/src/utils/routerTradeAdapter.js.map +1 -0
  137. package/dist/esm/src/utils/validateEncodeSwaps.d.ts +2 -0
  138. package/dist/esm/src/utils/validateEncodeSwaps.js +130 -0
  139. package/dist/esm/src/utils/validateEncodeSwaps.js.map +1 -0
  140. package/dist/types/src/entities/Command.d.ts +12 -0
  141. package/dist/types/src/entities/actions/across.d.ts +21 -0
  142. package/dist/types/src/entities/actions/index.d.ts +3 -0
  143. package/dist/types/src/entities/actions/uniswap.d.ts +38 -0
  144. package/dist/types/src/entities/actions/unwrapWETH.d.ts +12 -0
  145. package/dist/types/src/entities/index.d.ts +2 -0
  146. package/dist/types/src/index.d.ts +14 -0
  147. package/dist/types/src/swapRouter.d.ts +103 -0
  148. package/dist/types/src/types/encodeSwaps.d.ts +149 -0
  149. package/dist/types/src/utils/commandParser.d.ts +34 -0
  150. package/dist/types/src/utils/computeEncodeSwapsAmounts.d.ts +8 -0
  151. package/dist/types/src/utils/constants.d.ts +39 -0
  152. package/dist/types/src/utils/eip712.d.ts +17 -0
  153. package/dist/types/src/utils/encodeSwapStep.d.ts +4 -0
  154. package/dist/types/src/utils/encodeV4Action.d.ts +8 -0
  155. package/dist/types/src/utils/getCurrencyAddress.d.ts +2 -0
  156. package/dist/types/src/utils/inputTokens.d.ts +23 -0
  157. package/dist/types/src/utils/normalizeEncodeSwapsSpec.d.ts +2 -0
  158. package/dist/types/src/utils/numbers.d.ts +7 -0
  159. package/dist/types/src/utils/pathCurrency.d.ts +3 -0
  160. package/dist/types/src/utils/routerCommands.d.ts +77 -0
  161. package/dist/types/src/utils/routerTradeAdapter.d.ts +73 -0
  162. package/dist/types/src/utils/validateEncodeSwaps.d.ts +2 -0
  163. package/package.json +78 -0
@@ -0,0 +1,7 @@
1
+ import { BigNumber } from 'ethers';
2
+ import JSBI from 'jsbi';
3
+ import { Percent } from '@fenine/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,3 @@
1
+ import { Currency } from '@fenine/sdk-core';
2
+ import { TPool } from '@uniswap/router-sdk';
3
+ export declare function getPathCurrency(currency: Currency, pool: TPool): Currency;
@@ -0,0 +1,77 @@
1
+ import { UniversalRouterVersion } from './constants';
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?: UniversalRouterVersion): 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?: UniversalRouterVersion): RouterCommand;
@@ -0,0 +1,73 @@
1
+ import { Trade as RouterTrade } from '@uniswap/router-sdk';
2
+ import { Currency, TradeType } from '@fenine/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
+ }
@@ -0,0 +1,2 @@
1
+ import { NormalizedSwapSpecification, SwapStep } from '../types/encodeSwaps';
2
+ export declare function validateEncodeSwaps(spec: NormalizedSwapSpecification, swapSteps: SwapStep[]): void;
package/package.json ADDED
@@ -0,0 +1,78 @@
1
+ {
2
+ "name": "@fenine/universal-router-sdk",
3
+ "version": "1.0.0",
4
+ "description": "SDK for integrating with the Universal Router contracts on Fenine Network",
5
+ "repository": "https://github.com/AvenBreaks/fenine-sdks.git",
6
+ "keywords": [
7
+ "fenine",
8
+ "uniswap",
9
+ "universal-router",
10
+ "ethereum"
11
+ ],
12
+ "license": "MIT",
13
+ "main": "./dist/cjs/src/index.js",
14
+ "typings": "./dist/types/src/index.d.ts",
15
+ "module": "./dist/esm/src/index.js",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/types/src/index.d.ts",
19
+ "import": "./dist/esm/src/index.js",
20
+ "require": "./dist/cjs/src/index.js"
21
+ }
22
+ },
23
+ "sideEffects": false,
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "scripts": {
31
+ "build": "yarn clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && tsc -p tsconfig.types.json",
32
+ "clean": "rm -rf dist",
33
+ "release": "npm publish --access public",
34
+ "test": "bun test test/unit/"
35
+ },
36
+ "dependencies": {
37
+ "@ethersproject/abi": "^5.5.0",
38
+ "@ethersproject/abstract-signer": "^5.7.0",
39
+ "@fenine/permit2-sdk": "^1.0.0",
40
+ "@fenine/sdk-core": "^1.0.0",
41
+ "@fenine/v3-sdk": "^1.0.0",
42
+ "@openzeppelin/contracts": "4.7.0",
43
+ "@uniswap/router-sdk": "^2.10.0",
44
+ "@uniswap/universal-router": "2.1.0",
45
+ "@uniswap/v2-core": "^1.0.1",
46
+ "@uniswap/v2-sdk": "^4.20.0",
47
+ "@uniswap/v3-core": "1.0.0",
48
+ "@uniswap/v4-sdk": "^2.1.0",
49
+ "bignumber.js": "^9.0.2",
50
+ "ethers": "^5.7.0",
51
+ "jsbi": "^3.1.4",
52
+ "tiny-invariant": "^1.1.0",
53
+ "tslib": "^2.3.0"
54
+ },
55
+ "devDependencies": {
56
+ "@types/chai": "^4.3.3",
57
+ "@types/mocha": "^9.1.1",
58
+ "@types/node": "^18.7.16",
59
+ "@types/node-fetch": "^2.6.2",
60
+ "chai": "^4.3.6",
61
+ "dotenv": "^16.0.3",
62
+ "eslint-plugin-prettier": "^3.4.1",
63
+ "hardhat": "^2.25.0",
64
+ "prettier": "^2.4.1",
65
+ "ts-node": "^10.9.1",
66
+ "typedoc": "^0.21.2",
67
+ "typescript": "^4.3.3"
68
+ },
69
+ "prettier": {
70
+ "printWidth": 120,
71
+ "semi": false,
72
+ "singleQuote": true,
73
+ "trailingComma": "es5"
74
+ },
75
+ "publishConfig": {
76
+ "access": "public"
77
+ }
78
+ }