@bananapus/nana-sdk-core 2.41.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cjs/generated/juicebox.d.ts +122 -43
  2. package/dist/cjs/generated/juicebox.d.ts.map +1 -1
  3. package/dist/cjs/generated/juicebox.js +104 -43
  4. package/dist/cjs/generated/juicebox.js.map +1 -1
  5. package/dist/cjs/generated/stickySourceCollectors.d.ts +354 -0
  6. package/dist/cjs/generated/stickySourceCollectors.d.ts.map +1 -0
  7. package/dist/cjs/generated/stickySourceCollectors.js +391 -0
  8. package/dist/cjs/generated/stickySourceCollectors.js.map +1 -0
  9. package/dist/cjs/review/decode.js +1 -1
  10. package/dist/cjs/review/decode.js.map +1 -1
  11. package/dist/cjs/v6/index.d.ts +0 -1
  12. package/dist/cjs/v6/index.d.ts.map +1 -1
  13. package/dist/cjs/v6/index.js +0 -1
  14. package/dist/cjs/v6/index.js.map +1 -1
  15. package/dist/cjs/v6/pay.d.ts +89 -35
  16. package/dist/cjs/v6/pay.d.ts.map +1 -1
  17. package/dist/cjs/v6/pay.js +285 -41
  18. package/dist/cjs/v6/pay.js.map +1 -1
  19. package/dist/cjs/v6/sticky.d.ts +2 -2
  20. package/dist/cjs/v6/sticky.d.ts.map +1 -1
  21. package/dist/cjs/v6/sticky.js +5 -4
  22. package/dist/cjs/v6/sticky.js.map +1 -1
  23. package/dist/esm/generated/juicebox.d.ts +122 -43
  24. package/dist/esm/generated/juicebox.d.ts.map +1 -1
  25. package/dist/esm/generated/juicebox.js +104 -43
  26. package/dist/esm/generated/juicebox.js.map +1 -1
  27. package/dist/esm/generated/stickySourceCollectors.d.ts +354 -0
  28. package/dist/esm/generated/stickySourceCollectors.d.ts.map +1 -0
  29. package/dist/esm/generated/stickySourceCollectors.js +388 -0
  30. package/dist/esm/generated/stickySourceCollectors.js.map +1 -0
  31. package/dist/esm/review/decode.js +1 -1
  32. package/dist/esm/review/decode.js.map +1 -1
  33. package/dist/esm/v6/index.d.ts +0 -1
  34. package/dist/esm/v6/index.d.ts.map +1 -1
  35. package/dist/esm/v6/index.js +0 -1
  36. package/dist/esm/v6/index.js.map +1 -1
  37. package/dist/esm/v6/pay.d.ts +89 -35
  38. package/dist/esm/v6/pay.d.ts.map +1 -1
  39. package/dist/esm/v6/pay.js +285 -43
  40. package/dist/esm/v6/pay.js.map +1 -1
  41. package/dist/esm/v6/sticky.d.ts +2 -2
  42. package/dist/esm/v6/sticky.d.ts.map +1 -1
  43. package/dist/esm/v6/sticky.js +5 -4
  44. package/dist/esm/v6/sticky.js.map +1 -1
  45. package/package.json +1 -6
  46. package/dist/cjs/v6/directPay.d.ts +0 -69
  47. package/dist/cjs/v6/directPay.d.ts.map +0 -1
  48. package/dist/cjs/v6/directPay.js +0 -391
  49. package/dist/cjs/v6/directPay.js.map +0 -1
  50. package/dist/esm/v6/directPay.d.ts +0 -69
  51. package/dist/esm/v6/directPay.d.ts.map +0 -1
  52. package/dist/esm/v6/directPay.js +0 -385
  53. package/dist/esm/v6/directPay.js.map +0 -1
