@nradko/metric-omm-sdk-v1 0.4.1 → 0.4.3

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 (77) hide show
  1. package/README.md +96 -12
  2. package/dist/abis/MetricOmmSimpleRouter.d.ts +44 -0
  3. package/dist/abis/MetricOmmSimpleRouter.d.ts.map +1 -1
  4. package/dist/abis/MetricOmmSimpleRouter.js +58 -0
  5. package/dist/abis/MetricOmmSimpleRouter.js.map +1 -1
  6. package/dist/abis/MetricOmmSwapQuoter.d.ts +26 -2
  7. package/dist/abis/MetricOmmSwapQuoter.d.ts.map +1 -1
  8. package/dist/abis/MetricOmmSwapQuoter.js +34 -2
  9. package/dist/abis/MetricOmmSwapQuoter.js.map +1 -1
  10. package/dist/abis/index.d.ts +0 -1
  11. package/dist/abis/index.d.ts.map +1 -1
  12. package/dist/abis/index.js +0 -1
  13. package/dist/abis/index.js.map +1 -1
  14. package/dist/addresses.d.ts +0 -2
  15. package/dist/addresses.d.ts.map +1 -1
  16. package/dist/addresses.js +8 -9
  17. package/dist/addresses.js.map +1 -1
  18. package/dist/dataProvider/index.d.ts +1 -1
  19. package/dist/dataProvider/index.d.ts.map +1 -1
  20. package/dist/dataProvider/index.js +1 -1
  21. package/dist/dataProvider/index.js.map +1 -1
  22. package/dist/dataProvider/read.d.ts +1 -3
  23. package/dist/dataProvider/read.d.ts.map +1 -1
  24. package/dist/dataProvider/read.js +1 -3
  25. package/dist/dataProvider/read.js.map +1 -1
  26. package/dist/index.d.ts +3 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -3
  29. package/dist/index.js.map +1 -1
  30. package/dist/pool/liquidity.d.ts +83 -7
  31. package/dist/pool/liquidity.d.ts.map +1 -1
  32. package/dist/pool/liquidity.js +63 -3
  33. package/dist/pool/liquidity.js.map +1 -1
  34. package/dist/router/fromRoute.d.ts +93 -0
  35. package/dist/router/fromRoute.d.ts.map +1 -0
  36. package/dist/router/fromRoute.js +187 -0
  37. package/dist/router/fromRoute.js.map +1 -0
  38. package/dist/router/index.d.ts +8 -1
  39. package/dist/router/index.d.ts.map +1 -1
  40. package/dist/router/index.js +8 -1
  41. package/dist/router/index.js.map +1 -1
  42. package/dist/router/nativeSwap.d.ts +47 -0
  43. package/dist/router/nativeSwap.d.ts.map +1 -0
  44. package/dist/router/nativeSwap.js +89 -0
  45. package/dist/router/nativeSwap.js.map +1 -0
  46. package/dist/router/swap.d.ts +82 -1
  47. package/dist/router/swap.d.ts.map +1 -1
  48. package/dist/router/swap.js +51 -1
  49. package/dist/router/swap.js.map +1 -1
  50. package/dist/router/swapPath.d.ts +46 -1
  51. package/dist/router/swapPath.d.ts.map +1 -1
  52. package/dist/router/swapPath.js +34 -0
  53. package/dist/router/swapPath.js.map +1 -1
  54. package/dist/router/utils.d.ts +9 -0
  55. package/dist/router/utils.d.ts.map +1 -0
  56. package/dist/router/utils.js +27 -0
  57. package/dist/router/utils.js.map +1 -0
  58. package/package.json +2 -2
  59. package/src/abis/MetricOmmSimpleRouter.ts +58 -0
  60. package/src/abis/MetricOmmSwapQuoter.ts +34 -2
  61. package/src/abis/index.ts +0 -1
  62. package/src/addresses.ts +8 -11
  63. package/src/dataProvider/index.ts +0 -1
  64. package/src/dataProvider/read.ts +1 -4
  65. package/src/index.ts +22 -2
  66. package/src/pool/liquidity.ts +83 -7
  67. package/src/router/fromRoute.ts +318 -0
  68. package/src/router/index.ts +36 -1
  69. package/src/router/nativeSwap.ts +123 -0
  70. package/src/router/swap.ts +82 -1
  71. package/src/router/swapPath.ts +47 -1
  72. package/src/router/utils.ts +31 -0
  73. package/dist/abis/MetricOmmPoolStateView.d.ts +0 -238
  74. package/dist/abis/MetricOmmPoolStateView.d.ts.map +0 -1
  75. package/dist/abis/MetricOmmPoolStateView.js +0 -315
  76. package/dist/abis/MetricOmmPoolStateView.js.map +0 -1
  77. package/src/abis/MetricOmmPoolStateView.ts +0 -314
