@panoptic-eng/sdk 1.0.26 → 1.0.28

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 (61) hide show
  1. package/dist/cow/index.d.ts +5 -4
  2. package/dist/cow/index.js +4 -3
  3. package/dist/cow/types.d.ts +2 -2
  4. package/dist/{cow-UR3yv8Wz.js → cow-Boc-39-Y.js} +2 -2
  5. package/dist/{cow-UR3yv8Wz.js.map → cow-Boc-39-Y.js.map} +1 -1
  6. package/dist/greeks-GysWXct-.js +1072 -0
  7. package/dist/greeks-GysWXct-.js.map +1 -0
  8. package/dist/index-B3JZRUNo.d.ts +9084 -0
  9. package/dist/index-B3JZRUNo.d.ts.map +1 -0
  10. package/dist/index-CDCAju5o.d.ts +261 -0
  11. package/dist/index-CDCAju5o.d.ts.map +1 -0
  12. package/dist/{index-CIlr4SNh.d.ts → index-DQS8Luef.d.ts} +4 -4
  13. package/dist/{index-CIlr4SNh.d.ts.map → index-DQS8Luef.d.ts.map} +1 -1
  14. package/dist/index.d.ts +14 -14
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -2
  17. package/dist/index.js.map +1 -1
  18. package/dist/{irm-Dw6fa-DV.js → irm-B0Bgj0z8.js} +4 -3
  19. package/dist/{irm-Dw6fa-DV.js.map → irm-B0Bgj0z8.js.map} +1 -1
  20. package/dist/{irm-CSJX9BsU.d.ts → irm-BNtE1Dmg.d.ts} +2 -2
  21. package/dist/{irm-CSJX9BsU.d.ts.map → irm-BNtE1Dmg.d.ts.map} +1 -1
  22. package/dist/{types-CspUPolV.d.ts → oracle-BnpPVG8V.d.ts} +4 -244
  23. package/dist/oracle-BnpPVG8V.d.ts.map +1 -0
  24. package/dist/panoptic/v2/greeks/index.d.ts +3 -0
  25. package/dist/panoptic/v2/greeks/index.js +3 -0
  26. package/dist/panoptic/v2/index.d.ts +8 -10180
  27. package/dist/panoptic/v2/index.js +6 -11281
  28. package/dist/panoptic/v2/react-public.d.ts +886 -0
  29. package/dist/panoptic/v2/react-public.d.ts.map +1 -0
  30. package/dist/panoptic/v2/react-public.js +3854 -0
  31. package/dist/panoptic/v2/react-public.js.map +1 -0
  32. package/dist/position-Bmd_3nzI.d.ts +199 -0
  33. package/dist/position-Bmd_3nzI.d.ts.map +1 -0
  34. package/dist/{position-GYsTTl71.js → position-R0IGLpQS.js} +3 -1056
  35. package/dist/position-R0IGLpQS.js.map +1 -0
  36. package/dist/{router-DGUQo-8h.js → router-NPhQUNh4.js} +2 -2
  37. package/dist/{router-DGUQo-8h.js.map → router-NPhQUNh4.js.map} +1 -1
  38. package/dist/{simulation-4SzTI-xf.d.ts → simulation-CUqERC5Y.d.ts} +21 -198
  39. package/dist/simulation-CUqERC5Y.d.ts.map +1 -0
  40. package/dist/test/index.d.ts +2 -2
  41. package/dist/test/index.d.ts.map +1 -1
  42. package/dist/{tx-Banz1S18.d.ts → tx-BXXqhBHn.d.ts} +1 -1
  43. package/dist/{tx-Banz1S18.d.ts.map → tx-BXXqhBHn.d.ts.map} +1 -1
  44. package/dist/{types-Bzw_7NJv.d.ts → types-DgWfno7q.d.ts} +2 -2
  45. package/dist/{types-Bzw_7NJv.d.ts.map → types-DgWfno7q.d.ts.map} +1 -1
  46. package/dist/types-VeWdNN0j.d.ts +247 -0
  47. package/dist/types-VeWdNN0j.d.ts.map +1 -0
  48. package/dist/uniswap/index.d.ts +5 -3
  49. package/dist/uniswap/index.d.ts.map +1 -1
  50. package/dist/uniswap/index.js +4 -3
  51. package/dist/uniswap/index.js.map +1 -1
  52. package/dist/v2-CkOo7vW2.js +7438 -0
  53. package/dist/v2-CkOo7vW2.js.map +1 -0
  54. package/dist/{writes-h-IX3XQq.js → writes-Dhzpw0dq.js} +4 -3
  55. package/dist/{writes-h-IX3XQq.js.map → writes-Dhzpw0dq.js.map} +1 -1
  56. package/package.json +9 -1
  57. package/dist/panoptic/v2/index.d.ts.map +0 -1
  58. package/dist/panoptic/v2/index.js.map +0 -1
  59. package/dist/position-GYsTTl71.js.map +0 -1
  60. package/dist/simulation-4SzTI-xf.d.ts.map +0 -1
  61. package/dist/types-CspUPolV.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types-Bzw_7NJv.d.ts","names":["Address","Hex","PublicClient","WalletClient","TxOverrides","CowOrderKind","CowOrderStatus","QuoteCowSwapParams","CowQuote","SignAndSubmitCowOrderParams","CowOrderResult","CancelCowOrderParams","GetCowOrderStatusParams","CowOrderState","CheckCowApprovalParams","CowApprovalStatus","ApproveErc20ForCowParams"],"sources":["../src/cow/types.d.ts"],"sourcesContent":null,"mappings":";;;;;;;AASYM,KAFAD,YAAAA,GAEc,MAAA,GAAA,KAAA;;AAETE,KAFLD,cAAAA,GAEuB,qBAAA,GAAA,MAAA,GAAA,WAAA,GAAA,WAAA,GAAA,SAAA;;AAIpBN,UAJEO,kBAAAA,CAIFP;EAAO;EAED,OAEXK,EAAAA,MAAAA;EAAY;EAIL,SAAA,EARFL,OAQE;;YANHA;;QAEJK;;;;EAmBOG,IAAAA,EAfPR,OAee;EAAA;EAAA,WACfK,EAAAA,MAAAA;EAAY;EACA,eACRL,CAAAA,EAAAA,MAAAA;EAAO;;AAmBrB;;;;;;AAQsB;;AAKLU,UAnCAF,QAAAA,CAmCc;QAlCrBH;EAsCOM,SAAAA,EArCFX,OAqCEW;EAAoB,QAAA,EApCvBX,OAoCuB;EAAA;EACP,UACjBA,EAAAA,MAAAA;EAAO;EAEH,SAAA,EAAA,MAAA;;EAIAY,SAAAA,EAAAA,MAAAA;;EAMAC,eAAAA,EAAa,MAAA;EAAA;EAAA,eAClBP,EAAAA,MAAAA;EAAc;EAKA,cAAA,EAAA,MAAA;;EAGTQ,OAAAA,EAAAA,MAAAA;EAAsB;EAAA,OAC3BZ,EAAAA,MAAAA,GAAAA,IAAAA;;;AAIM,UA7CDO,2BAAAA,CA6CC;gBA5CAN;EAiDDY;WA/CJf;EAqDIgB,OAAAA,EAAAA,MAAAA;EAAwB;EAAA,KAC7Bd,EAnDDM,QAmDCN;EAAY;EACM,QACjBF,CAAAA,EAnDEA,OAmDFA;EAAO;EAEE,MAGJI,CAAAA,EAAAA,MAAAA;AAAW;;UAnDZM,cAAAA;YACHT;;;UAGGU,oBAAAA;gBACCR;WACLH;;YAECC;;;;UAIGW,uBAAAA;;YAEHX;;;;UAIGY,aAAAA;UACLP;;;;;qBAKWL;;;UAGNa,sBAAAA;UACLZ;;aAEGF;;SAEJA;;;;;UAKMe,iBAAAA;;;;;;UAMAC,wBAAAA;UACLd;gBACMC;WACLH;;aAEEA;;;gBAGGI"}