@@ -1,69 +0,0 @@
1
- import type { Address, Hex, PublicClient } from "viem";
2
- import type { JBChainId } from "../types.js";
3
- import { type PayPreview, type PaySettlement } from "./pay.js";
4
- import type { Permit2SignatureAuthorization } from "./permit2.js";
5
- import { type UniswapV4PoolKey } from "./uniswapV4.js";
6
- export interface NativeSwapConfig {
7
- wrappedNative: Address;
8
- bridgeToken: Address;
9
- v3Quoter: Address;
10
- }
11
- /** Canonical WETH/USDC V3 bridge used by direct-pay swaps on all v6 mainnets. */
12
- export declare const NATIVE_SWAP_BY_CHAIN: Readonly<Partial<Record<JBChainId, NativeSwapConfig>>>;
13
- export type DirectPayInputRoute = {
14
- kind: "single-v4";
15
- } | {
16
- kind: "native-v3-v4";
17
- wrappedNative: Address;
18
- bridgeToken: Address;
19
- bridgeTokenSymbol: "USDC";
20
- bridgeTokenDecimals: 6;
21
- v3Fee: number;
22
- quotedBridgeAmount: bigint;
23
- } | {
24
- kind: "erc20-v3-native-v4";
25
- inputToken: Address;
26
- wrappedNative: Address;
27
- bridgeTokenSymbol: "ETH";
28
- bridgeTokenDecimals: 18;
29
- v3Fee: number;
30
- quotedBridgeAmount: bigint;
31
- };
32
- export interface DirectPaySwapQuote {
33
- kind: "direct-swap";
34
- poolKey: UniswapV4PoolKey;
35
- zeroForOne: boolean;
36
- quotedTokenCount: bigint;
37
- /** Protected minimum and the beneficiary's direct-swap token count. */
38
- minimumTokenCount: bigint;
39
- beneficiaryTokenCount: bigint;
40
- reservedTokenCount: 0n;
41
- inputRoute: DirectPayInputRoute;
42
- }
43
- /**
44
- * Quote the best direct pool purchase, including the atomic ETH/USDC V3 bridge
45
- * when the user's payment currency differs from the hooked V4 pool currency.
46
- * Returns null unless its slippage-protected minimum beats terminal payment.
47
- */
48
- export declare function quoteDirectPaySwap({ client, chainId, poolKey, pairIsCurrency0, paymentToken, amount, payPreview, paySettlement, slippageBps, }: {
49
- client: PublicClient;
50
- chainId: JBChainId;
51
- poolKey: UniswapV4PoolKey;
52
- pairIsCurrency0: boolean;
53
- paymentToken: Address;
54
- amount: bigint;
55
- payPreview: PayPreview;
56
- paySettlement?: PaySettlement;
57
- slippageBps?: bigint;
58
- }): Promise<DirectPaySwapQuote | null>;
59
- /** Build the atomic Universal Router transaction for a direct-pay quote. */
60
- export declare function buildDirectPaySwapTx({ chainId, quote, amount, recipient, deadline, }: {
61
- chainId: JBChainId;
62
- quote: DirectPaySwapQuote;
63
- amount: bigint;
64
- recipient: Address;
65
- deadline: bigint;
66
- }): import("./uniswapV4.js").UniswapV4SwapTxRequest;
67
- /** Prepend Universal Router's PERMIT2_PERMIT command to a reviewed swap. */
68
- export declare function addPermit2SignatureToDirectPaySwap(request: ReturnType<typeof buildDirectPaySwapTx>, authorization: Permit2SignatureAuthorization, signature: Hex): ReturnType<typeof buildDirectPaySwapTx>;
69
- //# sourceMappingURL=directPay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directPay.d.ts","sourceRoot":"","sources":["../../../src/v6/directPay.ts"],"names":[],"mappings":"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"}
@@ -1,385 +0,0 @@
1
- import { decodeFunctionResult, encodeAbiParameters, encodeFunctionData, encodePacked, zeroAddress, } from "viem";
2
- import { NATIVE_TOKEN } from "../constants.js";
3
- import { chooseBestPayRoute, } from "./pay.js";
4
- import { buildUniswapV4ExactInputSwapTx, quoteUniswapV4ExactInputSingle, uniswapV4Deployment, } from "./uniswapV4.js";
5
- /** Canonical WETH/USDC V3 bridge used by direct-pay swaps on all v6 mainnets. */
6
- export const NATIVE_SWAP_BY_CHAIN = {
7
- 1: {
8
- wrappedNative: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
9
- bridgeToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
10
- v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
11
- },
12
- 10: {
13
- wrappedNative: "0x4200000000000000000000000000000000000006",
14
- bridgeToken: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
15
- v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
16
- },
17
- 8453: {
18
- wrappedNative: "0x4200000000000000000000000000000000000006",
19
- bridgeToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
20
- v3Quoter: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
21
- },
22
- 42161: {
23
- wrappedNative: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
24
- bridgeToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
25
- v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
26
- },
27
- };
28
- const V3_FEES = [100, 500, 3_000, 10_000];
29
- const ADDRESS_THIS = "0x0000000000000000000000000000000000000002";
30
- const CONTRACT_BALANCE = 1n << 255n;
31
- const UINT128_MAX = (1n << 128n) - 1n;
32
- const v3QuoterAbi = [
33
- {
34
- type: "function",
35
- name: "quoteExactInputSingle",
36
- stateMutability: "nonpayable",
37
- inputs: [
38
- {
39
- name: "params",
40
- type: "tuple",
41
- components: [
42
- { name: "tokenIn", type: "address" },
43
- { name: "tokenOut", type: "address" },
44
- { name: "amountIn", type: "uint256" },
45
- { name: "fee", type: "uint24" },
46
- { name: "sqrtPriceLimitX96", type: "uint160" },
47
- ],
48
- },
49
- ],
50
- outputs: [
51
- { name: "amountOut", type: "uint256" },
52
- { name: "sqrtPriceX96After", type: "uint160" },
53
- { name: "initializedTicksCrossed", type: "uint32" },
54
- { name: "gasEstimate", type: "uint256" },
55
- ],
56
- },
57
- ];
58
- const universalRouterAbi = [
59
- {
60
- type: "function",
61
- name: "execute",
62
- stateMutability: "payable",
63
- inputs: [
64
- { name: "commands", type: "bytes" },
65
- { name: "inputs", type: "bytes[]" },
66
- { name: "deadline", type: "uint256" },
67
- ],
68
- outputs: [],
69
- },
70
- ];
71
- function isNative(token) {
72
- return token.toLowerCase() === NATIVE_TOKEN.toLowerCase();
73
- }
74
- async function quoteV3ExactInput({ client, config, tokenIn, tokenOut, amountIn, }) {
75
- const quotes = await Promise.all(V3_FEES.map(async (fee) => {
76
- try {
77
- const call = await client.call({
78
- to: config.v3Quoter,
79
- data: encodeFunctionData({
80
- abi: v3QuoterAbi,
81
- functionName: "quoteExactInputSingle",
82
- args: [
83
- {
84
- tokenIn,
85
- tokenOut,
86
- amountIn,
87
- fee,
88
- sqrtPriceLimitX96: 0n,
89
- },
90
- ],
91
- }),
92
- });
93
- if (!call.data)
94
- return null;
95
- const [amountOut] = decodeFunctionResult({
96
- abi: v3QuoterAbi,
97
- functionName: "quoteExactInputSingle",
98
- data: call.data,
99
- });
100
- return amountOut > 0n ? { fee, amountOut } : null;
101
- }
102
- catch {
103
- return null;
104
- }
105
- }));
106
- return quotes.reduce((best, quote) => !quote || (best && best.amountOut >= quote.amountOut) ? best : quote, null);
107
- }
108
- /**
109
- * Quote the best direct pool purchase, including the atomic ETH/USDC V3 bridge
110
- * when the user's payment currency differs from the hooked V4 pool currency.
111
- * Returns null unless its slippage-protected minimum beats terminal payment.
112
- */
113
- export async function quoteDirectPaySwap({ client, chainId, poolKey, pairIsCurrency0, paymentToken, amount, payPreview, paySettlement = "issuance", slippageBps = 100n, }) {
114
- if (!uniswapV4Deployment(chainId)?.universalRouter || amount <= 0n) {
115
- return null;
116
- }
117
- const currencyIn = pairIsCurrency0 ? poolKey.currency0 : poolKey.currency1;
118
- const normalizedPayment = isNative(paymentToken)
119
- ? zeroAddress
120
- : paymentToken.toLowerCase();
121
- let v4AmountIn = amount;
122
- let inputRoute = { kind: "single-v4" };
123
- if (currencyIn.toLowerCase() !== normalizedPayment) {
124
- const config = NATIVE_SWAP_BY_CHAIN[chainId];
125
- const canBridgeNative = !!config &&
126
- isNative(paymentToken) &&
127
- currencyIn.toLowerCase() === config.bridgeToken.toLowerCase();
128
- const canBridgeUsdcToNative = !!config &&
129
- paymentToken.toLowerCase() === config.bridgeToken.toLowerCase() &&
130
- currencyIn.toLowerCase() === zeroAddress;
131
- if (!config || (!canBridgeNative && !canBridgeUsdcToNative))
132
- return null;
133
- const bridgeQuote = await quoteV3ExactInput({
134
- client,
135
- config,
136
- tokenIn: canBridgeNative ? config.wrappedNative : config.bridgeToken,
137
- tokenOut: canBridgeNative ? config.bridgeToken : config.wrappedNative,
138
- amountIn: amount,
139
- });
140
- if (!bridgeQuote)
141
- return null;
142
- v4AmountIn = bridgeQuote.amountOut;
143
- inputRoute = canBridgeNative
144
- ? {
145
- kind: "native-v3-v4",
146
- wrappedNative: config.wrappedNative,
147
- bridgeToken: config.bridgeToken,
148
- bridgeTokenSymbol: "USDC",
149
- bridgeTokenDecimals: 6,
150
- v3Fee: bridgeQuote.fee,
151
- quotedBridgeAmount: bridgeQuote.amountOut,
152
- }
153
- : {
154
- kind: "erc20-v3-native-v4",
155
- inputToken: config.bridgeToken,
156
- wrappedNative: config.wrappedNative,
157
- bridgeTokenSymbol: "ETH",
158
- bridgeTokenDecimals: 18,
159
- v3Fee: bridgeQuote.fee,
160
- quotedBridgeAmount: bridgeQuote.amountOut,
161
- };
162
- }
163
- const quotedTokenCount = await quoteUniswapV4ExactInputSingle(client, {
164
- chainId,
165
- poolKey,
166
- zeroForOne: pairIsCurrency0,
167
- amountIn: v4AmountIn,
168
- });
169
- const best = chooseBestPayRoute({
170
- pay: payPreview,
171
- paySettlement,
172
- directSwapQuote: quotedTokenCount,
173
- slippageBps,
174
- });
175
- if (best.kind !== "direct-swap")
176
- return null;
177
- return {
178
- kind: "direct-swap",
179
- poolKey,
180
- zeroForOne: pairIsCurrency0,
181
- quotedTokenCount,
182
- minimumTokenCount: best.beneficiaryTokenCount,
183
- beneficiaryTokenCount: best.beneficiaryTokenCount,
184
- reservedTokenCount: 0n,
185
- inputRoute,
186
- };
187
- }
188
- function encodeV4SwapFromRouterBalance({ quote, recipient, currencyIn, }) {
189
- const swap = encodeAbiParameters([
190
- {
191
- type: "tuple",
192
- components: [
193
- {
194
- type: "tuple",
195
- components: [
196
- { type: "address" },
197
- { type: "address" },
198
- { type: "uint24" },
199
- { type: "int24" },
200
- { type: "address" },
201
- ],
202
- },
203
- { type: "bool" },
204
- { type: "uint128" },
205
- { type: "uint128" },
206
- { type: "bytes" },
207
- ],
208
- },
209
- ], [
210
- [
211
- [
212
- quote.poolKey.currency0,
213
- quote.poolKey.currency1,
214
- quote.poolKey.fee,
215
- quote.poolKey.tickSpacing,
216
- quote.poolKey.hooks,
217
- ],
218
- quote.zeroForOne,
219
- 0n,
220
- quote.minimumTokenCount,
221
- "0x",
222
- ],
223
- ]);
224
- const settle = encodeAbiParameters([{ type: "address" }, { type: "uint256" }, { type: "bool" }], [currencyIn, CONTRACT_BALANCE, false]);
225
- const currencyOut = quote.zeroForOne
226
- ? quote.poolKey.currency1
227
- : quote.poolKey.currency0;
228
- const take = encodeAbiParameters([{ type: "address" }, { type: "address" }, { type: "uint256" }], [currencyOut, recipient, 0n]);
229
- return encodeAbiParameters([{ type: "bytes" }, { type: "bytes[]" }], ["0x0b060e", [settle, swap, take]]);
230
- }
231
- /** Build the atomic Universal Router transaction for a direct-pay quote. */
232
- export function buildDirectPaySwapTx({ chainId, quote, amount, recipient, deadline, }) {
233
- if (quote.inputRoute.kind === "single-v4") {
234
- return buildUniswapV4ExactInputSwapTx({
235
- chainId,
236
- poolKey: quote.poolKey,
237
- zeroForOne: quote.zeroForOne,
238
- amountIn: amount,
239
- minimumAmountOut: quote.minimumTokenCount,
240
- recipient,
241
- deadline,
242
- });
243
- }
244
- if (amount <= 0n || amount > UINT128_MAX || quote.minimumTokenCount <= 0n) {
245
- throw new Error("Swap amounts are outside the supported range.");
246
- }
247
- const config = NATIVE_SWAP_BY_CHAIN[chainId];
248
- const router = uniswapV4Deployment(chainId)?.universalRouter;
249
- if (!config || !router) {
250
- throw new Error("No supported native bridge route on this chain.");
251
- }
252
- if (quote.inputRoute.kind === "erc20-v3-native-v4") {
253
- if (quote.inputRoute.inputToken.toLowerCase() !==
254
- config.bridgeToken.toLowerCase() ||
255
- quote.inputRoute.wrappedNative.toLowerCase() !==
256
- config.wrappedNative.toLowerCase()) {
257
- throw new Error("This ERC-20 bridge route is not supported on this chain.");
258
- }
259
- const v3Input = encodeAbiParameters([
260
- { type: "address" },
261
- { type: "uint256" },
262
- { type: "uint256" },
263
- { type: "bytes" },
264
- { type: "bool" },
265
- ], [
266
- ADDRESS_THIS,
267
- amount,
268
- 0n,
269
- encodePacked(["address", "uint24", "address"], [
270
- quote.inputRoute.inputToken,
271
- quote.inputRoute.v3Fee,
272
- quote.inputRoute.wrappedNative,
273
- ]),
274
- true,
275
- ]);
276
- const unwrapInput = encodeAbiParameters([{ type: "address" }, { type: "uint256" }], [ADDRESS_THIS, 0n]);
277
- const v4Input = encodeV4SwapFromRouterBalance({
278
- quote,
279
- recipient,
280
- currencyIn: zeroAddress,
281
- });
282
- return {
283
- chainId,
284
- address: router,
285
- abi: universalRouterAbi,
286
- functionName: "execute",
287
- args: [
288
- "0x000c10",
289
- [v3Input, unwrapInput, v4Input],
290
- deadline,
291
- ],
292
- value: 0n,
293
- };
294
- }
295
- if (quote.inputRoute.bridgeToken.toLowerCase() !==
296
- config.bridgeToken.toLowerCase() ||
297
- quote.inputRoute.wrappedNative.toLowerCase() !==
298
- config.wrappedNative.toLowerCase()) {
299
- throw new Error("This native bridge route is not supported on this chain.");
300
- }
301
- const wrapInput = encodeAbiParameters([{ type: "address" }, { type: "uint256" }], [ADDRESS_THIS, amount]);
302
- const v3Input = encodeAbiParameters([
303
- { type: "address" },
304
- { type: "uint256" },
305
- { type: "uint256" },
306
- { type: "bytes" },
307
- { type: "bool" },
308
- ], [
309
- ADDRESS_THIS,
310
- amount,
311
- 0n,
312
- encodePacked(["address", "uint24", "address"], [
313
- quote.inputRoute.wrappedNative,
314
- quote.inputRoute.v3Fee,
315
- quote.inputRoute.bridgeToken,
316
- ]),
317
- false,
318
- ]);
319
- const v4Input = encodeV4SwapFromRouterBalance({
320
- quote,
321
- recipient,
322
- currencyIn: quote.inputRoute.bridgeToken,
323
- });
324
- return {
325
- chainId,
326
- address: router,
327
- abi: universalRouterAbi,
328
- functionName: "execute",
329
- args: ["0x0b0010", [wrapInput, v3Input, v4Input], deadline],
330
- value: amount,
331
- };
332
- }
333
- /** Prepend Universal Router's PERMIT2_PERMIT command to a reviewed swap. */
334
- export function addPermit2SignatureToDirectPaySwap(request, authorization, signature) {
335
- if (request.address.toLowerCase() !== authorization.spender.toLowerCase()) {
336
- throw new Error("The reviewed Permit2 authorization does not match the swap.");
337
- }
338
- const [commands, inputs, deadline] = request.args;
339
- const commandShape = commands.toLowerCase();
340
- const supportedShape = (commandShape === "0x10" && inputs.length === 1) ||
341
- (commandShape === "0x000c10" && inputs.length === 3);
342
- if (!supportedShape) {
343
- throw new Error("The reviewed swap has an unsupported Universal Router shape.");
344
- }
345
- const permitInput = encodeAbiParameters([
346
- {
347
- type: "tuple",
348
- components: [
349
- {
350
- type: "tuple",
351
- components: [
352
- { type: "address" },
353
- { type: "uint160" },
354
- { type: "uint48" },
355
- { type: "uint48" },
356
- ],
357
- },
358
- { type: "address" },
359
- { type: "uint256" },
360
- ],
361
- },
362
- { type: "bytes" },
363
- ], [
364
- [
365
- [
366
- authorization.token,
367
- authorization.amount,
368
- authorization.expiration,
369
- authorization.nonce,
370
- ],
371
- authorization.spender,
372
- authorization.sigDeadline,
373
- ],
374
- signature,
375
- ]);
376
- return {
377
- ...request,
378
- args: [
379
- `0x0a${commands.slice(2)}`,
380
- [permitInput, ...inputs],
381
- deadline,
382
- ],
383
- };
384
- }
385
- //# sourceMappingURL=directPay.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"directPay.js","sourceRoot":"","sources":["../../../src/v6/directPay.ts"],"names":[],"mappings":"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"}