@@ -1,45 +1,80 @@
1
1
  /**
2
- * MetricAMM SDK - SimpleRouter single-hop swap helpers.
2
+ * SimpleRouter single-hop swap helpers.
3
+ *
4
+ * Typical ERC-20 flow:
5
+ * 1. `buildExactInputSingleParams` / `buildExactOutputSingleParams` — quote + slippage
6
+ * 2. `encodeExactInputSingleCalldata` — calldata for `walletClient.writeContract` or `sendTransaction`
7
+ * 3. Approve `tokenIn` on the SimpleRouter before sending (not needed for native ETH; see `nativeSwap.ts`)
3
8
  */
4
9
  import type { Address, Hex } from "viem";
5
10
  import type { PublicClient } from "viem";
11
+ /**
12
+ * Arguments for `MetricOmmSimpleRouter.exactInputSingle`.
13
+ * Pass to `encodeExactInputSingleCalldata` or native prepare helpers when `tokenIn` is WETH.
14
+ */
6
15
  export type ExactInputSingleParams = {
16
+ /** Pool to swap through. */
7
17
  pool: Address;
18
+ /** Input token (`addresses.wrappedNative` when swapping from native ETH). */
8
19
  tokenIn: Address;
20
+ /** Output token (`addresses.wrappedNative` when unwrapping to ETH in a follow-up call). */
9
21
  tokenOut: Address;
22
+ /** `true` when swapping token0 → token1 for this pool. */
10
23
  zeroForOne: boolean;
24
+ /** Exact input amount in `tokenIn` native decimals. */
11
25
  amountIn: bigint;
26
+ /** Minimum acceptable output; reverts if less is received. */
12
27
  amountOutMinimum: bigint;
28
+ /** Address that receives output tokens. */
13
29
  recipient: Address;
30
+ /** Unix timestamp after which the swap reverts. */
14
31
  deadline: bigint;
32
+ /** Q64.64 price bound; use `0` / `MAX_UINT128` defaults from builders when unsure. */
15
33
  priceLimitX64: bigint;
34
+ /** Per-pool extension calldata; omit for pools without extensions. */
16
35
  extensionData?: Hex;
17
36
  };
37
+ /**
38
+ * Arguments for `MetricOmmSimpleRouter.exactOutputSingle`.
39
+ */
18
40
  export type ExactOutputSingleParams = {
19
41
  pool: Address;
20
42
  tokenIn: Address;
21
43
  tokenOut: Address;
22
44
  zeroForOne: boolean;
45
+ /** Exact output amount in `tokenOut` native decimals. */
23
46
  amountOut: bigint;
47
+ /** Maximum input willing to spend (slippage cap). */
24
48
  amountInMaximum: bigint;
25
49
  recipient: Address;
26
50
  deadline: bigint;
27
51
  priceLimitX64: bigint;
28
52
  extensionData?: Hex;
29
53
  };
54
+ /**
55
+ * Inputs for {@link buildExactInputSingleParams}.
56
+ * Quotes live on-chain via the SwapQuoter and applies `slippagePercent` to derive `amountOutMinimum`.
57
+ */
30
58
  export interface BuildExactInputSingleParams {
31
59
  publicClient: PublicClient;
32
60
  pool: Address;
33
61
  tokenIn: Address;
34
62
  tokenOut: Address;
35
63
  recipient: Address;
64
+ /** Input amount in `tokenIn` decimals (wei for ETH / WETH). */
36
65
  amountIn: bigint;
66
+ /** Human-readable slippage tolerance, e.g. `0.5` = 0.5%. */
37
67
  slippagePercent: number;
68
+ /** Optional price bound; defaults from quoter direction when omitted. */
38
69
  priceLimitX64?: bigint;
39
70
  deadline: bigint;
40
71
  extensionData?: Hex;
72
+ /** Override when `addresses.quoter` is unset. */
41
73
  quoterAddress?: Address;
74
+ /** `addresses.wrappedNative` — required when `tokenIn` or `tokenOut` is native (zero address). */
75
+ wrappedNative?: Address;
42
76
  }
