@nradko/metric-omm-sdk-v1 0.3.0 → 0.4.2

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 (110) hide show
  1. package/README.md +98 -111
  2. package/dist/abis/MetricOmmPool.d.ts +14 -0
  3. package/dist/abis/MetricOmmPool.d.ts.map +1 -1
  4. package/dist/abis/MetricOmmPool.js +18 -0
  5. package/dist/abis/MetricOmmPool.js.map +1 -1
  6. package/dist/abis/MetricOmmPoolDataProvider.d.ts +0 -136
  7. package/dist/abis/MetricOmmPoolDataProvider.d.ts.map +1 -1
  8. package/dist/abis/MetricOmmPoolDataProvider.js +0 -177
  9. package/dist/abis/MetricOmmPoolDataProvider.js.map +1 -1
  10. package/dist/abis/MetricOmmPoolStateView.d.ts +238 -0
  11. package/dist/abis/MetricOmmPoolStateView.d.ts.map +1 -0
  12. package/dist/abis/MetricOmmPoolStateView.js +315 -0
  13. package/dist/abis/MetricOmmPoolStateView.js.map +1 -0
  14. package/dist/abis/MetricOmmSimpleRouter.d.ts +619 -0
  15. package/dist/abis/{MetricOmmPoolSwapper.d.ts.map → MetricOmmSimpleRouter.d.ts.map} +1 -1
  16. package/dist/abis/MetricOmmSimpleRouter.js +805 -0
  17. package/dist/abis/MetricOmmSimpleRouter.js.map +1 -0
  18. package/dist/abis/MetricOmmSwapQuoter.d.ts +576 -0
  19. package/dist/abis/{PriceProviderUi.d.ts.map → MetricOmmSwapQuoter.d.ts.map} +1 -1
  20. package/dist/abis/MetricOmmSwapQuoter.js +748 -0
  21. package/dist/abis/MetricOmmSwapQuoter.js.map +1 -0
  22. package/dist/abis/OracleProvider.d.ts +106 -0
  23. package/dist/abis/OracleProvider.d.ts.map +1 -0
  24. package/dist/abis/OracleProvider.js +62 -0
  25. package/dist/abis/OracleProvider.js.map +1 -0
  26. package/dist/abis/PriceProvider.d.ts +8 -2
  27. package/dist/abis/PriceProvider.d.ts.map +1 -1
  28. package/dist/abis/PriceProvider.js +9 -1
  29. package/dist/abis/PriceProvider.js.map +1 -1
  30. package/dist/abis/index.d.ts +4 -2
  31. package/dist/abis/index.d.ts.map +1 -1
  32. package/dist/abis/index.js +4 -2
  33. package/dist/abis/index.js.map +1 -1
  34. package/dist/addresses.d.ts +3 -3
  35. package/dist/addresses.d.ts.map +1 -1
  36. package/dist/addresses.js +10 -10
  37. package/dist/addresses.js.map +1 -1
  38. package/dist/constants.d.ts +4 -1
  39. package/dist/constants.d.ts.map +1 -1
  40. package/dist/constants.js +7 -2
  41. package/dist/constants.js.map +1 -1
  42. package/dist/index.d.ts +5 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +8 -4
  45. package/dist/index.js.map +1 -1
  46. package/dist/oracle/index.d.ts +5 -0
  47. package/dist/oracle/index.d.ts.map +1 -0
  48. package/dist/oracle/index.js +5 -0
  49. package/dist/oracle/index.js.map +1 -0
  50. package/dist/oracle/registry.d.ts +53 -0
  51. package/dist/oracle/registry.d.ts.map +1 -0
  52. package/dist/oracle/registry.js +70 -0
  53. package/dist/oracle/registry.js.map +1 -0
  54. package/dist/quoter/index.d.ts +6 -0
  55. package/dist/quoter/index.d.ts.map +1 -0
  56. package/dist/quoter/index.js +6 -0
  57. package/dist/quoter/index.js.map +1 -0
  58. package/dist/quoter/quote.d.ts +58 -0
  59. package/dist/quoter/quote.d.ts.map +1 -0
  60. package/dist/quoter/quote.js +74 -0
  61. package/dist/quoter/quote.js.map +1 -0
  62. package/dist/quoter/quotePath.d.ts +65 -0
  63. package/dist/quoter/quotePath.d.ts.map +1 -0
  64. package/dist/quoter/quotePath.js +108 -0
  65. package/dist/quoter/quotePath.js.map +1 -0
  66. package/dist/router/index.d.ts +2 -1
  67. package/dist/router/index.d.ts.map +1 -1
  68. package/dist/router/index.js +2 -1
  69. package/dist/router/index.js.map +1 -1
  70. package/dist/router/swap.d.ts +37 -92
  71. package/dist/router/swap.d.ts.map +1 -1
  72. package/dist/router/swap.js +96 -298
  73. package/dist/router/swap.js.map +1 -1
  74. package/dist/router/swapPath.d.ts +56 -0
  75. package/dist/router/swapPath.d.ts.map +1 -0
  76. package/dist/router/swapPath.js +98 -0
  77. package/dist/router/swapPath.js.map +1 -0
  78. package/dist/swap/path.d.ts +13 -0
  79. package/dist/swap/path.d.ts.map +1 -0
  80. package/dist/swap/path.js +74 -0
  81. package/dist/swap/path.js.map +1 -0
  82. package/package.json +4 -5
  83. package/src/abis/MetricOmmPool.ts +18 -0
  84. package/src/abis/MetricOmmPoolDataProvider.ts +0 -177
  85. package/src/abis/MetricOmmPoolStateView.ts +314 -0
  86. package/src/abis/MetricOmmSimpleRouter.ts +804 -0
  87. package/src/abis/MetricOmmSwapQuoter.ts +747 -0
  88. package/src/abis/OracleProvider.ts +61 -0
  89. package/src/abis/PriceProvider.ts +9 -1
  90. package/src/abis/index.ts +4 -2
  91. package/src/addresses.ts +13 -13
  92. package/src/constants.ts +7 -2
  93. package/src/index.ts +62 -23
  94. package/src/oracle/index.ts +14 -0
  95. package/src/oracle/registry.ts +146 -0
  96. package/src/quoter/index.ts +28 -0
  97. package/src/quoter/quote.ts +193 -0
  98. package/src/quoter/quotePath.ts +240 -0
  99. package/src/router/index.ts +24 -25
  100. package/src/router/swap.ts +142 -480
  101. package/src/router/swapPath.ts +181 -0
  102. package/src/swap/path.ts +107 -0
  103. package/dist/abis/MetricOmmPoolSwapper.d.ts +0 -917
  104. package/dist/abis/MetricOmmPoolSwapper.js +0 -1185
  105. package/dist/abis/MetricOmmPoolSwapper.js.map +0 -1
  106. package/dist/abis/PriceProviderUi.d.ts +0 -433
  107. package/dist/abis/PriceProviderUi.js +0 -318
  108. package/dist/abis/PriceProviderUi.js.map +0 -1
  109. package/src/abis/MetricOmmPoolSwapper.ts +0 -1184
  110. package/src/abis/PriceProviderUi.ts +0 -317
