@bananapus/nana-sdk-core 1.9.4 → 1.10.1

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 (57) hide show
  1. package/dist/cjs/v6/directPay.d.ts +69 -0
  2. package/dist/cjs/v6/directPay.d.ts.map +1 -0
  3. package/dist/cjs/v6/directPay.js +391 -0
  4. package/dist/cjs/v6/directPay.js.map +1 -0
  5. package/dist/cjs/v6/index.d.ts +2 -0
  6. package/dist/cjs/v6/index.d.ts.map +1 -1
  7. package/dist/cjs/v6/index.js +2 -0
  8. package/dist/cjs/v6/index.js.map +1 -1
  9. package/dist/cjs/v6/loanMath.d.ts +33 -0
  10. package/dist/cjs/v6/loanMath.d.ts.map +1 -0
  11. package/dist/cjs/v6/loanMath.js +52 -0
  12. package/dist/cjs/v6/loanMath.js.map +1 -0
  13. package/dist/cjs/v6/loans.d.ts +1 -17
  14. package/dist/cjs/v6/loans.d.ts.map +1 -1
  15. package/dist/cjs/v6/loans.js +16 -18
  16. package/dist/cjs/v6/loans.js.map +1 -1
  17. package/dist/cjs/v6/permit2.d.ts +169 -0
  18. package/dist/cjs/v6/permit2.d.ts.map +1 -0
  19. package/dist/cjs/v6/permit2.js +145 -0
  20. package/dist/cjs/v6/permit2.js.map +1 -0
  21. package/dist/cjs/v6/uniswapV4.d.ts +1 -23
  22. package/dist/cjs/v6/uniswapV4.d.ts.map +1 -1
  23. package/dist/cjs/v6/uniswapV4.js +21 -65
  24. package/dist/cjs/v6/uniswapV4.js.map +1 -1
  25. package/dist/cjs/v6/uniswapV4Deployments.d.ts +21 -0
  26. package/dist/cjs/v6/uniswapV4Deployments.d.ts.map +1 -0
  27. package/dist/cjs/v6/uniswapV4Deployments.js +60 -0
  28. package/dist/cjs/v6/uniswapV4Deployments.js.map +1 -0
  29. package/dist/esm/v6/directPay.d.ts +69 -0
  30. package/dist/esm/v6/directPay.d.ts.map +1 -0
  31. package/dist/esm/v6/directPay.js +385 -0
  32. package/dist/esm/v6/directPay.js.map +1 -0
  33. package/dist/esm/v6/index.d.ts +2 -0
  34. package/dist/esm/v6/index.d.ts.map +1 -1
  35. package/dist/esm/v6/index.js +2 -0
  36. package/dist/esm/v6/index.js.map +1 -1
  37. package/dist/esm/v6/loanMath.d.ts +33 -0
  38. package/dist/esm/v6/loanMath.d.ts.map +1 -0
  39. package/dist/esm/v6/loanMath.js +47 -0
  40. package/dist/esm/v6/loanMath.js.map +1 -0
  41. package/dist/esm/v6/loans.d.ts +1 -17
  42. package/dist/esm/v6/loans.d.ts.map +1 -1
  43. package/dist/esm/v6/loans.js +1 -17
  44. package/dist/esm/v6/loans.js.map +1 -1
  45. package/dist/esm/v6/permit2.d.ts +169 -0
  46. package/dist/esm/v6/permit2.d.ts.map +1 -0
  47. package/dist/esm/v6/permit2.js +136 -0
  48. package/dist/esm/v6/permit2.js.map +1 -0
  49. package/dist/esm/v6/uniswapV4.d.ts +1 -23
  50. package/dist/esm/v6/uniswapV4.d.ts.map +1 -1
  51. package/dist/esm/v6/uniswapV4.js +2 -59
  52. package/dist/esm/v6/uniswapV4.js.map +1 -1
  53. package/dist/esm/v6/uniswapV4Deployments.d.ts +21 -0
  54. package/dist/esm/v6/uniswapV4Deployments.d.ts.map +1 -0
  55. package/dist/esm/v6/uniswapV4Deployments.js +56 -0
  56. package/dist/esm/v6/uniswapV4Deployments.js.map +1 -0
  57. package/package.json +37 -1