1
+ {"version":3,"file":"types-DgWfno7q.d.ts","names":["Address","Hex","PublicClient","WalletClient","TxOverrides","CowOrderKind","CowOrderStatus","QuoteCowSwapParams","CowQuote","SignAndSubmitCowOrderParams","CowOrderResult","CancelCowOrderParams","GetCowOrderStatusParams","CowOrderState","CheckCowApprovalParams","CowApprovalStatus","ApproveErc20ForCowParams"],"sources":["../src/cow/types.d.ts"],"sourcesContent":null,"mappings":";;;;;;;AASYM,KAFAD,YAAAA,GAEc,MAAA,GAAA,KAAA;;AAETE,KAFLD,cAAAA,GAEuB,qBAAA,GAAA,MAAA,GAAA,WAAA,GAAA,WAAA,GAAA,SAAA;;AAIpBN,UAJEO,kBAAAA,CAIFP;EAAO;EAED,OAEXK,EAAAA,MAAAA;EAAY;EAIL,SAAA,EARFL,OAQE;;YANHA;;QAEJK;;;;EAmBOG,IAAAA,EAfPR,OAee;EAAA;EAAA,WACfK,EAAAA,MAAAA;EAAY;EACA,eACRL,CAAAA,EAAAA,MAAAA;EAAO;;AAmBrB;;;;;;AAQsB;;AAKLU,UAnCAF,QAAAA,CAmCc;QAlCrBH;EAsCOM,SAAAA,EArCFX,OAqCEW;EAAoB,QAAA,EApCvBX,OAoCuB;EAAA;EACP,UACjBA,EAAAA,MAAAA;EAAO;EAEH,SAAA,EAAA,MAAA;;EAIAY,SAAAA,EAAAA,MAAAA;;EAMAC,eAAAA,EAAa,MAAA;EAAA;EAAA,eAClBP,EAAAA,MAAAA;EAAc;EAKA,cAAA,EAAA,MAAA;;EAGTQ,OAAAA,EAAAA,MAAAA;EAAsB;EAAA,OAC3BZ,EAAAA,MAAAA,GAAAA,IAAAA;;;AAIM,UA7CDO,2BAAAA,CA6CC;gBA5CAN;EAiDDY;WA/CJf;EAqDIgB,OAAAA,EAAAA,MAAAA;EAAwB;EAAA,KAC7Bd,EAnDDM,QAmDCN;EAAY;EACM,QACjBF,CAAAA,EAnDEA,OAmDFA;EAAO;EAEE,MAGJI,CAAAA,EAAAA,MAAAA;AAAW;;UAnDZM,cAAAA;YACHT;;;UAGGU,oBAAAA;gBACCR;WACLH;;YAECC;;;;UAIGW,uBAAAA;;YAEHX;;;;UAIGY,aAAAA;UACLP;;;;;qBAKWL;;;UAGNa,sBAAAA;UACLZ;;aAEGF;;SAEJA;;;;;UAKMe,iBAAAA;;;;;;UAMAC,wBAAAA;UACLd;gBACMC;WACLH;;aAEEA;;;gBAGGI"}
@@ -0,0 +1,247 @@
1
+ import { PoolKey } from "./oracle-BnpPVG8V.js";
2
+ import { TxOverrides } from "./tx-BXXqhBHn.js";
3
+ import { Address, PublicClient, WalletClient } from "viem";
4
+
5
+ //#region src/uniswap/v4/addresses.d.ts
6
+ /**
7
+ * Uniswap v4 contract addresses required for a Universal Router spot swap.
8
+ */
9
+
10
+ /**
11
+ * Uniswap v4 contract addresses required for a Universal Router spot swap.
12
+ */
13
+ interface UniswapV4Addresses {
14
+ /** Universal Router (v4-capable build) — entrypoint for `execute(...)`. */
15
+ universalRouter: Address;
16
+ /** V4Quoter — `quoteExactInputSingle` (revert/staticcall-based). */
17
+ v4Quoter: Address;
18
+ /** Uniswap v4 PoolManager (singleton). */
19
+ poolManager: Address;
20
+ /** Canonical Permit2 (same address on every chain). */
21
+ permit2: Address;
22
+ }
23
+ /**
24
+ * Canonical Permit2, identical across all chains.
25
+ */
26
+ declare const PERMIT2_ADDRESS: Address;
27
+ /**
28
+ * Verified Uniswap v4 deployment addresses keyed by chainId.
29
+ *
30
+ * Sourced from the official Uniswap v4 deployments. Add a chain here only after
31
+ * verifying each address against the canonical Uniswap deployment listing —
32
+ * Universal Router in particular is NOT the same address across chains.
33
+ */
34
+ declare const UNISWAP_V4_ADDRESSES: Record<number, UniswapV4Addresses>;
35
+ /**
36
+ * Resolve the Uniswap v4 addresses for a chain, applying optional overrides.
37
+ *
38
+ * @param chainId - Target chain ID.
39
+ * @param overrides - Partial override of any address (e.g. for fork tests).
40
+ * @returns Fully-resolved {@link UniswapV4Addresses}.
41
+ * @throws {UnsupportedChainError} when the chain is not listed and the
42
+ * overrides do not supply every required address.
43
+ */
44
+ declare function getUniswapV4Addresses(chainId: bigint, overrides?: Partial<UniswapV4Addresses>): UniswapV4Addresses;
45
+
46
+ //#endregion
47
+ //#region src/uniswap/v4/router/types.d.ts
48
+ /**
49
+ * Parameters for {@link swapExactInViaRouter}.
50
+ */
51
+ interface SwapExactInViaRouterParams {
52
+ /** Public client for reads + receipts. */
53
+ client: PublicClient;
54
+ /** Wallet client for signing. */
55
+ walletClient: WalletClient;
56
+ /** Account address. */
57
+ account: Address;
58
+ /** PanopticPool address — used to resolve the underlying v4 PoolKey. */
59
+ poolAddress: Address;
60
+ /** Chain ID (selects per-chain Uniswap v4 addresses). */
61
+ chainId: bigint;
62
+ /** Token to sell. `address(0)` (zero address) for native ETH. */
63
+ tokenIn: Address;
64
+ /** Exact amount of `tokenIn` to spend (must fit uint128). */
65
+ amountIn: bigint;
66
+ /** Slippage tolerance in bps (e.g. 500n = 5%). */
67
+ slippageBps: bigint;
68
+ /** Absolute deadline (unix seconds). If omitted, derived from block timestamp. */
69
+ deadline?: bigint;
70
+ /** Recipient of the output. Defaults to `account`. */
71
+ recipient?: Address;
72
+ /** Gas and transaction overrides. */
73
+ txOverrides?: TxOverrides;
74
+ /** Override per-chain Uniswap v4 addresses (e.g. fork tests). */
75
+ addresses?: Partial<UniswapV4Addresses>;
76
+ }
77
+ /**
78
+ * Parameters for {@link quoteSwapExactInViaRouter}.
79
+ */
80
+ interface QuoteSwapExactInViaRouterParams {
81
+ /** Public client. */
82
+ client: PublicClient;
83
+ /** PanopticPool address — used to resolve the underlying v4 PoolKey. */
84
+ poolAddress: Address;
85
+ /** Chain ID. */
86
+ chainId: bigint;
87
+ /** Token to sell. `address(0)` for native ETH. */
88
+ tokenIn: Address;
89
+ /** Exact amount of `tokenIn` to spend (must fit uint128). */
90
+ amountIn: bigint;
91
+ /** Slippage tolerance in bps (used to compute `amountOutMinimum`). */
92
+ slippageBps: bigint;
93
+ /** Optional block number for the quote. */
94
+ blockNumber?: bigint;
95
+ /** Override per-chain Uniswap v4 addresses (e.g. fork tests). */
96
+ addresses?: Partial<UniswapV4Addresses>;
97
+ }
98
+ /**
99
+ * Quote result data (carried inside a `SimulationResult`).
100
+ */
101
+ interface SwapExactInQuote {
102
+ /** Quoted output amount of `tokenOut`. */
103
+ amountOut: bigint;
104
+ /** Minimum acceptable output after applying slippage. */
105
+ amountOutMinimum: bigint;
106
+ /** Whether the swap goes currency0 → currency1. */
107
+ zeroForOne: boolean;
108
+ /** Output token address (`address(0)` for native ETH). */
109
+ tokenOut: Address;
110
+ /** Resolved v4 PoolKey (reused by the swap calldata builder). */
111
+ poolKey: PoolKey;
112
+ /** Quoter's gas estimate. */
113
+ gasEstimate: bigint;
114
+ }
115
+ /**
116
+ * Parameters for {@link swapExactOutViaRouter}.
117
+ */
118
+ interface SwapExactOutViaRouterParams {
119
+ /** Public client for reads + receipts. */
120
+ client: PublicClient;
121
+ /** Wallet client for signing. */
122
+ walletClient: WalletClient;
123
+ /** Account address. */
124
+ account: Address;
125
+ /** PanopticPool address — used to resolve the underlying v4 PoolKey. */
126
+ poolAddress: Address;
127
+ /** Chain ID (selects per-chain Uniswap v4 addresses). */
128
+ chainId: bigint;
129
+ /** Token to sell (the pay token). `address(0)` (zero address) for native ETH. */
130
+ tokenIn: Address;
131
+ /** Exact amount of the output token to receive (must fit uint128). */
132
+ amountOut: bigint;
133
+ /** Slippage tolerance in bps (e.g. 500n = 5%); caps the input. */
134
+ slippageBps: bigint;
135
+ /** Absolute deadline (unix seconds). If omitted, derived from block timestamp. */
136
+ deadline?: bigint;
137
+ /** Recipient of the output. Defaults to `account`. */
138
+ recipient?: Address;
139
+ /** Gas and transaction overrides. */
140
+ txOverrides?: TxOverrides;
141
+ /** Override per-chain Uniswap v4 addresses (e.g. fork tests). */
142
+ addresses?: Partial<UniswapV4Addresses>;
143
+ }
144
+ /**
145
+ * Parameters for {@link quoteSwapExactOutViaRouter}.
146
+ */
147
+ interface QuoteSwapExactOutViaRouterParams {
148
+ /** Public client. */
149
+ client: PublicClient;
150
+ /** PanopticPool address — used to resolve the underlying v4 PoolKey. */
151
+ poolAddress: Address;
152
+ /** Chain ID. */
153
+ chainId: bigint;
154
+ /** Token to sell (the pay token). `address(0)` for native ETH. */
155
+ tokenIn: Address;
156
+ /** Exact amount of the output token to receive (must fit uint128). */
157
+ amountOut: bigint;
158
+ /** Slippage tolerance in bps (used to compute `amountInMaximum`). */
159
+ slippageBps: bigint;
160
+ /** Optional block number for the quote. */
161
+ blockNumber?: bigint;
162
+ /** Override per-chain Uniswap v4 addresses (e.g. fork tests). */
163
+ addresses?: Partial<UniswapV4Addresses>;
164
+ }
165
+ /**
166
+ * Quote result data for an exact-out swap (carried inside a `SimulationResult`).
167
+ */
168
+ interface SwapExactOutQuote {
169
+ /** Quoted input amount of `tokenIn` required for the exact output. */
170
+ amountIn: bigint;
171
+ /** Maximum acceptable input after applying slippage. */
172
+ amountInMaximum: bigint;
173
+ /** Whether the swap goes currency0 → currency1. */
174
+ zeroForOne: boolean;
175
+ /** Output token address (`address(0)` for native ETH). */
176
+ tokenOut: Address;
177
+ /** Resolved v4 PoolKey (reused by the swap calldata builder). */
178
+ poolKey: PoolKey;
179
+ /** Quoter's gas estimate. */
180
+ gasEstimate: bigint;
181
+ }
182
+ /**
183
+ * Parameters for {@link checkRouterApproval}.
184
+ */
185
+ interface CheckRouterApprovalParams {
186
+ /** Public client. */
187
+ client: PublicClient;
188
+ /** Chain ID. */
189
+ chainId: bigint;
190
+ /** ERC20 token being spent (must not be native ETH). */
191
+ tokenIn: Address;
192
+ /** Token owner. */
193
+ owner: Address;
194
+ /** Amount that must be spendable. */
195
+ amount: bigint;
196
+ /** Override per-chain Uniswap v4 addresses (e.g. fork tests). */
197
+ addresses?: Partial<UniswapV4Addresses>;
198
+ }
199
+ /**
200
+ * Result of {@link checkRouterApproval}.
201
+ */
202
+ interface RouterApprovalStatus {
203
+ /** ERC20 → Permit2 allowance is insufficient. */
204
+ needsErc20Approval: boolean;
205
+ /** Permit2 → Universal Router allowance is insufficient or expired. */
206
+ needsPermit2Approval: boolean;
207
+ /** Current ERC20 → Permit2 allowance. */
208
+ erc20Allowance: bigint;
209
+ /** Current Permit2 → router allowance amount. */
210
+ permit2Amount: bigint;
211
+ /** Current Permit2 → router allowance expiration (unix seconds). */
212
+ permit2Expiration: bigint;
213
+ }
214
+ /**
215
+ * Parameters for {@link approveErc20ForPermit2}.
216
+ */
217
+ interface ApproveErc20ForPermit2Params {
218
+ client: PublicClient;
219
+ walletClient: WalletClient;
220
+ account: Address;
221
+ chainId: bigint;
222
+ /** ERC20 token to approve to Permit2. */
223
+ tokenIn: Address;
224
+ /** Amount to approve. Defaults to uint256 max. */
225
+ amount?: bigint;
226
+ txOverrides?: TxOverrides;
227
+ addresses?: Partial<UniswapV4Addresses>;
228
+ }
229
+ /**
230
+ * Parameters for {@link approveRouterViaPermit2}.
231
+ */
232
+ interface ApproveRouterViaPermit2Params {
233
+ client: PublicClient;
234
+ walletClient: WalletClient;
235
+ account: Address;
236
+ chainId: bigint;
237
+ /** ERC20 token the router is allowed to spend via Permit2. */
238
+ tokenIn: Address;
239
+ /** Amount to approve (must fit uint160). Defaults to uint160 max. */
240
+ amount?: bigint;
241
+ /** Allowance expiration (unix seconds, uint48). If omitted, block timestamp + 30 days. */
242
+ expiration?: bigint;
243
+ txOverrides?: TxOverrides;
244
+ addresses?: Partial<UniswapV4Addresses>;
245
+ } //#endregion
246
+ export { ApproveErc20ForPermit2Params, ApproveRouterViaPermit2Params, CheckRouterApprovalParams, PERMIT2_ADDRESS as PERMIT2_ADDRESS$1, QuoteSwapExactInViaRouterParams, QuoteSwapExactOutViaRouterParams, RouterApprovalStatus, SwapExactInQuote, SwapExactInViaRouterParams, SwapExactOutQuote, SwapExactOutViaRouterParams, UNISWAP_V4_ADDRESSES as UNISWAP_V4_ADDRESSES$1, UniswapV4Addresses, getUniswapV4Addresses as getUniswapV4Addresses$1 };
247
+ //# sourceMappingURL=types-VeWdNN0j.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-VeWdNN0j.d.ts","names":["Address","UniswapV4Addresses","PERMIT2_ADDRESS","UNISWAP_V4_ADDRESSES","Record","getUniswapV4Addresses","Partial","Address","PublicClient","WalletClient","PoolKey","TxOverrides","UniswapV4Addresses","SwapExactInViaRouterParams","Partial","QuoteSwapExactInViaRouterParams","SwapExactInQuote","SwapExactOutViaRouterParams","QuoteSwapExactOutViaRouterParams","SwapExactOutQuote","CheckRouterApprovalParams","RouterApprovalStatus","ApproveErc20ForPermit2Params","ApproveRouterViaPermit2Params"],"sources":["../src/uniswap/v4/addresses.d.ts","../src/uniswap/v4/router/types.d.ts"],"sourcesContent":null,"mappings":"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"}
@@ -1,6 +1,8 @@
1
- import { PanopticError$1 as PanopticError, SimulationResult } from "../simulation-4SzTI-xf.js";
2
- import { ApproveErc20ForPermit2Params, ApproveRouterViaPermit2Params, CheckRouterApprovalParams, PERMIT2_ADDRESS$1 as PERMIT2_ADDRESS, PoolKey, QuoteSwapExactInViaRouterParams, QuoteSwapExactOutViaRouterParams, RouterApprovalStatus, SwapExactInQuote, SwapExactInViaRouterParams, SwapExactOutQuote, SwapExactOutViaRouterParams, UNISWAP_V4_ADDRESSES$1 as UNISWAP_V4_ADDRESSES, UniswapV4Addresses, getUniswapV4Addresses$1 as getUniswapV4Addresses } from "../types-CspUPolV.js";
3
- import { TxReceipt, TxResult } from "../tx-Banz1S18.js";
1
+ import "../position-Bmd_3nzI.js";
2
+ import { PoolKey } from "../oracle-BnpPVG8V.js";
3
+ import { TxReceipt, TxResult } from "../tx-BXXqhBHn.js";
4
+ import { PanopticError$1 as PanopticError, SimulationResult } from "../simulation-CUqERC5Y.js";
5
+ import { ApproveErc20ForPermit2Params, ApproveRouterViaPermit2Params, CheckRouterApprovalParams, PERMIT2_ADDRESS$1 as PERMIT2_ADDRESS, QuoteSwapExactInViaRouterParams, QuoteSwapExactOutViaRouterParams, RouterApprovalStatus, SwapExactInQuote, SwapExactInViaRouterParams, SwapExactOutQuote, SwapExactOutViaRouterParams, UNISWAP_V4_ADDRESSES$1 as UNISWAP_V4_ADDRESSES, UniswapV4Addresses, getUniswapV4Addresses$1 as getUniswapV4Addresses } from "../types-VeWdNN0j.js";
4
6
  import { Address, Hex, PublicClient } from "viem";