@@ -1,119 +1,64 @@
1
1
  /**
2
- * MetricAMM SDK - Swapper (v1 periphery) helpers for building and encoding swaps.
2
+ * MetricAMM SDK - SimpleRouter single-hop swap helpers.
3
3
  */
4
- import type { Address, PublicClient, Hex } from "viem";
5
- export interface PreparedSwapTransaction {
6
- data: Hex;
7
- value?: bigint;
8
- }
9
- export type SwapExactInputArgs = readonly [
10
- Address,
11
- Address,
12
- boolean,
13
- bigint,
14
- bigint,
15
- bigint,
16
- bigint
17
- ];
18
- export type SwapExactInputParams = {
4
+ import type { Address, Hex } from "viem";
5
+ import type { PublicClient } from "viem";
6
+ export type ExactInputSingleParams = {
19
7
  pool: Address;
20
- recipient: Address;
8
+ tokenIn: Address;
9
+ tokenOut: Address;
21
10
  zeroForOne: boolean;
22
11
  amountIn: bigint;
23
- priceLimitX64: bigint;
24
- minAmountOut: bigint;
12
+ amountOutMinimum: bigint;
13
+ recipient: Address;
25
14
  deadline: bigint;
15
+ priceLimitX64: bigint;
16
+ extensionData?: Hex;
26
17
  };
27
- export type SwapExactOutputArgs = readonly [
28
- Address,
29
- Address,
30
- boolean,
31
- bigint,
32
- bigint,
33
- bigint,
34
- bigint
35
- ];
36
- export type SwapExactOutputParams = {
18
+ export type ExactOutputSingleParams = {
37
19
  pool: Address;
38
- recipient: Address;
20
+ tokenIn: Address;
21
+ tokenOut: Address;
39
22
  zeroForOne: boolean;
40
23
  amountOut: bigint;
41
- priceLimitX64: bigint;
42
- maxAmountIn: bigint;
24
+ amountInMaximum: bigint;
25
+ recipient: Address;
43
26
  deadline: bigint;
27
+ priceLimitX64: bigint;
28
+ extensionData?: Hex;
44
29
  };
45
- export interface BuildSwapPrices {
46
- bidPriceX64: bigint;
47
- askPriceX64: bigint;
48
- }
49
- /** Shared fields for swap builders that may auto-fetch bid/ask from the pool's price provider. */
50
- export interface BuildSwapWithFactoryParams {
30
+ export interface BuildExactInputSingleParams {
51
31
  publicClient: PublicClient;
52
- /** Factory that deployed the pool (required when `prices` is omitted). */
53
- factoryAddress?: Address;
54
32
  pool: Address;
55
- prices?: BuildSwapPrices;
56
- extensionData?: Hex;
57
- }
58
- export interface BuildSwapExactInputParams extends BuildSwapWithFactoryParams {
59
- swapperAddress: Address;
33
+ tokenIn: Address;
34
+ tokenOut: Address;
60
35
  recipient: Address;
61
- zeroForOne: boolean;
62
36
  amountIn: bigint;
63
37
  slippagePercent: number;
64
38
  priceLimitX64?: bigint;
65
39
  deadline: bigint;
40
+ extensionData?: Hex;
41
+ quoterAddress?: Address;
66
42
  }
67
- export interface BuildSwapExactOutputParams extends BuildSwapWithFactoryParams {
68
- swapperAddress: Address;
43
+ export interface BuildExactOutputSingleParams {
44
+ publicClient: PublicClient;
45
+ pool: Address;
46
+ tokenIn: Address;
47
+ tokenOut: Address;
69
48
  recipient: Address;
70
- zeroForOne: boolean;
71
49
  amountOut: bigint;
72
50
  slippagePercent: number;
73
51
  priceLimitX64?: bigint;
74
52
  deadline: bigint;
53
+ extensionData?: Hex;
54
+ quoterAddress?: Address;
75
55
  }
76
- export type QuoteExpectedAmountsForSwapExactInputParams = Omit<BuildSwapExactInputParams, "deadline">;
77
- export type QuoteExpectedAmountsForSwapExactOutputParams = Omit<BuildSwapExactOutputParams, "deadline">;
78
- export declare function buildArgsForSwapExactInput(params: BuildSwapExactInputParams): Promise<SwapExactInputArgs>;
79
- export declare function buildArgsAndExpectedAmountsForSwapExactInput(params: BuildSwapExactInputParams): Promise<{
80
- args: SwapExactInputArgs;
81
- expectedInput: bigint;
82
- expectedOutput: bigint;
83
- }>;
84
- export type QuoteSwapParams = BuildSwapWithFactoryParams & {
85
- swapperAddress: Address;
86
- zeroForOne: boolean;
87
- amountSpecified: bigint;
88
- priceLimitX64?: bigint;
89
- /** Defaults to zero address when omitted. */
90
- recipient?: Address;
91
- };
92
- export type QuoteSwapResult = {
93
- amount0Delta: bigint;
94
- amount1Delta: bigint;
95
- amountIn: bigint;
96
- amountOut: bigint;
97
- };
98
- export declare function quoteSwap(params: QuoteSwapParams): Promise<QuoteSwapResult>;
99
- export declare function quoteExpectedAmountsForSwapExactInput(params: QuoteExpectedAmountsForSwapExactInputParams): Promise<{
100
- expectedInput: bigint;
101
- expectedOutput: bigint;
102
- }>;
103
- export declare function buildArgsForSwapExactOutput(params: BuildSwapExactOutputParams): Promise<SwapExactOutputArgs>;
104
- export declare function buildArgsAndExpectedAmountsForSwapExactOutput(params: BuildSwapExactOutputParams): Promise<{
105
- args: SwapExactOutputArgs;
106
- expectedInput: bigint;
107
- expectedOutput: bigint;
108
- }>;
109
- export declare function quoteExpectedAmountsForSwapExactOutput(params: QuoteExpectedAmountsForSwapExactOutputParams): Promise<{
110
- expectedInput: bigint;
111
- expectedOutput: bigint;
112
- }>;
113
- export declare function encodeSwapExactInputCalldata(argsOrParams: SwapExactInputArgs | SwapExactInputParams): `0x${string}`;
114
- export declare const prepareSwapExactInputCalldata: typeof encodeSwapExactInputCalldata;
115
- export declare function encodeSwapExactOutputCalldata(argsOrParams: SwapExactOutputArgs | SwapExactOutputParams): `0x${string}`;
116
- export declare const prepareSwapExactOutputCalldata: typeof encodeSwapExactOutputCalldata;
117
- export declare function encodeSwapExactInputNativeForTokensCalldata(params: SwapExactInputParams): PreparedSwapTransaction;
118
- export declare const prepareSwapExactInputNativeForTokensCalldata: typeof encodeSwapExactInputNativeForTokensCalldata;
56
+ export declare function toSlippageBps(slippagePercent: number): bigint;
57
+ export declare function ceilDiv(numerator: bigint, denominator: bigint): bigint;
58
+ export declare function buildExactInputSingleParams(params: BuildExactInputSingleParams): Promise<ExactInputSingleParams>;
59
+ export declare function buildExactOutputSingleParams(params: BuildExactOutputSingleParams): Promise<ExactOutputSingleParams>;
60
+ export declare function encodeExactInputSingleCalldata(params: ExactInputSingleParams): Hex;
61
+ export declare const prepareExactInputSingleCalldata: typeof encodeExactInputSingleCalldata;
62
+ export declare function encodeExactOutputSingleCalldata(params: ExactOutputSingleParams): Hex;
63
+ export declare const prepareExactOutputSingleCalldata: typeof encodeExactOutputSingleCalldata;
119
64
  //# sourceMappingURL=swap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../src/router/swap.ts"],"names":[],"mappings":"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"}
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,332 +1,130 @@
1
1
  /**
2
- * MetricAMM SDK - Swapper (v1 periphery) helpers for building and encoding swaps.
2
+ * MetricAMM SDK - SimpleRouter single-hop swap helpers.
3
3
  */
4
- import { encodeFunctionData, zeroAddress } from "viem";
5
- import { MAX_UINT128, POOL_ABI, SWAPPER_ABI } from "../constants.js";
4
+ import { encodeFunctionData } from "viem";
5
+ import { defaultPriceLimitX64 } from "../quoter/quotePath.js";
6
+ import { quoteLiveExactInSingle, quoteLiveExactOutSingle } from "../quoter/quote.js";
7
+ import { resolveSwapPath } from "../swap/path.js";
8
+ import { SIMPLE_ROUTER_ABI } from "../constants.js";
6
9
  import { EMPTY_EXTENSION_DATA } from "../extensions/types.js";
7
- import { PriceProviderUiAbi } from "../abis/PriceProviderUi.js";
8
10
  const BPS_BASE = 10000n;
9
- function withExtensionData(args) {
10
- return args.length >= 8 ? args : [...args, EMPTY_EXTENSION_DATA];
11
- }
12
- function quoteSwapArgs(params) {
13
- return [
14
- params.pool,
15
- params.recipient,
16
- params.zeroForOne,
17
- params.amountSpecified,
18
- params.priceLimitX64,
19
- params.bidPriceX64,
20
- params.askPriceX64,
21
- params.extensionData ?? EMPTY_EXTENSION_DATA,
22
- ];
23
- }
24
- function toSlippageBps(slippagePercent) {
11
+ export function toSlippageBps(slippagePercent) {
25
12
  if (!Number.isFinite(slippagePercent) || slippagePercent < 0 || slippagePercent > 100) {
26
13
  throw new Error("slippagePercent must be a finite number between 0 and 100");
27
14
  }
28
15
  return BigInt(Math.round(slippagePercent * 100));
29
16
  }
30
- function absBigInt(value) {
31
- return value < 0n ? -value : value;
32
- }
33
- function ceilDiv(numerator, denominator) {
17
+ export function ceilDiv(numerator, denominator) {
34
18
  if (denominator <= 0n) {
35
19
  throw new Error("denominator must be > 0");
36
20
  }
37
21
  return numerator === 0n ? 0n : (numerator + denominator - 1n) / denominator;
38
22
  }
39
- function defaultPriceLimitX64(zeroForOne) {
40
- return zeroForOne ? 0n : MAX_UINT128;
41
- }
42
- async function readBidAskFromPoolPriceProvider(publicClient, poolAddress) {
43
- const imm = (await publicClient.readContract({
44
- address: poolAddress,
45
- abi: POOL_ABI,
46
- functionName: "getImmutables",
47
- }));
48
- const priceProviderAddress = imm.immutablePriceProvider;
49
- if (!priceProviderAddress ||
50
- priceProviderAddress === "0x0000000000000000000000000000000000000000") {
51
- throw new Error(`pool ${poolAddress} has no immutable price provider (getImmutables)`);
52
- }
53
- const [bidPriceX64, askPriceX64] = (await publicClient.readContract({
54
- address: priceProviderAddress,
55
- abi: PriceProviderUiAbi,
56
- functionName: "getBidAndAskPriceUi",
57
- }));
58
- return { bidPriceX64, askPriceX64 };
59
- }
60
- async function resolveBidAskPrices(params) {
61
- if (params.prices) {
62
- return params.prices;
63
- }
64
- return readBidAskFromPoolPriceProvider(params.publicClient, params.pool);
23
+ function withExtensionData(extensionData) {
24
+ return extensionData ?? EMPTY_EXTENSION_DATA;
65
25
  }
66
- export async function buildArgsForSwapExactInput(params) {
67
- const slippageBps = toSlippageBps(params.slippagePercent);
68
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
69
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
70
- const { result: [amount0Delta, amount1Delta], } = (await params.publicClient.simulateContract({
71
- address: params.swapperAddress,
72
- abi: SWAPPER_ABI,
73
- functionName: "quoteSwap",
74
- args: quoteSwapArgs({
75
- pool: params.pool,
76
- recipient: params.recipient,
77
- zeroForOne: params.zeroForOne,
78
- amountSpecified: params.amountIn,
79
- priceLimitX64,
80
- bidPriceX64,
81
- askPriceX64,
82
- extensionData: params.extensionData,
83
- }),
84
- account: params.recipient,
85
- }));
86
- const amountSwapWillResultIn = params.zeroForOne
87
- ? absBigInt(amount1Delta)
88
- : absBigInt(amount0Delta);
89
- const minAmountOut = (amountSwapWillResultIn * (BPS_BASE - slippageBps)) / BPS_BASE;
90
- return [
91
- params.pool,
92
- params.recipient,
93
- params.zeroForOne,
94
- params.amountIn,
95
- priceLimitX64,
96
- minAmountOut,
97
- params.deadline,
98
- ];
99
- }
100
- export async function buildArgsAndExpectedAmountsForSwapExactInput(params) {
101
- const slippageBps = toSlippageBps(params.slippagePercent);
102
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
103
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
104
- const { result: [amount0Delta, amount1Delta], } = (await params.publicClient.simulateContract({
105
- address: params.swapperAddress,
106
- abi: SWAPPER_ABI,
107
- functionName: "quoteSwap",
108
- args: quoteSwapArgs({
109
- pool: params.pool,
110
- recipient: params.recipient,
111
- zeroForOne: params.zeroForOne,
112
- amountSpecified: params.amountIn,
113
- priceLimitX64,
114
- bidPriceX64,
115
- askPriceX64,
116
- extensionData: params.extensionData,
117
- }),
118
- account: params.recipient,
119
- }));
120
- const expectedOutput = params.zeroForOne ? absBigInt(amount1Delta) : absBigInt(amount0Delta);
121
- const expectedInput = params.zeroForOne ? absBigInt(amount0Delta) : absBigInt(amount1Delta);
122
- const minAmountOut = (expectedOutput * (BPS_BASE - slippageBps)) / BPS_BASE;
123
- const args = [
124
- params.pool,
125
- params.recipient,
126
- params.zeroForOne,
127
- params.amountIn,
128
- priceLimitX64,
129
- minAmountOut,
130
- params.deadline,
131
- ];
26
+ function toExactInputSingleStruct(params) {
132
27
  return {
133
- args,
134
- expectedInput,
135
- expectedOutput,
28
+ pool: params.pool,
29
+ tokenIn: params.tokenIn,
30
+ tokenOut: params.tokenOut,
31
+ zeroForOne: params.zeroForOne,
32
+ amountIn: params.amountIn,
33
+ amountOutMinimum: params.amountOutMinimum,
34
+ recipient: params.recipient,
35
+ deadline: params.deadline,
36
+ priceLimitX64: params.priceLimitX64,
37
+ extensionData: withExtensionData(params.extensionData),
136
38
  };
137
39
  }
138
- export async function quoteSwap(params) {
139
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
140
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
141
- const [amount0Delta, amount1Delta] = (await params.publicClient.readContract({
142
- address: params.swapperAddress,
143
- abi: SWAPPER_ABI,
144
- functionName: "quoteSwap",
145
- args: quoteSwapArgs({
146
- pool: params.pool,
147
- recipient: params.recipient ?? zeroAddress,
148
- zeroForOne: params.zeroForOne,
149
- amountSpecified: params.amountSpecified,
150
- priceLimitX64,
151
- bidPriceX64,
152
- askPriceX64,
153
- extensionData: params.extensionData,
154
- }),
155
- }));
156
- const amountIn = params.zeroForOne ? absBigInt(amount0Delta) : absBigInt(amount1Delta);
157
- const amountOut = params.zeroForOne ? absBigInt(amount1Delta) : absBigInt(amount0Delta);
158
- return { amount0Delta, amount1Delta, amountIn, amountOut };
159
- }
160
- export async function quoteExpectedAmountsForSwapExactInput(params) {
161
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
162
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
163
- const [amount0Delta, amount1Delta] = (await params.publicClient.readContract({
164
- address: params.swapperAddress,
165
- abi: SWAPPER_ABI,
166
- functionName: "quoteSwap",
167
- args: quoteSwapArgs({
168
- pool: params.pool,
169
- recipient: params.recipient,
170
- zeroForOne: params.zeroForOne,
171
- amountSpecified: params.amountIn,
172
- priceLimitX64,
173
- bidPriceX64,
174
- askPriceX64,
175
- extensionData: params.extensionData,
176
- }),
177
- }));
178
- const expectedOutput = params.zeroForOne ? absBigInt(amount1Delta) : absBigInt(amount0Delta);
179
- const expectedInput = params.zeroForOne ? absBigInt(amount0Delta) : absBigInt(amount1Delta);
180
- return { expectedInput, expectedOutput };
40
+ function toExactOutputSingleStruct(params) {
41
+ return {
42
+ pool: params.pool,
43
+ tokenIn: params.tokenIn,
44
+ tokenOut: params.tokenOut,
45
+ zeroForOne: params.zeroForOne,
46
+ amountOut: params.amountOut,
47
+ amountInMaximum: params.amountInMaximum,
48
+ recipient: params.recipient,
49
+ deadline: params.deadline,
50
+ priceLimitX64: params.priceLimitX64,
51
+ extensionData: withExtensionData(params.extensionData),
52
+ };
181
53
  }
182
- export async function buildArgsForSwapExactOutput(params) {
54
+ export async function buildExactInputSingleParams(params) {
183
55
  const slippageBps = toSlippageBps(params.slippagePercent);
184
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
185
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
186
- const { result: [amount0Delta, amount1Delta], } = (await params.publicClient.simulateContract({
187
- address: params.swapperAddress,
188
- abi: SWAPPER_ABI,
189
- functionName: "quoteSwap",
190
- args: quoteSwapArgs({
191
- pool: params.pool,
192
- recipient: params.recipient,
193
- zeroForOne: params.zeroForOne,
194
- amountSpecified: -params.amountOut,
195
- priceLimitX64,
196
- bidPriceX64,
197
- askPriceX64,
198
- extensionData: params.extensionData,
199
- }),
200
- account: params.recipient,
201
- }));
202
- const quotedAmountIn = params.zeroForOne ? absBigInt(amount0Delta) : absBigInt(amount1Delta);
203
- const maxAmountIn = ceilDiv(quotedAmountIn * (BPS_BASE + slippageBps), BPS_BASE);
204
- return [
205
- params.pool,
206
- params.recipient,
207
- params.zeroForOne,
208
- params.amountOut,
56
+ const { zeroForOnes } = await resolveSwapPath(params.publicClient, params.tokenIn, params.tokenOut, [params.pool], params.extensionData ? [params.extensionData] : undefined);
57
+ const zeroForOne = zeroForOnes[0];
58
+ const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(zeroForOne);
59
+ const { amountOut } = await quoteLiveExactInSingle({
60
+ publicClient: params.publicClient,
61
+ pool: params.pool,
62
+ tokenIn: params.tokenIn,
63
+ tokenOut: params.tokenOut,
64
+ recipient: params.recipient,
65
+ amountIn: params.amountIn,
209
66
  priceLimitX64,
210
- maxAmountIn,
211
- params.deadline,
212
- ];
67
+ extensionData: params.extensionData,
68
+ quoterAddress: params.quoterAddress,
69
+ });
70
+ const amountOutMinimum = (amountOut * (BPS_BASE - slippageBps)) / BPS_BASE;
71
+ return {
72
+ pool: params.pool,
73
+ tokenIn: params.tokenIn,
74
+ tokenOut: params.tokenOut,
75
+ zeroForOne,
76
+ amountIn: params.amountIn,
77
+ amountOutMinimum,
78
+ recipient: params.recipient,
79
+ deadline: params.deadline,
80
+ priceLimitX64,
81
+ extensionData: params.extensionData,
82
+ };
213
83
  }
214
- export async function buildArgsAndExpectedAmountsForSwapExactOutput(params) {
84
+ export async function buildExactOutputSingleParams(params) {
215
85
  const slippageBps = toSlippageBps(params.slippagePercent);
216
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
217
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
218
- const { result: [amount0Delta, amount1Delta], } = (await params.publicClient.simulateContract({
219
- address: params.swapperAddress,
220
- abi: SWAPPER_ABI,
221
- functionName: "quoteSwap",
222
- args: quoteSwapArgs({
223
- pool: params.pool,
224
- recipient: params.recipient,
225
- zeroForOne: params.zeroForOne,
226
- amountSpecified: -params.amountOut,
227
- priceLimitX64,
228
- bidPriceX64,
229
- askPriceX64,
230
- extensionData: params.extensionData,
231
- }),
232
- account: params.recipient,
233
- }));
234
- const expectedInput = params.zeroForOne ? absBigInt(amount0Delta) : absBigInt(amount1Delta);
235
- const expectedOutput = params.zeroForOne ? absBigInt(amount1Delta) : absBigInt(amount0Delta);
236
- const maxAmountIn = ceilDiv(expectedInput * (BPS_BASE + slippageBps), BPS_BASE);
237
- const args = [
238
- params.pool,
239
- params.recipient,
240
- params.zeroForOne,
241
- params.amountOut,
86
+ const { zeroForOnes } = await resolveSwapPath(params.publicClient, params.tokenIn, params.tokenOut, [params.pool], params.extensionData ? [params.extensionData] : undefined);
87
+ const zeroForOne = zeroForOnes[0];
88
+ const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(zeroForOne);
89
+ const { amountIn } = await quoteLiveExactOutSingle({
90
+ publicClient: params.publicClient,
91
+ pool: params.pool,
92
+ tokenIn: params.tokenIn,
93
+ tokenOut: params.tokenOut,
94
+ recipient: params.recipient,
95
+ amountOut: params.amountOut,
242
96
  priceLimitX64,
243
- maxAmountIn,
244
- params.deadline,
245
- ];
97
+ extensionData: params.extensionData,
98
+ quoterAddress: params.quoterAddress,
99
+ });
100
+ const amountInMaximum = ceilDiv(amountIn * (BPS_BASE + slippageBps), BPS_BASE);
246
101
  return {
247
- args,
248
- expectedInput,
249
- expectedOutput,
102
+ pool: params.pool,
103
+ tokenIn: params.tokenIn,
104
+ tokenOut: params.tokenOut,
105
+ zeroForOne,
106
+ amountOut: params.amountOut,
107
+ amountInMaximum,
108
+ recipient: params.recipient,
109
+ deadline: params.deadline,
110
+ priceLimitX64,
111
+ extensionData: params.extensionData,
250
112
  };
251
113
  }
252
- export async function quoteExpectedAmountsForSwapExactOutput(params) {
253
- const priceLimitX64 = params.priceLimitX64 ?? defaultPriceLimitX64(params.zeroForOne);
254
- const { bidPriceX64, askPriceX64 } = await resolveBidAskPrices(params);
255
- const [amount0Delta, amount1Delta] = (await params.publicClient.readContract({
256
- address: params.swapperAddress,
257
- abi: SWAPPER_ABI,
258
- functionName: "quoteSwap",
259
- args: quoteSwapArgs({
260
- pool: params.pool,
261
- recipient: params.recipient,
262
- zeroForOne: params.zeroForOne,
263
- amountSpecified: -params.amountOut,
264
- priceLimitX64,
265
- bidPriceX64,
266
- askPriceX64,
267
- extensionData: params.extensionData,
268
- }),
269
- }));
270
- const expectedInput = params.zeroForOne ? absBigInt(amount0Delta) : absBigInt(amount1Delta);
271
- const expectedOutput = params.zeroForOne ? absBigInt(amount1Delta) : absBigInt(amount0Delta);
272
- return { expectedInput, expectedOutput };
273
- }
274
- export function encodeSwapExactInputCalldata(argsOrParams) {
275
- const args = Array.isArray(argsOrParams)
276
- ? argsOrParams
277
- : [
278
- argsOrParams.pool,
279
- argsOrParams.recipient,
280
- argsOrParams.zeroForOne,
281
- argsOrParams.amountIn,
282
- argsOrParams.priceLimitX64,
283
- argsOrParams.minAmountOut,
284
- argsOrParams.deadline,
285
- ];
114
+ export function encodeExactInputSingleCalldata(params) {
286
115
  return encodeFunctionData({
287
- abi: SWAPPER_ABI,
288
- functionName: "swapExactInput",
289
- args: withExtensionData(args),
116
+ abi: SIMPLE_ROUTER_ABI,
117
+ functionName: "exactInputSingle",
118
+ args: [toExactInputSingleStruct(params)],
290
119
  });
291
120
  }
292
- export const prepareSwapExactInputCalldata = encodeSwapExactInputCalldata;
293
- export function encodeSwapExactOutputCalldata(argsOrParams) {
294
- const args = Array.isArray(argsOrParams)
295
- ? argsOrParams
296
- : [
297
- argsOrParams.pool,
298
- argsOrParams.recipient,
299
- argsOrParams.zeroForOne,
300
- argsOrParams.amountOut,
301
- argsOrParams.priceLimitX64,
302
- argsOrParams.maxAmountIn,
303
- argsOrParams.deadline,
304
- ];
121
+ export const prepareExactInputSingleCalldata = encodeExactInputSingleCalldata;
122
+ export function encodeExactOutputSingleCalldata(params) {
305
123
  return encodeFunctionData({
306
- abi: SWAPPER_ABI,
307
- functionName: "swapExactOutput",
308
- args: withExtensionData(args),
309
- });
310
- }
311
- export const prepareSwapExactOutputCalldata = encodeSwapExactOutputCalldata;
312
- export function encodeSwapExactInputNativeForTokensCalldata(params) {
313
- const data = encodeFunctionData({
314
- abi: SWAPPER_ABI,
315
- functionName: "swapExactInputNativeForTokens",
316
- args: withExtensionData([
317
- params.pool,
318
- params.recipient,
319
- params.zeroForOne,
320
- params.amountIn,
321
- params.priceLimitX64,
322
- params.minAmountOut,
323
- params.deadline,
324
- ]),
124
+ abi: SIMPLE_ROUTER_ABI,
125
+ functionName: "exactOutputSingle",
126
+ args: [toExactOutputSingleStruct(params)],
325
127
  });
326
- return {
327
- data,
328
- value: params.amountIn,
329
- };
330
128
  }
331
- export const prepareSwapExactInputNativeForTokensCalldata = encodeSwapExactInputNativeForTokensCalldata;
129
+ export const prepareExactOutputSingleCalldata = encodeExactOutputSingleCalldata;
332
130
  //# 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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"}