@@ -0,0 +1,69 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directPay.d.ts","sourceRoot":"","sources":["../../../src/v6/directPay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,391 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NATIVE_SWAP_BY_CHAIN = void 0;
4
+ exports.quoteDirectPaySwap = quoteDirectPaySwap;
5
+ exports.buildDirectPaySwapTx = buildDirectPaySwapTx;
6
+ exports.addPermit2SignatureToDirectPaySwap = addPermit2SignatureToDirectPaySwap;
7
+ const viem_1 = require("viem");
8
+ const constants_js_1 = require("../constants.js");
9
+ const pay_js_1 = require("./pay.js");
10
+ const uniswapV4_js_1 = require("./uniswapV4.js");
11
+ /** Canonical WETH/USDC V3 bridge used by direct-pay swaps on all v6 mainnets. */
12
+ exports.NATIVE_SWAP_BY_CHAIN = {
13
+ 1: {
14
+ wrappedNative: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
15
+ bridgeToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
16
+ v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
17
+ },
18
+ 10: {
19
+ wrappedNative: "0x4200000000000000000000000000000000000006",
20
+ bridgeToken: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
21
+ v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
22
+ },
23
+ 8453: {
24
+ wrappedNative: "0x4200000000000000000000000000000000000006",
25
+ bridgeToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
26
+ v3Quoter: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
27
+ },
28
+ 42161: {
29
+ wrappedNative: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
30
+ bridgeToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
31
+ v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
32
+ },
33
+ };
34
+ const V3_FEES = [100, 500, 3_000, 10_000];
35
+ const ADDRESS_THIS = "0x0000000000000000000000000000000000000002";
36
+ const CONTRACT_BALANCE = 1n << 255n;
37
+ const UINT128_MAX = (1n << 128n) - 1n;
38
+ const v3QuoterAbi = [
39
+ {
40
+ type: "function",
41
+ name: "quoteExactInputSingle",
42
+ stateMutability: "nonpayable",
43
+ inputs: [
44
+ {
45
+ name: "params",
46
+ type: "tuple",
47
+ components: [
48
+ { name: "tokenIn", type: "address" },
49
+ { name: "tokenOut", type: "address" },
50
+ { name: "amountIn", type: "uint256" },
51
+ { name: "fee", type: "uint24" },
52
+ { name: "sqrtPriceLimitX96", type: "uint160" },
53
+ ],
54
+ },
55
+ ],
56
+ outputs: [
57
+ { name: "amountOut", type: "uint256" },
58
+ { name: "sqrtPriceX96After", type: "uint160" },
59
+ { name: "initializedTicksCrossed", type: "uint32" },
60
+ { name: "gasEstimate", type: "uint256" },
61
+ ],
62
+ },
63
+ ];
64
+ const universalRouterAbi = [
65
+ {
66
+ type: "function",
67
+ name: "execute",
68
+ stateMutability: "payable",
69
+ inputs: [
70
+ { name: "commands", type: "bytes" },
71
+ { name: "inputs", type: "bytes[]" },
72
+ { name: "deadline", type: "uint256" },
73
+ ],
74
+ outputs: [],
75
+ },
76
+ ];
77
+ function isNative(token) {
78
+ return token.toLowerCase() === constants_js_1.NATIVE_TOKEN.toLowerCase();
79
+ }
80
+ async function quoteV3ExactInput({ client, config, tokenIn, tokenOut, amountIn, }) {
81
+ const quotes = await Promise.all(V3_FEES.map(async (fee) => {
82
+ try {
83
+ const call = await client.call({
84
+ to: config.v3Quoter,
85
+ data: (0, viem_1.encodeFunctionData)({
86
+ abi: v3QuoterAbi,
87
+ functionName: "quoteExactInputSingle",
88
+ args: [
89
+ {
90
+ tokenIn,
91
+ tokenOut,
92
+ amountIn,
93
+ fee,
94
+ sqrtPriceLimitX96: 0n,
95
+ },
96
+ ],
97
+ }),
98
+ });
99
+ if (!call.data)
100
+ return null;
101
+ const [amountOut] = (0, viem_1.decodeFunctionResult)({
102
+ abi: v3QuoterAbi,
103
+ functionName: "quoteExactInputSingle",
104
+ data: call.data,
105
+ });
106
+ return amountOut > 0n ? { fee, amountOut } : null;
107
+ }
108
+ catch {
109
+ return null;
110
+ }
111
+ }));
112
+ return quotes.reduce((best, quote) => !quote || (best && best.amountOut >= quote.amountOut) ? best : quote, null);
113
+ }
114
+ /**
115
+ * Quote the best direct pool purchase, including the atomic ETH/USDC V3 bridge
116
+ * when the user's payment currency differs from the hooked V4 pool currency.
117
+ * Returns null unless its slippage-protected minimum beats terminal payment.
118
+ */
119
+ async function quoteDirectPaySwap({ client, chainId, poolKey, pairIsCurrency0, paymentToken, amount, payPreview, paySettlement = "issuance", slippageBps = 100n, }) {
120
+ if (!(0, uniswapV4_js_1.uniswapV4Deployment)(chainId)?.universalRouter || amount <= 0n) {
121
+ return null;
122
+ }
123
+ const currencyIn = pairIsCurrency0 ? poolKey.currency0 : poolKey.currency1;
124
+ const normalizedPayment = isNative(paymentToken)
125
+ ? viem_1.zeroAddress
126
+ : paymentToken.toLowerCase();
127
+ let v4AmountIn = amount;
128
+ let inputRoute = { kind: "single-v4" };
129
+ if (currencyIn.toLowerCase() !== normalizedPayment) {
130
+ const config = exports.NATIVE_SWAP_BY_CHAIN[chainId];
131
+ const canBridgeNative = !!config &&
132
+ isNative(paymentToken) &&
133
+ currencyIn.toLowerCase() === config.bridgeToken.toLowerCase();
134
+ const canBridgeUsdcToNative = !!config &&
135
+ paymentToken.toLowerCase() === config.bridgeToken.toLowerCase() &&
136
+ currencyIn.toLowerCase() === viem_1.zeroAddress;
137
+ if (!config || (!canBridgeNative && !canBridgeUsdcToNative))
138
+ return null;
139
+ const bridgeQuote = await quoteV3ExactInput({
140
+ client,
141
+ config,
142
+ tokenIn: canBridgeNative ? config.wrappedNative : config.bridgeToken,
143
+ tokenOut: canBridgeNative ? config.bridgeToken : config.wrappedNative,
144
+ amountIn: amount,
145
+ });
146
+ if (!bridgeQuote)
147
+ return null;
148
+ v4AmountIn = bridgeQuote.amountOut;
149
+ inputRoute = canBridgeNative
150
+ ? {
151
+ kind: "native-v3-v4",
152
+ wrappedNative: config.wrappedNative,
153
+ bridgeToken: config.bridgeToken,
154
+ bridgeTokenSymbol: "USDC",
155
+ bridgeTokenDecimals: 6,
156
+ v3Fee: bridgeQuote.fee,
157
+ quotedBridgeAmount: bridgeQuote.amountOut,
158
+ }
159
+ : {
160
+ kind: "erc20-v3-native-v4",
161
+ inputToken: config.bridgeToken,
162
+ wrappedNative: config.wrappedNative,
163
+ bridgeTokenSymbol: "ETH",
164
+ bridgeTokenDecimals: 18,
165
+ v3Fee: bridgeQuote.fee,
166
+ quotedBridgeAmount: bridgeQuote.amountOut,
167
+ };
168
+ }
169
+ const quotedTokenCount = await (0, uniswapV4_js_1.quoteUniswapV4ExactInputSingle)(client, {
170
+ chainId,
171
+ poolKey,
172
+ zeroForOne: pairIsCurrency0,
173
+ amountIn: v4AmountIn,
174
+ });
175
+ const best = (0, pay_js_1.chooseBestPayRoute)({
176
+ pay: payPreview,
177
+ paySettlement,
178
+ directSwapQuote: quotedTokenCount,
179
+ slippageBps,
180
+ });
181
+ if (best.kind !== "direct-swap")
182
+ return null;
183
+ return {
184
+ kind: "direct-swap",
185
+ poolKey,
186
+ zeroForOne: pairIsCurrency0,
187
+ quotedTokenCount,
188
+ minimumTokenCount: best.beneficiaryTokenCount,
189
+ beneficiaryTokenCount: best.beneficiaryTokenCount,
190
+ reservedTokenCount: 0n,
191
+ inputRoute,
192
+ };
193
+ }
194
+ function encodeV4SwapFromRouterBalance({ quote, recipient, currencyIn, }) {
195
+ const swap = (0, viem_1.encodeAbiParameters)([
196
+ {
197
+ type: "tuple",
198
+ components: [
199
+ {
200
+ type: "tuple",
201
+ components: [
202
+ { type: "address" },
203
+ { type: "address" },
204
+ { type: "uint24" },
205
+ { type: "int24" },
206
+ { type: "address" },
207
+ ],
208
+ },
209
+ { type: "bool" },
210
+ { type: "uint128" },
211
+ { type: "uint128" },
212
+ { type: "bytes" },
213
+ ],
214
+ },
215
+ ], [
216
+ [
217
+ [
218
+ quote.poolKey.currency0,
219
+ quote.poolKey.currency1,
220
+ quote.poolKey.fee,
221
+ quote.poolKey.tickSpacing,
222
+ quote.poolKey.hooks,
223
+ ],
224
+ quote.zeroForOne,
225
+ 0n,
226
+ quote.minimumTokenCount,
227
+ "0x",
228
+ ],
229
+ ]);
230
+ const settle = (0, viem_1.encodeAbiParameters)([{ type: "address" }, { type: "uint256" }, { type: "bool" }], [currencyIn, CONTRACT_BALANCE, false]);
231
+ const currencyOut = quote.zeroForOne
232
+ ? quote.poolKey.currency1
233
+ : quote.poolKey.currency0;
234
+ const take = (0, viem_1.encodeAbiParameters)([{ type: "address" }, { type: "address" }, { type: "uint256" }], [currencyOut, recipient, 0n]);
235
+ return (0, viem_1.encodeAbiParameters)([{ type: "bytes" }, { type: "bytes[]" }], ["0x0b060e", [settle, swap, take]]);
236
+ }
237
+ /** Build the atomic Universal Router transaction for a direct-pay quote. */
238
+ function buildDirectPaySwapTx({ chainId, quote, amount, recipient, deadline, }) {
239
+ if (quote.inputRoute.kind === "single-v4") {
240
+ return (0, uniswapV4_js_1.buildUniswapV4ExactInputSwapTx)({
241
+ chainId,
242
+ poolKey: quote.poolKey,
243
+ zeroForOne: quote.zeroForOne,
244
+ amountIn: amount,
245
+ minimumAmountOut: quote.minimumTokenCount,
246
+ recipient,
247
+ deadline,
248
+ });
249
+ }
250
+ if (amount <= 0n || amount > UINT128_MAX || quote.minimumTokenCount <= 0n) {
251
+ throw new Error("Swap amounts are outside the supported range.");
252
+ }
253
+ const config = exports.NATIVE_SWAP_BY_CHAIN[chainId];
254
+ const router = (0, uniswapV4_js_1.uniswapV4Deployment)(chainId)?.universalRouter;
255
+ if (!config || !router) {
256
+ throw new Error("No supported native bridge route on this chain.");
257
+ }
258
+ if (quote.inputRoute.kind === "erc20-v3-native-v4") {
259
+ if (quote.inputRoute.inputToken.toLowerCase() !==
260
+ config.bridgeToken.toLowerCase() ||
261
+ quote.inputRoute.wrappedNative.toLowerCase() !==
262
+ config.wrappedNative.toLowerCase()) {
263
+ throw new Error("This ERC-20 bridge route is not supported on this chain.");
264
+ }
265
+ const v3Input = (0, viem_1.encodeAbiParameters)([
266
+ { type: "address" },
267
+ { type: "uint256" },
268
+ { type: "uint256" },
269
+ { type: "bytes" },
270
+ { type: "bool" },
271
+ ], [
272
+ ADDRESS_THIS,
273
+ amount,
274
+ 0n,
275
+ (0, viem_1.encodePacked)(["address", "uint24", "address"], [
276
+ quote.inputRoute.inputToken,
277
+ quote.inputRoute.v3Fee,
278
+ quote.inputRoute.wrappedNative,
279
+ ]),
280
+ true,
281
+ ]);
282
+ const unwrapInput = (0, viem_1.encodeAbiParameters)([{ type: "address" }, { type: "uint256" }], [ADDRESS_THIS, 0n]);
283
+ const v4Input = encodeV4SwapFromRouterBalance({
284
+ quote,
285
+ recipient,
286
+ currencyIn: viem_1.zeroAddress,
287
+ });
288
+ return {
289
+ chainId,
290
+ address: router,
291
+ abi: universalRouterAbi,
292
+ functionName: "execute",
293
+ args: [
294
+ "0x000c10",
295
+ [v3Input, unwrapInput, v4Input],
296
+ deadline,
297
+ ],
298
+ value: 0n,
299
+ };
300
+ }
301
+ if (quote.inputRoute.bridgeToken.toLowerCase() !==
302
+ config.bridgeToken.toLowerCase() ||
303
+ quote.inputRoute.wrappedNative.toLowerCase() !==
304
+ config.wrappedNative.toLowerCase()) {
305
+ throw new Error("This native bridge route is not supported on this chain.");
306
+ }
307
+ const wrapInput = (0, viem_1.encodeAbiParameters)([{ type: "address" }, { type: "uint256" }], [ADDRESS_THIS, amount]);
308
+ const v3Input = (0, viem_1.encodeAbiParameters)([
309
+ { type: "address" },
310
+ { type: "uint256" },
311
+ { type: "uint256" },
312
+ { type: "bytes" },
313
+ { type: "bool" },
314
+ ], [
315
+ ADDRESS_THIS,
316
+ amount,
317
+ 0n,
318
+ (0, viem_1.encodePacked)(["address", "uint24", "address"], [
319
+ quote.inputRoute.wrappedNative,
320
+ quote.inputRoute.v3Fee,
321
+ quote.inputRoute.bridgeToken,
322
+ ]),
323
+ false,
324
+ ]);
325
+ const v4Input = encodeV4SwapFromRouterBalance({
326
+ quote,
327
+ recipient,
328
+ currencyIn: quote.inputRoute.bridgeToken,
329
+ });
330
+ return {
331
+ chainId,
332
+ address: router,
333
+ abi: universalRouterAbi,
334
+ functionName: "execute",
335
+ args: ["0x0b0010", [wrapInput, v3Input, v4Input], deadline],
336
+ value: amount,
337
+ };
338
+ }
339
+ /** Prepend Universal Router's PERMIT2_PERMIT command to a reviewed swap. */
340
+ function addPermit2SignatureToDirectPaySwap(request, authorization, signature) {
341
+ if (request.address.toLowerCase() !== authorization.spender.toLowerCase()) {
342
+ throw new Error("The reviewed Permit2 authorization does not match the swap.");
343
+ }
344
+ const [commands, inputs, deadline] = request.args;
345
+ const commandShape = commands.toLowerCase();
346
+ const supportedShape = (commandShape === "0x10" && inputs.length === 1) ||
347
+ (commandShape === "0x000c10" && inputs.length === 3);
348
+ if (!supportedShape) {
349
+ throw new Error("The reviewed swap has an unsupported Universal Router shape.");
350
+ }
351
+ const permitInput = (0, viem_1.encodeAbiParameters)([
352
+ {
353
+ type: "tuple",
354
+ components: [
355
+ {
356
+ type: "tuple",
357
+ components: [
358
+ { type: "address" },
359
+ { type: "uint160" },
360
+ { type: "uint48" },
361
+ { type: "uint48" },
362
+ ],
363
+ },
364
+ { type: "address" },
365
+ { type: "uint256" },
366
+ ],
367
+ },
368
+ { type: "bytes" },
369
+ ], [
370
+ [
371
+ [
372
+ authorization.token,
373
+ authorization.amount,
374
+ authorization.expiration,
375
+ authorization.nonce,
376
+ ],
377
+ authorization.spender,
378
+ authorization.sigDeadline,
379
+ ],
380
+ signature,
381
+ ]);
382
+ return {
383
+ ...request,
384
+ args: [
385
+ `0x0a${commands.slice(2)}`,
386
+ [permitInput, ...inputs],
387
+ deadline,
388
+ ],
389
+ };
390
+ }
391
+ //# sourceMappingURL=directPay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directPay.js","sourceRoot":"","sources":["../../../src/v6/directPay.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export * from "./splits.js";
8
8
  export * from "./revnets.js";