5
7
 
6
8
  //#region src/uniswap/v4/router/encodeSwap.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["Address","Hex","PoolKey","V4_SWAP","SWAP_EXACT_IN_SINGLE","SETTLE_ALL","TAKE_ALL","TAKE","SWAP_EXACT_OUT_SINGLE","SWEEP","BuildV4SwapCalldataArgs","buildV4SwapExecuteArgs","buildV4SwapExecuteCalldata","BuildV4ExactOutSwapCalldataArgs","buildV4ExactOutSwapExecuteArgs","buildV4ExactOutSwapExecuteCalldata","Address","PanopticError","UnsupportedChainError","Error","InvalidSwapTokenError","AmountExceedsUint128Error","MissingSweepRecipientError","QuoterUnavailableError","TxReceipt","TxResult","ApproveErc20ForPermit2Params","ApproveRouterViaPermit2Params","CheckRouterApprovalParams","RouterApprovalStatus","checkRouterApproval","Promise","approveErc20ForPermit2","approveErc20ForPermit2AndWait","approveRouterViaPermit2","approveRouterViaPermit2AndWait","SimulationResult","QuoteSwapExactInViaRouterParams","QuoteSwapExactOutViaRouterParams","SwapExactInQuote","SwapExactOutQuote","quoteSwapExactInViaRouter","Promise","quoteSwapExactOutViaRouter","PublicClient","PoolKey","UniswapV4Addresses","QuoteV4ExactInByPoolKeyParams","Partial","V4ExactInQuote","quoteV4ExactInByPoolKey","Promise","Address","PublicClient","PoolKey","ResolvedSwapRoute","ResolveSwapRouteParams","resolveSwapRoute","Promise","TxReceipt","TxResult","SwapExactInViaRouterParams","SwapExactOutViaRouterParams","swapExactInViaRouter","Promise","swapExactInViaRouterAndWait","swapExactOutViaRouter","swapExactOutViaRouterAndWait","Address","UniswapV3Addresses","UNISWAP_V3_ADDRESSES","Record","getUniswapV3Addresses","Partial","Address","Hex","V3_SWAP_EXACT_IN","MSG_SENDER","BuildV3SwapCalldataArgs","encodeV3Path","buildV3SwapExecuteArgs","buildV3SwapExecuteCalldata","Address","PublicClient","UniswapV3Addresses","QuoteV3ExactInParams","Partial","V3ExactInQuote","quoteV3ExactIn","Promise"],"sources":["../../src/uniswap/v4/router/encodeSwap.d.ts","../../src/uniswap/v4/router/errors.d.ts","../../src/uniswap/v4/router/permit2.d.ts","../../src/uniswap/v4/router/quote.d.ts","../../src/uniswap/v4/router/quoteByPoolKey.d.ts","../../src/uniswap/v4/router/resolvePoolKey.d.ts","../../src/uniswap/v4/router/swap.d.ts","../../src/uniswap/v3/addresses.d.ts","../../src/uniswap/v3/router/encodeSwap.d.ts","../../src/uniswap/v3/router/quote.d.ts"],"sourcesContent":null,"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["Address","Hex","PoolKey","V4_SWAP","SWAP_EXACT_IN_SINGLE","SETTLE_ALL","TAKE_ALL","TAKE","SWAP_EXACT_OUT_SINGLE","SWEEP","BuildV4SwapCalldataArgs","buildV4SwapExecuteArgs","buildV4SwapExecuteCalldata","BuildV4ExactOutSwapCalldataArgs","buildV4ExactOutSwapExecuteArgs","buildV4ExactOutSwapExecuteCalldata","Address","PanopticError","UnsupportedChainError","Error","InvalidSwapTokenError","AmountExceedsUint128Error","MissingSweepRecipientError","QuoterUnavailableError","TxReceipt","TxResult","ApproveErc20ForPermit2Params","ApproveRouterViaPermit2Params","CheckRouterApprovalParams","RouterApprovalStatus","checkRouterApproval","Promise","approveErc20ForPermit2","approveErc20ForPermit2AndWait","approveRouterViaPermit2","approveRouterViaPermit2AndWait","SimulationResult","QuoteSwapExactInViaRouterParams","QuoteSwapExactOutViaRouterParams","SwapExactInQuote","SwapExactOutQuote","quoteSwapExactInViaRouter","Promise","quoteSwapExactOutViaRouter","PublicClient","PoolKey","UniswapV4Addresses","QuoteV4ExactInByPoolKeyParams","Partial","V4ExactInQuote","quoteV4ExactInByPoolKey","Promise","Address","PublicClient","PoolKey","ResolvedSwapRoute","ResolveSwapRouteParams","resolveSwapRoute","Promise","TxReceipt","TxResult","SwapExactInViaRouterParams","SwapExactOutViaRouterParams","swapExactInViaRouter","Promise","swapExactInViaRouterAndWait","swapExactOutViaRouter","swapExactOutViaRouterAndWait","Address","UniswapV3Addresses","UNISWAP_V3_ADDRESSES","Record","getUniswapV3Addresses","Partial","Address","Hex","V3_SWAP_EXACT_IN","MSG_SENDER","BuildV3SwapCalldataArgs","encodeV3Path","buildV3SwapExecuteArgs","buildV3SwapExecuteCalldata","Address","PublicClient","UniswapV3Addresses","QuoteV3ExactInParams","Partial","V3ExactInQuote","quoteV3ExactIn","Promise"],"sources":["../../src/uniswap/v4/router/encodeSwap.d.ts","../../src/uniswap/v4/router/errors.d.ts","../../src/uniswap/v4/router/permit2.d.ts","../../src/uniswap/v4/router/quote.d.ts","../../src/uniswap/v4/router/quoteByPoolKey.d.ts","../../src/uniswap/v4/router/resolvePoolKey.d.ts","../../src/uniswap/v4/router/swap.d.ts","../../src/uniswap/v3/addresses.d.ts","../../src/uniswap/v3/router/encodeSwap.d.ts","../../src/uniswap/v3/router/quote.d.ts"],"sourcesContent":null,"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { PanopticError } from "../position-GYsTTl71.js";