77
+ /** Inputs for {@link buildExactOutputSingleParams}. */
43
78
  export interface BuildExactOutputSingleParams {
44
79
  publicClient: PublicClient;
45
80
  pool: Address;
@@ -52,13 +87,59 @@ export interface BuildExactOutputSingleParams {
52
87
  deadline: bigint;
53
88
  extensionData?: Hex;
54
89
  quoterAddress?: Address;
90
+ wrappedNative?: Address;
55
91
  }
92
+ /**
93
+ * Convert a human slippage percent to basis points (1 bp = 0.01%).
94
+ * @example toSlippageBps(0.5) // 50n
95
+ */
56
96
  export declare function toSlippageBps(slippagePercent: number): bigint;
97
+ /** Ceiling division for bigint values. Used when rounding slippage up on exact-output swaps. */
57
98
  export declare function ceilDiv(numerator: bigint, denominator: bigint): bigint;
99
+ /**
100
+ * Build single-hop exact-input swap params with live quote and slippage.
101
+ *
102
+ * Resolves `zeroForOne`, quotes `amountOut`, and sets `amountOutMinimum`.
103
+ * For native ETH input, use `prepareExactInputSingleSupportingNativePaymentCalldata` and set `msg.value` on the transaction.
104
+ * (params will contain WETH as `tokenIn`).
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * const params = await buildExactInputSingleParams({
109
+ * publicClient,
110
+ * pool,
111
+ * tokenIn: usdc,
112
+ * tokenOut: weth,
113
+ * recipient: account,
114
+ * amountIn: parseUnits("100", 6),
115
+ * slippagePercent: 0.5,
116
+ * deadline: BigInt(Math.floor(Date.now() / 1000) + 1200),
117
+ * quoterAddress: addresses.quoter,
118
+ * });
119
+ * await walletClient.writeContract({
120
+ * address: addresses.simpleRouter,
121
+ * abi: MetricOmmSimpleRouterAbi,
122
+ * functionName: "exactInputSingle",
123
+ * args: [params],
124
+ * account,
125
+ * });
126
+ * ```
127
+ */
58
128
  export declare function buildExactInputSingleParams(params: BuildExactInputSingleParams): Promise<ExactInputSingleParams>;
129
+ /**
130
+ * Build single-hop exact-output swap params with live quote and slippage.
131
+ * Sets `amountInMaximum` from quoted input plus `slippagePercent`.
132
+ */
59
133
  export declare function buildExactOutputSingleParams(params: BuildExactOutputSingleParams): Promise<ExactOutputSingleParams>;
134
+ /**
135
+ * Encode `exactInputSingle` calldata for `addresses.simpleRouter`.
136
+ * Approve `tokenIn` on the router before sending (unless using native ETH prepare helpers).
137
+ */
60
138
  export declare function encodeExactInputSingleCalldata(params: ExactInputSingleParams): Hex;
139
+ /** Alias for {@link encodeExactInputSingleCalldata}. */
61
140
  export declare const prepareExactInputSingleCalldata: typeof encodeExactInputSingleCalldata;
141
+ /** Encode `exactOutputSingle` calldata for `addresses.simpleRouter`. */
62
142
  export declare function encodeExactOutputSingleCalldata(params: ExactOutputSingleParams): Hex;
143
+ /** Alias for {@link encodeExactOutputSingleCalldata}. */
63
144
  export declare const prepareExactOutputSingleCalldata: typeof encodeExactOutputSingleCalldata;
64
145
  //# sourceMappingURL=swap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/router/swap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAOzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIzC,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,GAAG,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,2BAA2B;IAC1C,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAKtE;AAoCD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,2BAA2B,GAClC,OAAO,CAAC,sBAAsB,CAAC,CAsCjC;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC,CAsClC;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,sBAAsB,GAAG,GAAG,CAMlF;AAED,eAAO,MAAM,+BAA+B,uCAAiC,CAAC;AAE9E,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,uBAAuB,GAAG,GAAG,CAMpF;AAED,eAAO,MAAM,gCAAgC,wCAAkC,CAAC"}
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/router/swap.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  /**
2
- * MetricAMM SDK - SimpleRouter single-hop swap helpers.
2
+ * SimpleRouter single-hop swap helpers.
3
+ *
4
+ * Typical ERC-20 flow:
5
+ * 1. `buildExactInputSingleParams` / `buildExactOutputSingleParams` — quote + slippage
6
+ * 2. `encodeExactInputSingleCalldata` — calldata for `walletClient.writeContract` or `sendTransaction`
7
+ * 3. Approve `tokenIn` on the SimpleRouter before sending (not needed for native ETH; see `nativeSwap.ts`)
3
8
  */
4
9
  import { encodeFunctionData } from "viem";
5
10
  import { defaultPriceLimitX64 } from "../quoter/quotePath.js";
@@ -8,12 +13,17 @@ import { resolveSwapPath } from "../swap/path.js";
8
13
  import { SIMPLE_ROUTER_ABI } from "../constants.js";
9
14
  import { EMPTY_EXTENSION_DATA } from "../extensions/types.js";
10
15
  const BPS_BASE = 10000n;
16
+ /**
17
+ * Convert a human slippage percent to basis points (1 bp = 0.01%).
18
+ * @example toSlippageBps(0.5) // 50n
19
+ */
11
20
  export function toSlippageBps(slippagePercent) {
12
21
  if (!Number.isFinite(slippagePercent) || slippagePercent < 0 || slippagePercent > 100) {
13
22
  throw new Error("slippagePercent must be a finite number between 0 and 100");
14
23
  }
15
24
  return BigInt(Math.round(slippagePercent * 100));
16
25
  }
26
+ /** Ceiling division for bigint values. Used when rounding slippage up on exact-output swaps. */
17
27
  export function ceilDiv(numerator, denominator) {
18
28
  if (denominator <= 0n) {
19
29
  throw new Error("denominator must be > 0");
@@ -51,6 +61,35 @@ function toExactOutputSingleStruct(params) {
51
61
  extensionData: withExtensionData(params.extensionData),
52
62
  };
53
63
  }
64
+ /**
65
+ * Build single-hop exact-input swap params with live quote and slippage.
66
+ *
67
+ * Resolves `zeroForOne`, quotes `amountOut`, and sets `amountOutMinimum`.
68
+ * For native ETH input, use `prepareExactInputSingleSupportingNativePaymentCalldata` and set `msg.value` on the transaction.
69
+ * (params will contain WETH as `tokenIn`).
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const params = await buildExactInputSingleParams({
74
+ * publicClient,
75
+ * pool,
76
+ * tokenIn: usdc,
77
+ * tokenOut: weth,
78
+ * recipient: account,
79
+ * amountIn: parseUnits("100", 6),
80
+ * slippagePercent: 0.5,
81
+ * deadline: BigInt(Math.floor(Date.now() / 1000) + 1200),
82
+ * quoterAddress: addresses.quoter,
83
+ * });
84
+ * await walletClient.writeContract({
85
+ * address: addresses.simpleRouter,
86
+ * abi: MetricOmmSimpleRouterAbi,
87
+ * functionName: "exactInputSingle",
88
+ * args: [params],
89
+ * account,
90
+ * });
91
+ * ```
92
+ */
54
93
  export async function buildExactInputSingleParams(params) {
55
94
  const slippageBps = toSlippageBps(params.slippagePercent);
56
95
  const { zeroForOnes } = await resolveSwapPath(params.publicClient, params.tokenIn, params.tokenOut, [params.pool], params.extensionData ? [params.extensionData] : undefined);
@@ -81,6 +120,10 @@ export async function buildExactInputSingleParams(params) {
81
120
  extensionData: params.extensionData,
82
121
  };
83
122
  }
123
+ /**
124
+ * Build single-hop exact-output swap params with live quote and slippage.
125
+ * Sets `amountInMaximum` from quoted input plus `slippagePercent`.
126
+ */
84
127
  export async function buildExactOutputSingleParams(params) {
85
128
  const slippageBps = toSlippageBps(params.slippagePercent);
86
129
  const { zeroForOnes } = await resolveSwapPath(params.publicClient, params.tokenIn, params.tokenOut, [params.pool], params.extensionData ? [params.extensionData] : undefined);
@@ -111,6 +154,10 @@ export async function buildExactOutputSingleParams(params) {
111
154
  extensionData: params.extensionData,
112
155
  };
113
156
  }
157
+ /**
158
+ * Encode `exactInputSingle` calldata for `addresses.simpleRouter`.
159
+ * Approve `tokenIn` on the router before sending (unless using native ETH prepare helpers).
160
+ */
114
161
  export function encodeExactInputSingleCalldata(params) {
115
162
  return encodeFunctionData({
116
163
  abi: SIMPLE_ROUTER_ABI,
@@ -118,7 +165,9 @@ export function encodeExactInputSingleCalldata(params) {
118
165
  args: [toExactInputSingleStruct(params)],
119
166
  });
120
167
  }
168
+ /** Alias for {@link encodeExactInputSingleCalldata}. */
121
169
  export const prepareExactInputSingleCalldata = encodeExactInputSingleCalldata;
170
+ /** Encode `exactOutputSingle` calldata for `addresses.simpleRouter`. */
122
171
  export function encodeExactOutputSingleCalldata(params) {
123
172
  return encodeFunctionData({
124
173
  abi: SIMPLE_ROUTER_ABI,
@@ -126,5 +175,6 @@ export function encodeExactOutputSingleCalldata(params) {
126
175
  args: [toExactOutputSingleStruct(params)],
127
176
  });
128
177
  }
178
+ /** Alias for {@link encodeExactOutputSingleCalldata}. */
129
179
  export const prepareExactOutputSingleCalldata = encodeExactOutputSingleCalldata;
130
180
  //# sourceMappingURL=swap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/router/swap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/router/swap.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,29 @@
1
1
  /**
2
- * MetricAMM SDK - SimpleRouter multihop swap helpers.
2
+ * SimpleRouter multihop swap helpers.
3
+ *
4
+ * Multihop swaps walk `pools` in order; intermediate tokens remain on the router between hops.
5
+ * For ERC-20 paths, approve the router for `tokenIn` once before sending the transaction.
3
6
  */
4
7
  import type { Address, Hex, PublicClient } from "viem";
8
+ /**
9
+ * Arguments for `MetricOmmSimpleRouter.exactInput` (multihop exact input).
10
+ * `tokens` and `zeroForOneBitMap` are usually produced by {@link buildExactInputParams}.
11
+ */
5
12
  export type ExactInputParams = {
13
+ /** Path tokens, length `pools.length + 1`. */
6
14
  tokens: Address[];
15
+ /** One pool per hop, in swap order. */
7
16
  pools: Address[];
17
+ /** Extension calldata per hop; use `0x` when a pool has no extension. */
8
18
  extensionDatas: Hex[];
19
+ /** Bit `i` set when hop `i` is token0 → token1. */
9
20
  zeroForOneBitMap: bigint;
10
21
  amountIn: bigint;
11
22
  amountOutMinimum: bigint;
12
23
  recipient: Address;
13
24
  deadline: bigint;
14
25
  };
26
+ /** Arguments for `MetricOmmSimpleRouter.exactOutput` (multihop exact output). */
15
27
  export type ExactOutputParams = {
16
28
  tokens: Address[];
17
29
  pools: Address[];
@@ -22,10 +34,12 @@ export type ExactOutputParams = {
22
34
  recipient: Address;
23
35
  deadline: bigint;
24
36
  };
37
+ /** Inputs for {@link buildExactInputParams}. */
25
38
  export interface BuildExactInputParams {
26
39
  publicClient: PublicClient;
27
40
  tokenIn: Address;
28
41
  tokenOut: Address;
42
+ /** Ordered pool addresses connecting `tokenIn` → `tokenOut`. */
29
43
  pools: readonly Address[];
30
44
  extensionDatas?: readonly Hex[];
31
45
  recipient: Address;
@@ -33,7 +47,9 @@ export interface BuildExactInputParams {
33
47
  slippagePercent: number;
34
48
  deadline: bigint;
35
49
  quoterAddress?: Address;
50
+ wrappedNative?: Address;
36
51
  }
52
+ /** Inputs for {@link buildExactOutputParams}. */
37
53
  export interface BuildExactOutputParams {
38
54
  publicClient: PublicClient;
39
55
  tokenIn: Address;
@@ -45,12 +61,41 @@ export interface BuildExactOutputParams {
45
61
  slippagePercent: number;
46
62
  deadline: bigint;
47
63
  quoterAddress?: Address;
64
+ wrappedNative?: Address;
48
65
  }
66
+ /**
67
+ * Build multihop exact-input params: resolves path, quotes output, applies slippage.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const pathParams = await buildExactInputParams({
72
+ * publicClient,
73
+ * tokenIn: tokenA,
74
+ * tokenOut: tokenC,
75
+ * pools: [poolAB, poolBC],
76
+ * recipient: account,
77
+ * amountIn: parseUnits("1", 18),
78
+ * slippagePercent: 0.5,
79
+ * deadline,
80
+ * quoterAddress: addresses.quoter,
81
+ * });
82
+ * await walletClient.sendTransaction({
83
+ * to: addresses.simpleRouter,
84
+ * data: encodeExactInputCalldata(pathParams),
85
+ * account,
86
+ * });
87
+ * ```
88
+ */
49
89
  export declare function buildExactInputParams(params: BuildExactInputParams): Promise<ExactInputParams>;
90
+ /** Build multihop exact-output params with live quote and slippage on `amountInMaximum`. */
50
91
  export declare function buildExactOutputParams(params: BuildExactOutputParams): Promise<ExactOutputParams>;
92
+ /** Encode `exactInput` multihop calldata. */
51
93
  export declare function encodeExactInputCalldata(params: ExactInputParams): Hex;
94
+ /** Alias for {@link encodeExactInputCalldata}. */
52
95
  export declare const prepareExactInputCalldata: typeof encodeExactInputCalldata;
96
+ /** Encode `exactOutput` multihop calldata. */
53
97
  export declare function encodeExactOutputCalldata(params: ExactOutputParams): Hex;
98
+ /** Alias for {@link encodeExactOutputCalldata}. */
54
99
  export declare const prepareExactOutputCalldata: typeof encodeExactOutputCalldata;
55
100
  export { encodeZeroForOneBitMap } from "../swap/path.js";
56
101
  //# sourceMappingURL=swapPath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swapPath.d.ts","sourceRoot":"","sources":["../../src/router/swapPath.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AASvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,cAAc,EAAE,GAAG,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,cAAc,EAAE,GAAG,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4BD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAiC5B;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAMtE;AAED,eAAO,MAAM,yBAAyB,iCAA2B,CAAC;AAElE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAMxE;AAED,eAAO,MAAM,0BAA0B,kCAA4B,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"swapPath.d.ts","sourceRoot":"","sources":["../../src/router/swapPath.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AASvD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,8CAA8C;IAC9C,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,uCAAuC;IACvC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,yEAAyE;IACzE,cAAc,EAAE,GAAG,EAAE,CAAC;IACtB,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,cAAc,EAAE,GAAG,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,gDAAgD;AAChD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,SAAS,GAAG,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4BD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED,4FAA4F;AAC5F,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAiC5B;AAED,6CAA6C;AAC7C,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAMtE;AAED,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,iCAA2B,CAAC;AAElE,8CAA8C;AAC9C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAMxE;AAED,mDAAmD;AACnD,eAAO,MAAM,0BAA0B,kCAA4B,CAAC;AAEpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * SimpleRouter multihop swap helpers.
3
+ *
4
+ * Multihop swaps walk `pools` in order; intermediate tokens remain on the router between hops.
5
+ * For ERC-20 paths, approve the router for `tokenIn` once before sending the transaction.
6
+ */
1
7
  import { encodeFunctionData } from "viem";
2
8
  import { quoteLiveExactIn, quoteLiveExactOut } from "../quoter/quotePath.js";
3
9
  import { resolveSwapPath } from "../swap/path.js";
@@ -28,6 +34,29 @@ function toExactOutputStruct(params) {
28
34
  deadline: params.deadline,
29
35
  };
30
36
  }
37
+ /**
38
+ * Build multihop exact-input params: resolves path, quotes output, applies slippage.
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const pathParams = await buildExactInputParams({
43
+ * publicClient,
44
+ * tokenIn: tokenA,
45
+ * tokenOut: tokenC,
46
+ * pools: [poolAB, poolBC],
47
+ * recipient: account,
48
+ * amountIn: parseUnits("1", 18),
49
+ * slippagePercent: 0.5,
50
+ * deadline,
51
+ * quoterAddress: addresses.quoter,
52
+ * });
53
+ * await walletClient.sendTransaction({
54
+ * to: addresses.simpleRouter,
55
+ * data: encodeExactInputCalldata(pathParams),
56
+ * account,
57
+ * });
58
+ * ```
59
+ */
31
60
  export async function buildExactInputParams(params) {
32
61
  const slippageBps = toSlippageBps(params.slippagePercent);
33
62
  const { tokens, extensionDatas, zeroForOneBitMap } = await resolveSwapPath(params.publicClient, params.tokenIn, params.tokenOut, params.pools, params.extensionDatas);
@@ -53,6 +82,7 @@ export async function buildExactInputParams(params) {
53
82
  deadline: params.deadline,
54
83
  };
55
84
  }
85
+ /** Build multihop exact-output params with live quote and slippage on `amountInMaximum`. */
56
86
  export async function buildExactOutputParams(params) {
57
87
  const slippageBps = toSlippageBps(params.slippagePercent);
58
88
  const { tokens, extensionDatas, zeroForOneBitMap } = await resolveSwapPath(params.publicClient, params.tokenIn, params.tokenOut, params.pools, params.extensionDatas);
@@ -78,6 +108,7 @@ export async function buildExactOutputParams(params) {
78
108
  deadline: params.deadline,
79
109
  };
80
110
  }
111
+ /** Encode `exactInput` multihop calldata. */
81
112
  export function encodeExactInputCalldata(params) {
82
113
  return encodeFunctionData({
83
114
  abi: SIMPLE_ROUTER_ABI,
@@ -85,7 +116,9 @@ export function encodeExactInputCalldata(params) {
85
116
  args: [toExactInputStruct(params)],
86
117
  });
87
118
  }
119
+ /** Alias for {@link encodeExactInputCalldata}. */
88
120
  export const prepareExactInputCalldata = encodeExactInputCalldata;
121
+ /** Encode `exactOutput` multihop calldata. */
89
122
  export function encodeExactOutputCalldata(params) {
90
123
  return encodeFunctionData({
91
124
  abi: SIMPLE_ROUTER_ABI,
@@ -93,6 +126,7 @@ export function encodeExactOutputCalldata(params) {
93
126
  args: [toExactOutputStruct(params)],
94
127
  });
95
128
  }
129
+ /** Alias for {@link encodeExactOutputCalldata}. */
96
130
  export const prepareExactOutputCalldata = encodeExactOutputCalldata;
97
131
  export { encodeZeroForOneBitMap } from "../swap/path.js";
98
132
  //# sourceMappingURL=swapPath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"swapPath.js","sourceRoot":"","sources":["../../src/router/swapPath.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swapPath.js","sourceRoot":"","sources":["../../src/router/swapPath.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** SimpleRouter multicall and PeripheryPayments calldata encoders. */
2
+ import type { Address, Hex } from "viem";
3
+ /** `multicall(bytes[])`. */
4
+ export declare function encodeMulticallCalldata(calls: readonly Hex[]): Hex;
5
+ /** `refundETH()` — unused native balance on the router back to caller. */
6
+ export declare function encodeRefundETHCalldata(): Hex;
7
+ /** `unwrapWETH9(amountMinimum, recipient)`. */
8
+ export declare function encodeUnwrapWETH9Calldata(amountMinimum: bigint, recipient: Address): Hex;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/router/utils.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAEtE,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIzC,4BAA4B;AAC5B,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,CAMlE;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,IAAI,GAAG,CAK7C;AAED,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,CAMxF"}
@@ -0,0 +1,27 @@
1
+ /** SimpleRouter multicall and PeripheryPayments calldata encoders. */
2
+ import { encodeFunctionData } from "viem";
3
+ import { SIMPLE_ROUTER_ABI } from "../constants.js";
4
+ /** `multicall(bytes[])`. */
5
+ export function encodeMulticallCalldata(calls) {
6
+ return encodeFunctionData({
7
+ abi: SIMPLE_ROUTER_ABI,
8
+ functionName: "multicall",
9
+ args: [calls],
10
+ });
11
+ }
12
+ /** `refundETH()` — unused native balance on the router back to caller. */
13
+ export function encodeRefundETHCalldata() {
14
+ return encodeFunctionData({
15
+ abi: SIMPLE_ROUTER_ABI,
16
+ functionName: "refundETH",
17
+ });
18
+ }
19
+ /** `unwrapWETH9(amountMinimum, recipient)`. */
20
+ export function encodeUnwrapWETH9Calldata(amountMinimum, recipient) {
21
+ return encodeFunctionData({
22
+ abi: SIMPLE_ROUTER_ABI,
23
+ functionName: "unwrapWETH9",
24
+ args: [amountMinimum, recipient],
25
+ });
26
+ }
27
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/router/utils.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAGtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,4BAA4B;AAC5B,MAAM,UAAU,uBAAuB,CAAC,KAAqB;IAC3D,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,uBAAuB;IACrC,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,WAAW;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,yBAAyB,CAAC,aAAqB,EAAE,SAAkB;IACjF,OAAO,kBAAkB,CAAC;QACxB,GAAG,EAAE,iBAAiB;QACtB,YAAY,EAAE,aAAa;QAC3B,IAAI,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;KACjC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nradko/metric-omm-sdk-v1",
3
- "version": "0.4.1",
3
+ "version": "0.4.3",
4
4
  "description": "Metric AMM SDK — v1 contracts (SimpleRouter, SwapQuoter, LiquidityAdder, extensions, add/removeLiquidity)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,7 +54,7 @@
54
54
  "type": "git",
55
55
  "url": "https://github.com/Metric-OMM/metric-sdk.git"
56
56
  },
57
- "metricPeripheryRef": "dccbda7970da36d55a86108e3dbcce1e794c9634",
57
+ "metricPeripheryRef": "e161cb0b1b301395c631197f3c7d5c205a8b4d48",
58
58
  "dependencies": {
59
59
  "viem": "^2.x"
60
60
  },
@@ -6,6 +6,11 @@ export const MetricOmmSimpleRouterAbi = [
6
6
  name: "weth",
7
7
  type: "address",
8
8
  },
9
+ {
10
+ internalType: "address",
11
+ name: "factory",
12
+ type: "address",
13
+ },
9
14
  ],
10
15
  stateMutability: "nonpayable",
11
16
  type: "constructor",
@@ -32,6 +37,17 @@ export const MetricOmmSimpleRouterAbi = [
32
37
  name: "AmountTooLarge",
33
38
  type: "error",
34
39
  },
40
+ {
41
+ inputs: [
42
+ {
43
+ internalType: "uint128",
44
+ name: "amount",
45
+ type: "uint128",
46
+ },
47
+ ],
48
+ name: "AmountTooLarge",
49
+ type: "error",
50
+ },
35
51
  {
36
52
  inputs: [],
37
53
  name: "ETHTransferFailed",
@@ -127,6 +143,11 @@ export const MetricOmmSimpleRouterAbi = [
127
143
  name: "InvalidCallbackMode",
128
144
  type: "error",
129
145
  },
146
+ {
147
+ inputs: [],
148
+ name: "InvalidFactory",
149
+ type: "error",
150
+ },
130
151
  {
131
152
  inputs: [
132
153
  {
@@ -190,6 +211,17 @@ export const MetricOmmSimpleRouterAbi = [
190
211
  name: "InvalidPath",
191
212
  type: "error",
192
213
  },
214
+ {
215
+ inputs: [
216
+ {
217
+ internalType: "address",
218
+ name: "pool",
219
+ type: "address",
220
+ },
221
+ ],
222
+ name: "InvalidPool",
223
+ type: "error",
224
+ },
193
225
  {
194
226
  inputs: [
195
227
  {
@@ -206,6 +238,32 @@ export const MetricOmmSimpleRouterAbi = [
206
238
  name: "InvalidPriceLimitForDirection",
207
239
  type: "error",
208
240
  },
241
+ {
242
+ inputs: [
243
+ {
244
+ internalType: "bool",
245
+ name: "zeroForOne",
246
+ type: "bool",
247
+ },
248
+ {
249
+ internalType: "uint128",
250
+ name: "priceLimitX64",
251
+ type: "uint128",
252
+ },
253
+ ],
254
+ name: "InvalidPriceLimitForDirection",
255
+ type: "error",
256
+ },
257
+ {
258
+ inputs: [],
259
+ name: "InvalidSwapDeltas",
260
+ type: "error",
261
+ },
262
+ {
263
+ inputs: [],
264
+ name: "InvalidSwapDeltas",
265
+ type: "error",
266
+ },
209
267
  {
210
268
  inputs: [],
211
269
  name: "InvalidSwapDeltas",