9
9
  export * from "./terminals.js";
10
10
  export * from "./pay.js";
11
+ export * from "./directPay.js";
12
+ export * from "./permit2.js";
11
13
  export * from "./projectPayers.js";
12
14
  export * from "./cashOut.js";
13
15
  export * from "./nft.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -24,6 +24,8 @@ __exportStar(require("./splits.js"), exports);
24
24
  __exportStar(require("./revnets.js"), exports);
25
25
  __exportStar(require("./terminals.js"), exports);
26
26
  __exportStar(require("./pay.js"), exports);
27
+ __exportStar(require("./directPay.js"), exports);
28
+ __exportStar(require("./permit2.js"), exports);
27
29
  __exportStar(require("./projectPayers.js"), exports);
28
30
  __exportStar(require("./cashOut.js"), exports);
29
31
  __exportStar(require("./nft.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,iDAA+B;AAC/B,+CAA6B;AAC7B,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The denominator for REVLoans fee percents: prepaid fee percents and source fee percents
3
+ * are expressed out of 1000.
4
+ */
5
+ export declare const LOANS_MAX_FEE = 1000n;
6
+ /**
7
+ * The minimum `prepaidFeePercent` REVLoans accepts when borrowing: 25 of
8
+ * {@link LOANS_MAX_FEE} (2.5%), paid upfront to the source revnet.
9
+ */
10
+ export declare const MIN_PREPAID_FEE_PERCENT = 25n;
11
+ /** The largest prepaid source fee REVLoans accepts: 500 / 1000 = 50%. */
12
+ export declare const MAX_PREPAID_FEE_PERCENT = 500n;
13
+ /** The upfront fee REVLoans routes to the $REV revnet on every borrow: 1%. */
14
+ export declare const REV_PREPAID_FEE_PERCENT = 10n;
15
+ export interface LoanOpeningAmounts {
16
+ grossBorrowAmount: bigint;
17
+ protocolFee: bigint;
18
+ revFee: bigint;
19
+ sourceFee: bigint;
20
+ netBorrowAmount: bigint;
21
+ }
22
+ /**
23
+ * Calculate spendable loan proceeds using the contracts' floor-rounded fee arithmetic.
24
+ */
25
+ export declare function loanOpeningAmounts({ grossBorrowAmount, prepaidSourceFeePercent, protocolFeeApplies, revFeeApplies, }: {
26
+ grossBorrowAmount: bigint;
27
+ prepaidSourceFeePercent?: bigint;
28
+ protocolFeeApplies?: boolean;
29
+ revFeeApplies?: boolean;
30
+ }): LoanOpeningAmounts;
31
+ /** Convenience accessor for {@link loanOpeningAmounts}. */
32
+ export declare function netLoanProceeds(grossBorrowAmount: bigint, prepaidSourceFeePercent?: bigint): bigint;
33
+ //# sourceMappingURL=loanMath.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loanMath.d.ts","sourceRoot":"","sources":["../../../src/v6/loanMath.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,iBAAiB,EACjB,uBAAiD,EACjD,kBAAyB,EACzB,aAAoB,GACrB,EAAE;IACD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,kBAAkB,CA2BrB;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAC7B,iBAAiB,EAAE,MAAM,EACzB,uBAAuB,SAA0B,GAChD,MAAM,CAKR"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REV_PREPAID_FEE_PERCENT = exports.MAX_PREPAID_FEE_PERCENT = exports.MIN_PREPAID_FEE_PERCENT = exports.LOANS_MAX_FEE = void 0;
4
+ exports.loanOpeningAmounts = loanOpeningAmounts;
5
+ exports.netLoanProceeds = netLoanProceeds;
6
+ /**
7
+ * The denominator for REVLoans fee percents: prepaid fee percents and source fee percents
8
+ * are expressed out of 1000.
9
+ */
10
+ exports.LOANS_MAX_FEE = 1000n;
11
+ /**
12
+ * The minimum `prepaidFeePercent` REVLoans accepts when borrowing: 25 of
13
+ * {@link LOANS_MAX_FEE} (2.5%), paid upfront to the source revnet.
14
+ */
15
+ exports.MIN_PREPAID_FEE_PERCENT = 25n;
16
+ /** The largest prepaid source fee REVLoans accepts: 500 / 1000 = 50%. */
17
+ exports.MAX_PREPAID_FEE_PERCENT = 500n;
18
+ /** The upfront fee REVLoans routes to the $REV revnet on every borrow: 1%. */
19
+ exports.REV_PREPAID_FEE_PERCENT = 10n;
20
+ /**
21
+ * Calculate spendable loan proceeds using the contracts' floor-rounded fee arithmetic.
22
+ */
23
+ function loanOpeningAmounts({ grossBorrowAmount, prepaidSourceFeePercent = exports.MIN_PREPAID_FEE_PERCENT, protocolFeeApplies = true, revFeeApplies = true, }) {
24
+ if (grossBorrowAmount < 0n) {
25
+ throw new Error("grossBorrowAmount cannot be negative.");
26
+ }
27
+ if (prepaidSourceFeePercent < exports.MIN_PREPAID_FEE_PERCENT ||
28
+ prepaidSourceFeePercent > exports.MAX_PREPAID_FEE_PERCENT) {
29
+ throw new Error(`prepaidSourceFeePercent must be between ${exports.MIN_PREPAID_FEE_PERCENT} and ${exports.MAX_PREPAID_FEE_PERCENT}.`);
30
+ }
31
+ const protocolFee = protocolFeeApplies ? grossBorrowAmount / 40n : 0n;
32
+ const revFee = revFeeApplies
33
+ ? (grossBorrowAmount * exports.REV_PREPAID_FEE_PERCENT) / exports.LOANS_MAX_FEE
34
+ : 0n;
35
+ const sourceFee = (grossBorrowAmount * prepaidSourceFeePercent) / exports.LOANS_MAX_FEE;
36
+ const totalFees = protocolFee + revFee + sourceFee;
37
+ return {
38
+ grossBorrowAmount,
39
+ protocolFee,
40
+ revFee,
41
+ sourceFee,
42
+ netBorrowAmount: grossBorrowAmount > totalFees ? grossBorrowAmount - totalFees : 0n,
43
+ };
44
+ }
45
+ /** Convenience accessor for {@link loanOpeningAmounts}. */
46
+ function netLoanProceeds(grossBorrowAmount, prepaidSourceFeePercent = exports.MIN_PREPAID_FEE_PERCENT) {
47
+ return loanOpeningAmounts({
48
+ grossBorrowAmount,
49
+ prepaidSourceFeePercent,
50
+ }).netBorrowAmount;
51
+ }
52
+ //# sourceMappingURL=loanMath.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loanMath.js","sourceRoot":"","sources":["../../../src/v6/loanMath.ts"],"names":[],"mappings":";;;AA6BA,gDAqCC;AAGD,0CAQC;AA7ED;;;GAGG;AACU,QAAA,aAAa,GAAG,KAAK,CAAC;AAEnC;;;GAGG;AACU,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C,yEAAyE;AAC5D,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAE5C,8EAA8E;AACjE,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAU3C;;GAEG;AACH,SAAgB,kBAAkB,CAAC,EACjC,iBAAiB,EACjB,uBAAuB,GAAG,+BAAuB,EACjD,kBAAkB,GAAG,IAAI,EACzB,aAAa,GAAG,IAAI,GAMrB;IACC,IAAI,iBAAiB,GAAG,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IACE,uBAAuB,GAAG,+BAAuB;QACjD,uBAAuB,GAAG,+BAAuB,EACjD,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2CAA2C,+BAAuB,QAAQ,+BAAuB,GAAG,CACrG,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,MAAM,GAAG,aAAa;QAC1B,CAAC,CAAC,CAAC,iBAAiB,GAAG,+BAAuB,CAAC,GAAG,qBAAa;QAC/D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GACb,CAAC,iBAAiB,GAAG,uBAAuB,CAAC,GAAG,qBAAa,CAAC;IAChE,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,OAAO;QACL,iBAAiB;QACjB,WAAW;QACX,MAAM;QACN,SAAS;QACT,eAAe,EACb,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE;KACrE,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,SAAgB,eAAe,CAC7B,iBAAyB,EACzB,uBAAuB,GAAG,+BAAuB;IAEjD,OAAO,kBAAkB,CAAC;QACxB,iBAAiB;QACjB,uBAAuB;KACxB,CAAC,CAAC,eAAe,CAAC;AACrB,CAAC"}
@@ -1,23 +1,7 @@
1
1
  import { Address, Hex, PublicClient } from "viem";
2
2
  import { revLoansAbi } from "../generated/juicebox.js";
3
3
  import { JBChainId } from "../types.js";
4
- /**
5
- * The denominator for REVLoans fee percents: prepaid fee percents and source fee percents
6
- * are expressed out of 1000.
7
- */
8
- export declare const LOANS_MAX_FEE = 1000n;
9
- /**
10
- * The minimum `prepaidFeePercent` REVLoans accepts when borrowing: 25 of {@link LOANS_MAX_FEE}
11
- * (2.5%), paid upfront to the source revnet. Prepaying more than the minimum extends the
12
- * loan's zero-additional-cost duration; after it expires the repayment cost increases
13
- * linearly until the loan liquidates at 10 years.
14
- */
15
- export declare const MIN_PREPAID_FEE_PERCENT = 25n;
16
- /**
17
- * The upfront fee REVLoans routes to the $REV revnet on every borrow: 10 of
18
- * {@link LOANS_MAX_FEE} (1%), taken in addition to the prepaid fee.
19
- */
20
- export declare const REV_PREPAID_FEE_PERCENT = 10n;
4
+ export * from "./loanMath.js";
21
5
  /**
22
6
  * The JBPermissions permission id apps grant to the REVLoans contract before borrowing
23
7
  * against a holder's tokens (v6 ROOT permission id 1). REVLoans needs it to manage the
@@ -1 +1 @@
1
- {"version":3,"file":"loans.d.ts","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loans.d.ts","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,cAAc,eAAe,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAMpC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAoB,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,MAAM,GACP,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG;IACF,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,WAAW,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5E,CAgBA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,SAAkC,EAClC,KAAU,GACX,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,WAAW,CAAC;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC;CACf,CAeA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,MAAM,EACN,yBAAyB,EACzB,KAAK,EACL,eAAoB,EACpB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,GAClB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB,EAAE,MAAM,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG;IACF,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,WAAW,CAAC;IACxB,YAAY,EAAE,8BAA8B,CAAC;IAC7C,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;CAC3E,CAgBA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC,CAShE"}