2
- import { AmountExceedsUint128Error, InvalidSwapTokenError, MissingSweepRecipientError, PERMIT2_ADDRESS, QuoterUnavailableError, SETTLE_ALL, SWAP_EXACT_IN_SINGLE, SWAP_EXACT_OUT_SINGLE, SWEEP, TAKE_ALL, UNISWAP_V4_ADDRESSES, UnsupportedChainError, V4_SWAP, approveErc20ForPermit2, approveErc20ForPermit2AndWait, approveRouterViaPermit2, approveRouterViaPermit2AndWait, buildV4ExactOutSwapExecuteArgs, buildV4ExactOutSwapExecuteCalldata, buildV4SwapExecuteArgs, buildV4SwapExecuteCalldata, checkRouterApproval, getUniswapV4Addresses, quoteSwapExactInViaRouter, quoteSwapExactOutViaRouter, quoteV4ExactInByPoolKey, resolveSwapRoute, swapExactInViaRouter, swapExactInViaRouterAndWait, swapExactOutViaRouter, swapExactOutViaRouterAndWait, universalRouterAbi } from "../router-DGUQo-8h.js";
3
- import "../writes-h-IX3XQq.js";
1
+ import { PanopticError } from "../position-R0IGLpQS.js";
2
+ import "../greeks-GysWXct-.js";
3
+ import "../writes-Dhzpw0dq.js";
4
+ import { AmountExceedsUint128Error, InvalidSwapTokenError, MissingSweepRecipientError, PERMIT2_ADDRESS, QuoterUnavailableError, SETTLE_ALL, SWAP_EXACT_IN_SINGLE, SWAP_EXACT_OUT_SINGLE, SWEEP, TAKE_ALL, UNISWAP_V4_ADDRESSES, UnsupportedChainError, V4_SWAP, approveErc20ForPermit2, approveErc20ForPermit2AndWait, approveRouterViaPermit2, approveRouterViaPermit2AndWait, buildV4ExactOutSwapExecuteArgs, buildV4ExactOutSwapExecuteCalldata, buildV4SwapExecuteArgs, buildV4SwapExecuteCalldata, checkRouterApproval, getUniswapV4Addresses, quoteSwapExactInViaRouter, quoteSwapExactOutViaRouter, quoteV4ExactInByPoolKey, resolveSwapRoute, swapExactInViaRouter, swapExactInViaRouterAndWait, swapExactOutViaRouter, swapExactOutViaRouterAndWait, universalRouterAbi } from "../router-NPhQUNh4.js";
4
5
  import { BaseError, ContractFunctionRevertedError, encodeAbiParameters, encodeFunctionData, encodePacked, zeroAddress } from "viem";
5
6
 
6
7
  //#region src/uniswap/v3/addresses.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["UNISWAP_V3_ADDRESSES: Record<number, UniswapV3Addresses>","chainId: number | bigint","overrides?: Partial<UniswapV3Addresses>","MSG_SENDER: Address","UINT128_MAX","amount: bigint","tokenIn: Address","fee: bigint","tokenOut: Address","args: BuildV3SwapCalldataArgs","params: QuoteV3ExactInParams","err: unknown"],"sources":["../../src/uniswap/v3/addresses.ts","../../src/uniswap/v3/router/encodeSwap.ts","../../src/uniswap/v3/abis/quoterV2.ts","../../src/uniswap/v3/router/quote.ts"],"sourcesContent":["/**\n * Per-chain Uniswap v3 addresses needed for spot quoting via the Universal\n * Router. The Universal Router itself is shared with v4 (see\n * `uniswap/v4/addresses`); only the v3 QuoterV2 is specific to v3.\n *\n * v1 supports mainnet only; other chains throw {@link UnsupportedChainError}\n * unless the address is supplied via overrides (fork tests / new chains).\n *\n * @module uniswap/v3/addresses\n */\n\nimport type { Address } from 'viem'\n\nimport { UnsupportedChainError } from '../v4/router/errors'\n\nexport interface UniswapV3Addresses {\n /** Uniswap v3 QuoterV2 — `quoteExactInputSingle` (revert/staticcall-based). */\n quoterV2: Address\n}\n\n/**\n * Verified Uniswap v3 QuoterV2 addresses keyed by chainId. Add a chain only\n * after verifying against the canonical Uniswap v3 deployment listing.\n */\nexport const UNISWAP_V3_ADDRESSES: Record<number, UniswapV3Addresses> = {\n // Ethereum mainnet\n 1: { quoterV2: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e' },\n}\n\n/**\n * Resolve Uniswap v3 addresses for a chain, applying optional overrides.\n *\n * @throws {UnsupportedChainError} when the chain is not listed and overrides do\n * not supply every required address.\n */\nexport function getUniswapV3Addresses(\n chainId: number | bigint,\n overrides?: Partial<UniswapV3Addresses>,\n): UniswapV3Addresses {\n const id = Number(chainId)\n const base = UNISWAP_V3_ADDRESSES[id]\n const merged = { ...base, ...overrides }\n if (!merged.quoterV2) {\n throw new UnsupportedChainError(BigInt(id))\n }\n return merged as UniswapV3Addresses\n}\n","/**\n * Pure calldata builder for an exact-in single-hop swap through a Uniswap **v3**\n * pool via the Universal Router.\n *\n * Opcodes verified against `@uniswap/universal-router` `Commands.sol`:\n * - Universal Router command `V3_SWAP_EXACT_IN = 0x00`.\n *\n * The v3 command input is (unlike the v4 action list) a single flat tuple:\n * `(address recipient, uint256 amountIn, uint256 amountOutMinimum,\n * bytes path, bool payerIsUser)`\n * where:\n * - `recipient` is an EXPLICIT field. We encode the Universal Router sentinel\n * `MSG_SENDER = address(1)`, which the router maps to the `execute` caller —\n * so the output is delivered to the caller (e.g. a Safe) with no literal\n * address in the calldata to redirect.\n * - `path` is `abi.encodePacked(tokenIn, fee (uint24), tokenOut)` for a single\n * hop (43 bytes). The direction lives in the path ordering, not a bool.\n * - `payerIsUser = true`: the router pulls `tokenIn` from the caller via Permit2.\n *\n * ERC20-only: native ETH is intentionally unsupported here (the native paths\n * need WRAP/UNWRAP/SWEEP commands with explicit recipients).\n *\n * @module uniswap/v3/router/encodeSwap\n */\n\nimport type { Address, Hex } from 'viem'\nimport { encodeAbiParameters, encodeFunctionData, encodePacked, zeroAddress } from 'viem'\n\nimport { PanopticError } from '../../../panoptic/v2/errors'\nimport { universalRouterAbi } from '../../v4/abis/universalRouter'\nimport { AmountExceedsUint128Error } from '../../v4/router/errors'\n\n/** Universal Router command byte for a v3 exact-in swap. */\nexport const V3_SWAP_EXACT_IN = 0x00\n\n/**\n * Universal Router recipient sentinel: the router maps `address(1)` to\n * `msg.sender` (the `execute` caller). Uniswap `Constants.MSG_SENDER`.\n */\nexport const MSG_SENDER: Address = '0x0000000000000000000000000000000000000001'\n\nconst UINT128_MAX = (1n << 128n) - 1n\n\nconst v3ExactInInputAbi = [\n { name: 'recipient', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n { name: 'amountOutMinimum', type: 'uint256' },\n { name: 'path', type: 'bytes' },\n { name: 'payerIsUser', type: 'bool' },\n] as const\n\nfunction assertUint128(amount: bigint): void {\n if (amount < 0n || amount > UINT128_MAX) {\n throw new AmountExceedsUint128Error(amount)\n }\n}\n\n/** Arguments for {@link buildV3SwapExecuteCalldata}. */\nexport interface BuildV3SwapCalldataArgs {\n /** Input token (funds pulled from the caller via Permit2). */\n tokenIn: Address\n /** Output token. */\n tokenOut: Address\n /** v3 pool fee tier (e.g. 500, 3000). */\n fee: bigint\n /** Exact input amount (uint128). */\n amountIn: bigint\n /** Minimum acceptable output (uint128). */\n amountOutMinimum: bigint\n /**\n * Absolute deadline (unix seconds) — the `execute(commands, inputs, deadline)`\n * argument, enforced by the Universal Router.\n */\n deadline: bigint\n}\n\n/**\n * Encode the packed v3 single-hop path `tokenIn ++ fee(uint24) ++ tokenOut`.\n */\nexport function encodeV3Path(tokenIn: Address, fee: bigint, tokenOut: Address): Hex {\n if (fee < 0n || fee > 0xffffffn) {\n throw new PanopticError(`v3 fee ${fee} exceeds uint24`)\n }\n return encodePacked(['address', 'uint24', 'address'], [tokenIn, Number(fee), tokenOut])\n}\n\n/**\n * Build the typed `execute(...)` args for an exact-in single-hop v3 swap whose\n * output is delivered to the `execute` caller (recipient = MSG_SENDER).\n */\nexport function buildV3SwapExecuteArgs(args: BuildV3SwapCalldataArgs): {\n args: readonly [Hex, readonly Hex[], bigint]\n value: bigint\n} {\n const { tokenIn, tokenOut, fee, amountIn, amountOutMinimum, deadline } = args\n\n if (tokenIn === zeroAddress || tokenOut === zeroAddress) {\n throw new PanopticError('native ETH is not supported by the v3 exact-in router builder')\n }\n assertUint128(amountIn)\n assertUint128(amountOutMinimum)\n\n const path = encodeV3Path(tokenIn, fee, tokenOut)\n const input = encodeAbiParameters(v3ExactInInputAbi, [\n MSG_SENDER,\n amountIn,\n amountOutMinimum,\n path,\n true, // payerIsUser: pull tokenIn from the caller via Permit2\n ])\n\n const commands = encodePacked(['uint8'], [V3_SWAP_EXACT_IN])\n return { args: [commands, [input], deadline] as const, value: 0n }\n}\n\n/**\n * Build the `execute(commands, inputs, deadline)` calldata for an exact-in\n * single-hop v3 swap.\n */\nexport function buildV3SwapExecuteCalldata(args: BuildV3SwapCalldataArgs): {\n data: Hex\n value: bigint\n} {\n const { args: executeArgs, value } = buildV3SwapExecuteArgs(args)\n const data = encodeFunctionData({\n abi: universalRouterAbi,\n functionName: 'execute',\n args: executeArgs,\n })\n return { data, value }\n}\n","/**\n * Minimal Uniswap v3 QuoterV2 ABI (`quoteExactInputSingle`).\n *\n * QuoterV2 is revert/staticcall-based (nonpayable but intended for `eth_call` /\n * `simulateContract`), so it must be simulated, not read.\n * @module uniswap/v3/abis/quoterV2\n */\n\nexport const quoterV2Abi = [\n {\n type: 'function',\n name: 'quoteExactInputSingle',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'params',\n type: 'tuple',\n components: [\n { name: 'tokenIn', type: 'address' },\n { name: 'tokenOut', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n { name: 'fee', type: 'uint24' },\n { name: 'sqrtPriceLimitX96', type: 'uint160' },\n ],\n },\n ],\n outputs: [\n { name: 'amountOut', type: 'uint256' },\n { name: 'sqrtPriceX96After', type: 'uint160' },\n { name: 'initializedTicksCrossed', type: 'uint32' },\n { name: 'gasEstimate', type: 'uint256' },\n ],\n },\n] as const\n","/**\n * Quote an exact-in single-hop swap against a Uniswap v3 pool via QuoterV2.\n * @module uniswap/v3/router/quote\n */\n\nimport type { Address, PublicClient } from 'viem'\nimport { BaseError, ContractFunctionRevertedError } from 'viem'\n\nimport { PanopticError } from '../../../panoptic/v2/errors'\nimport { quoterV2Abi } from '../abis/quoterV2'\nimport { type UniswapV3Addresses, getUniswapV3Addresses } from '../addresses'\n\nconst BPS_DENOMINATOR = 10_000n\nconst UINT128_MAX = (1n << 128n) - 1n\n\nexport interface QuoteV3ExactInParams {\n client: PublicClient\n chainId: bigint\n tokenIn: Address\n tokenOut: Address\n fee: bigint\n amountIn: bigint\n /** Slippage tolerance in bps, used to compute `amountOutMinimum`. */\n slippageBps: bigint\n blockNumber?: bigint\n addresses?: Partial<UniswapV3Addresses>\n}\n\nexport interface V3ExactInQuote {\n amountOut: bigint\n amountOutMinimum: bigint\n gasEstimate: bigint\n}\n\n/**\n * Quote an exact-in v3 swap. Returns `null` when the quote reverts (e.g. the\n * pool does not exist / has no liquidity) so callers can skip that pool when\n * ranking venues, rather than aborting the whole cycle.\n */\nexport async function quoteV3ExactIn(params: QuoteV3ExactInParams): Promise<V3ExactInQuote | null> {\n const { client, chainId, tokenIn, tokenOut, fee, amountIn, slippageBps, blockNumber } = params\n if (amountIn < 0n || amountIn > UINT128_MAX) {\n throw new PanopticError(`amountIn ${amountIn} exceeds uint128 maximum`)\n }\n if (slippageBps < 0n || slippageBps > BPS_DENOMINATOR) {\n throw new PanopticError(`invalid slippageBps ${slippageBps}, must be 0..10000`)\n }\n\n const { quoterV2 } = getUniswapV3Addresses(chainId, params.addresses)\n\n try {\n const { result } = await client.simulateContract({\n address: quoterV2,\n abi: quoterV2Abi,\n functionName: 'quoteExactInputSingle',\n blockNumber,\n args: [{ tokenIn, tokenOut, amountIn, fee: Number(fee), sqrtPriceLimitX96: 0n }],\n })\n const [amountOut, , , gasEstimate] = result\n const amountOutMinimum = (amountOut * (BPS_DENOMINATOR - slippageBps)) / BPS_DENOMINATOR\n return { amountOut, amountOutMinimum, gasEstimate }\n } catch (err) {\n if (isRevert(err)) return null\n // Transport/RPC/timeout errors are NOT \"no liquidity\" — rethrow so routing\n // doesn't silently treat an unreachable node as an empty pool.\n throw err\n }\n}\n\n/** True only for genuine contract reverts (missing pool / no liquidity). */\nfunction isRevert(err: unknown): boolean {\n return (\n err instanceof BaseError &&\n err.walk((e) => e instanceof ContractFunctionRevertedError) instanceof\n ContractFunctionRevertedError\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["UNISWAP_V3_ADDRESSES: Record<number, UniswapV3Addresses>","chainId: number | bigint","overrides?: Partial<UniswapV3Addresses>","MSG_SENDER: Address","UINT128_MAX","amount: bigint","tokenIn: Address","fee: bigint","tokenOut: Address","args: BuildV3SwapCalldataArgs","params: QuoteV3ExactInParams","err: unknown"],"sources":["../../src/uniswap/v3/addresses.ts","../../src/uniswap/v3/router/encodeSwap.ts","../../src/uniswap/v3/abis/quoterV2.ts","../../src/uniswap/v3/router/quote.ts"],"sourcesContent":["/**\n * Per-chain Uniswap v3 addresses needed for spot quoting via the Universal\n * Router. The Universal Router itself is shared with v4 (see\n * `uniswap/v4/addresses`); only the v3 QuoterV2 is specific to v3.\n *\n * v1 supports mainnet only; other chains throw {@link UnsupportedChainError}\n * unless the address is supplied via overrides (fork tests / new chains).\n *\n * @module uniswap/v3/addresses\n */\n\nimport type { Address } from 'viem'\n\nimport { UnsupportedChainError } from '../v4/router/errors'\n\nexport interface UniswapV3Addresses {\n /** Uniswap v3 QuoterV2 — `quoteExactInputSingle` (revert/staticcall-based). */\n quoterV2: Address\n}\n\n/**\n * Verified Uniswap v3 QuoterV2 addresses keyed by chainId. Add a chain only\n * after verifying against the canonical Uniswap v3 deployment listing.\n */\nexport const UNISWAP_V3_ADDRESSES: Record<number, UniswapV3Addresses> = {\n // Ethereum mainnet\n 1: { quoterV2: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e' },\n}\n\n/**\n * Resolve Uniswap v3 addresses for a chain, applying optional overrides.\n *\n * @throws {UnsupportedChainError} when the chain is not listed and overrides do\n * not supply every required address.\n */\nexport function getUniswapV3Addresses(\n chainId: number | bigint,\n overrides?: Partial<UniswapV3Addresses>,\n): UniswapV3Addresses {\n const id = Number(chainId)\n const base = UNISWAP_V3_ADDRESSES[id]\n const merged = { ...base, ...overrides }\n if (!merged.quoterV2) {\n throw new UnsupportedChainError(BigInt(id))\n }\n return merged as UniswapV3Addresses\n}\n","/**\n * Pure calldata builder for an exact-in single-hop swap through a Uniswap **v3**\n * pool via the Universal Router.\n *\n * Opcodes verified against `@uniswap/universal-router` `Commands.sol`:\n * - Universal Router command `V3_SWAP_EXACT_IN = 0x00`.\n *\n * The v3 command input is (unlike the v4 action list) a single flat tuple:\n * `(address recipient, uint256 amountIn, uint256 amountOutMinimum,\n * bytes path, bool payerIsUser)`\n * where:\n * - `recipient` is an EXPLICIT field. We encode the Universal Router sentinel\n * `MSG_SENDER = address(1)`, which the router maps to the `execute` caller —\n * so the output is delivered to the caller (e.g. a Safe) with no literal\n * address in the calldata to redirect.\n * - `path` is `abi.encodePacked(tokenIn, fee (uint24), tokenOut)` for a single\n * hop (43 bytes). The direction lives in the path ordering, not a bool.\n * - `payerIsUser = true`: the router pulls `tokenIn` from the caller via Permit2.\n *\n * ERC20-only: native ETH is intentionally unsupported here (the native paths\n * need WRAP/UNWRAP/SWEEP commands with explicit recipients).\n *\n * @module uniswap/v3/router/encodeSwap\n */\n\nimport type { Address, Hex } from 'viem'\nimport { encodeAbiParameters, encodeFunctionData, encodePacked, zeroAddress } from 'viem'\n\nimport { PanopticError } from '../../../panoptic/v2/errors'\nimport { universalRouterAbi } from '../../v4/abis/universalRouter'\nimport { AmountExceedsUint128Error } from '../../v4/router/errors'\n\n/** Universal Router command byte for a v3 exact-in swap. */\nexport const V3_SWAP_EXACT_IN = 0x00\n\n/**\n * Universal Router recipient sentinel: the router maps `address(1)` to\n * `msg.sender` (the `execute` caller). Uniswap `Constants.MSG_SENDER`.\n */\nexport const MSG_SENDER: Address = '0x0000000000000000000000000000000000000001'\n\nconst UINT128_MAX = (1n << 128n) - 1n\n\nconst v3ExactInInputAbi = [\n { name: 'recipient', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n { name: 'amountOutMinimum', type: 'uint256' },\n { name: 'path', type: 'bytes' },\n { name: 'payerIsUser', type: 'bool' },\n] as const\n\nfunction assertUint128(amount: bigint): void {\n if (amount < 0n || amount > UINT128_MAX) {\n throw new AmountExceedsUint128Error(amount)\n }\n}\n\n/** Arguments for {@link buildV3SwapExecuteCalldata}. */\nexport interface BuildV3SwapCalldataArgs {\n /** Input token (funds pulled from the caller via Permit2). */\n tokenIn: Address\n /** Output token. */\n tokenOut: Address\n /** v3 pool fee tier (e.g. 500, 3000). */\n fee: bigint\n /** Exact input amount (uint128). */\n amountIn: bigint\n /** Minimum acceptable output (uint128). */\n amountOutMinimum: bigint\n /**\n * Absolute deadline (unix seconds) — the `execute(commands, inputs, deadline)`\n * argument, enforced by the Universal Router.\n */\n deadline: bigint\n}\n\n/**\n * Encode the packed v3 single-hop path `tokenIn ++ fee(uint24) ++ tokenOut`.\n */\nexport function encodeV3Path(tokenIn: Address, fee: bigint, tokenOut: Address): Hex {\n if (fee < 0n || fee > 0xffffffn) {\n throw new PanopticError(`v3 fee ${fee} exceeds uint24`)\n }\n return encodePacked(['address', 'uint24', 'address'], [tokenIn, Number(fee), tokenOut])\n}\n\n/**\n * Build the typed `execute(...)` args for an exact-in single-hop v3 swap whose\n * output is delivered to the `execute` caller (recipient = MSG_SENDER).\n */\nexport function buildV3SwapExecuteArgs(args: BuildV3SwapCalldataArgs): {\n args: readonly [Hex, readonly Hex[], bigint]\n value: bigint\n} {\n const { tokenIn, tokenOut, fee, amountIn, amountOutMinimum, deadline } = args\n\n if (tokenIn === zeroAddress || tokenOut === zeroAddress) {\n throw new PanopticError('native ETH is not supported by the v3 exact-in router builder')\n }\n assertUint128(amountIn)\n assertUint128(amountOutMinimum)\n\n const path = encodeV3Path(tokenIn, fee, tokenOut)\n const input = encodeAbiParameters(v3ExactInInputAbi, [\n MSG_SENDER,\n amountIn,\n amountOutMinimum,\n path,\n true, // payerIsUser: pull tokenIn from the caller via Permit2\n ])\n\n const commands = encodePacked(['uint8'], [V3_SWAP_EXACT_IN])\n return { args: [commands, [input], deadline] as const, value: 0n }\n}\n\n/**\n * Build the `execute(commands, inputs, deadline)` calldata for an exact-in\n * single-hop v3 swap.\n */\nexport function buildV3SwapExecuteCalldata(args: BuildV3SwapCalldataArgs): {\n data: Hex\n value: bigint\n} {\n const { args: executeArgs, value } = buildV3SwapExecuteArgs(args)\n const data = encodeFunctionData({\n abi: universalRouterAbi,\n functionName: 'execute',\n args: executeArgs,\n })\n return { data, value }\n}\n","/**\n * Minimal Uniswap v3 QuoterV2 ABI (`quoteExactInputSingle`).\n *\n * QuoterV2 is revert/staticcall-based (nonpayable but intended for `eth_call` /\n * `simulateContract`), so it must be simulated, not read.\n * @module uniswap/v3/abis/quoterV2\n */\n\nexport const quoterV2Abi = [\n {\n type: 'function',\n name: 'quoteExactInputSingle',\n stateMutability: 'nonpayable',\n inputs: [\n {\n name: 'params',\n type: 'tuple',\n components: [\n { name: 'tokenIn', type: 'address' },\n { name: 'tokenOut', type: 'address' },\n { name: 'amountIn', type: 'uint256' },\n { name: 'fee', type: 'uint24' },\n { name: 'sqrtPriceLimitX96', type: 'uint160' },\n ],\n },\n ],\n outputs: [\n { name: 'amountOut', type: 'uint256' },\n { name: 'sqrtPriceX96After', type: 'uint160' },\n { name: 'initializedTicksCrossed', type: 'uint32' },\n { name: 'gasEstimate', type: 'uint256' },\n ],\n },\n] as const\n","/**\n * Quote an exact-in single-hop swap against a Uniswap v3 pool via QuoterV2.\n * @module uniswap/v3/router/quote\n */\n\nimport type { Address, PublicClient } from 'viem'\nimport { BaseError, ContractFunctionRevertedError } from 'viem'\n\nimport { PanopticError } from '../../../panoptic/v2/errors'\nimport { quoterV2Abi } from '../abis/quoterV2'\nimport { type UniswapV3Addresses, getUniswapV3Addresses } from '../addresses'\n\nconst BPS_DENOMINATOR = 10_000n\nconst UINT128_MAX = (1n << 128n) - 1n\n\nexport interface QuoteV3ExactInParams {\n client: PublicClient\n chainId: bigint\n tokenIn: Address\n tokenOut: Address\n fee: bigint\n amountIn: bigint\n /** Slippage tolerance in bps, used to compute `amountOutMinimum`. */\n slippageBps: bigint\n blockNumber?: bigint\n addresses?: Partial<UniswapV3Addresses>\n}\n\nexport interface V3ExactInQuote {\n amountOut: bigint\n amountOutMinimum: bigint\n gasEstimate: bigint\n}\n\n/**\n * Quote an exact-in v3 swap. Returns `null` when the quote reverts (e.g. the\n * pool does not exist / has no liquidity) so callers can skip that pool when\n * ranking venues, rather than aborting the whole cycle.\n */\nexport async function quoteV3ExactIn(params: QuoteV3ExactInParams): Promise<V3ExactInQuote | null> {\n const { client, chainId, tokenIn, tokenOut, fee, amountIn, slippageBps, blockNumber } = params\n if (amountIn < 0n || amountIn > UINT128_MAX) {\n throw new PanopticError(`amountIn ${amountIn} exceeds uint128 maximum`)\n }\n if (slippageBps < 0n || slippageBps > BPS_DENOMINATOR) {\n throw new PanopticError(`invalid slippageBps ${slippageBps}, must be 0..10000`)\n }\n\n const { quoterV2 } = getUniswapV3Addresses(chainId, params.addresses)\n\n try {\n const { result } = await client.simulateContract({\n address: quoterV2,\n abi: quoterV2Abi,\n functionName: 'quoteExactInputSingle',\n blockNumber,\n args: [{ tokenIn, tokenOut, amountIn, fee: Number(fee), sqrtPriceLimitX96: 0n }],\n })\n const [amountOut, , , gasEstimate] = result\n const amountOutMinimum = (amountOut * (BPS_DENOMINATOR - slippageBps)) / BPS_DENOMINATOR\n return { amountOut, amountOutMinimum, gasEstimate }\n } catch (err) {\n if (isRevert(err)) return null\n // Transport/RPC/timeout errors are NOT \"no liquidity\" — rethrow so routing\n // doesn't silently treat an unreachable node as an empty pool.\n throw err\n }\n}\n\n/** True only for genuine contract reverts (missing pool / no liquidity). */\nfunction isRevert(err: unknown): boolean {\n return (\n err instanceof BaseError &&\n err.walk((e) => e instanceof ContractFunctionRevertedError) instanceof\n ContractFunctionRevertedError\n )\n}\n"],"mappings":"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"}