@bananapus/nana-sdk-core 1.9.3 → 1.10.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.
- package/dist/cjs/v6/cashOut.d.ts +109 -2
- package/dist/cjs/v6/cashOut.d.ts.map +1 -1
- package/dist/cjs/v6/cashOut.js +324 -49
- package/dist/cjs/v6/cashOut.js.map +1 -1
- package/dist/cjs/v6/directPay.d.ts +69 -0
- package/dist/cjs/v6/directPay.d.ts.map +1 -0
- package/dist/cjs/v6/directPay.js +391 -0
- package/dist/cjs/v6/directPay.js.map +1 -0
- package/dist/cjs/v6/index.d.ts +2 -0
- package/dist/cjs/v6/index.d.ts.map +1 -1
- package/dist/cjs/v6/index.js +2 -0
- package/dist/cjs/v6/index.js.map +1 -1
- package/dist/cjs/v6/loans.d.ts +25 -0
- package/dist/cjs/v6/loans.d.ts.map +1 -1
- package/dist/cjs/v6/loans.js +42 -1
- package/dist/cjs/v6/loans.js.map +1 -1
- package/dist/cjs/v6/permit2.d.ts +169 -0
- package/dist/cjs/v6/permit2.d.ts.map +1 -0
- package/dist/cjs/v6/permit2.js +145 -0
- package/dist/cjs/v6/permit2.js.map +1 -0
- package/dist/cjs/v6/uniswapV4.d.ts +27 -0
- package/dist/cjs/v6/uniswapV4.d.ts.map +1 -1
- package/dist/cjs/v6/uniswapV4.js +66 -0
- package/dist/cjs/v6/uniswapV4.js.map +1 -1
- package/dist/esm/v6/cashOut.d.ts +109 -2
- package/dist/esm/v6/cashOut.d.ts.map +1 -1
- package/dist/esm/v6/cashOut.js +316 -48
- package/dist/esm/v6/cashOut.js.map +1 -1
- package/dist/esm/v6/directPay.d.ts +69 -0
- package/dist/esm/v6/directPay.d.ts.map +1 -0
- package/dist/esm/v6/directPay.js +385 -0
- package/dist/esm/v6/directPay.js.map +1 -0
- package/dist/esm/v6/index.d.ts +2 -0
- package/dist/esm/v6/index.d.ts.map +1 -1
- package/dist/esm/v6/index.js +2 -0
- package/dist/esm/v6/index.js.map +1 -1
- package/dist/esm/v6/loans.d.ts +25 -0
- package/dist/esm/v6/loans.d.ts.map +1 -1
- package/dist/esm/v6/loans.js +39 -0
- package/dist/esm/v6/loans.js.map +1 -1
- package/dist/esm/v6/permit2.d.ts +169 -0
- package/dist/esm/v6/permit2.d.ts.map +1 -0
- package/dist/esm/v6/permit2.js +136 -0
- package/dist/esm/v6/permit2.js.map +1 -0
- package/dist/esm/v6/uniswapV4.d.ts +27 -0
- package/dist/esm/v6/uniswapV4.d.ts.map +1 -1
- package/dist/esm/v6/uniswapV4.js +61 -0
- package/dist/esm/v6/uniswapV4.js.map +1 -1
- package/package.json +1 -1
package/dist/esm/v6/cashOut.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Address, Hex, PublicClient } from "viem";
|
|
2
2
|
import { jbMultiTerminalAbi } from "../generated/juicebox.js";
|
|
3
3
|
import { JBChainId } from "../types.js";
|
|
4
|
+
import { type UniswapV4PoolKey, type UniswapV4SwapTxRequest } from "./uniswapV4.js";
|
|
4
5
|
/**
|
|
5
6
|
* A prepared `cashOutTokensOf` transaction request, accepted as-is by viem's
|
|
6
7
|
* `walletClient.writeContract` and wagmi's `writeContract`.
|
|
@@ -229,6 +230,57 @@ export interface CashOutRoute {
|
|
|
229
230
|
hook: Address;
|
|
230
231
|
}) | null;
|
|
231
232
|
}
|
|
233
|
+
/** A terminal cash out or a direct sale of already-claimed project ERC-20s. */
|
|
234
|
+
export type BestCashOutRoute = {
|
|
235
|
+
kind: "cash-out";
|
|
236
|
+
expectedReturn: bigint;
|
|
237
|
+
minimumReturn: bigint;
|
|
238
|
+
cashOut: CashOutRoute;
|
|
239
|
+
} | {
|
|
240
|
+
kind: "direct-swap";
|
|
241
|
+
expectedReturn: bigint;
|
|
242
|
+
minimumReturn: bigint;
|
|
243
|
+
/** The displaced terminal route, retained for comparison and fallback. */
|
|
244
|
+
cashOut: CashOutRoute;
|
|
245
|
+
poolKey: UniswapV4PoolKey;
|
|
246
|
+
zeroForOne: boolean;
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* Pick the executable exit which guarantees the holder the most reclaim token.
|
|
250
|
+
*
|
|
251
|
+
* A direct pool sale can only spend claimed ERC-20s. Internal Juicebox credits
|
|
252
|
+
* stay on the terminal route until they are claimed. The direct route must beat
|
|
253
|
+
* the terminal's full expected output even after user slippage; an optimistic
|
|
254
|
+
* pool quote alone is never enough to displace a deterministic cash out.
|
|
255
|
+
*/
|
|
256
|
+
export declare function chooseBestCashOutRoute({ cashOut, directSwapQuote, directSwapPoolKey, directSwapZeroForOne, spendableProjectTokenCount, cashOutCount, slippageBps, }: {
|
|
257
|
+
cashOut: CashOutRoute;
|
|
258
|
+
directSwapQuote?: bigint | null;
|
|
259
|
+
directSwapPoolKey?: UniswapV4PoolKey;
|
|
260
|
+
directSwapZeroForOne?: boolean;
|
|
261
|
+
spendableProjectTokenCount?: bigint;
|
|
262
|
+
cashOutCount: bigint;
|
|
263
|
+
slippageBps?: bigint;
|
|
264
|
+
}): BestCashOutRoute;
|
|
265
|
+
export interface DirectCashOutSwapArguments {
|
|
266
|
+
poolKey: UniswapV4PoolKey;
|
|
267
|
+
projectToken: Address;
|
|
268
|
+
/** Claimed ERC-20 balance available to the Universal Router. */
|
|
269
|
+
spendableProjectTokenCount: bigint;
|
|
270
|
+
}
|
|
271
|
+
export interface BestCashOutArguments extends HookAwareCashOutArguments {
|
|
272
|
+
directSwap?: DirectCashOutSwapArguments;
|
|
273
|
+
}
|
|
274
|
+
/** Pool fee/impact already reflected by the buyback hook's executable quote. */
|
|
275
|
+
export declare function cashOutPoolBufferBps(route: CashOutRoute | null | undefined): bigint | null;
|
|
276
|
+
/** Machine-readable cash-out failures which clients can translate into copy. */
|
|
277
|
+
export type CashOutExecutionErrorCode = "BUYBACK_SLIPPAGE_EXCEEDED" | "TERMINAL_UNDER_MIN";
|
|
278
|
+
export interface CashOutExecutionError {
|
|
279
|
+
code: CashOutExecutionErrorCode;
|
|
280
|
+
selector: Hex;
|
|
281
|
+
}
|
|
282
|
+
/** Classify known cash-out errors through viem/wallet nested error shapes. */
|
|
283
|
+
export declare function classifyCashOutExecutionError(error: unknown): CashOutExecutionError | null;
|
|
232
284
|
/**
|
|
233
285
|
* Interpret a hook-aware `previewCashOutFrom` result and prepare a
|
|
234
286
|
* slippage-protected route.
|
|
@@ -297,7 +349,7 @@ export declare function resolveCashOutRoute({ reclaimAmount, cashOutTaxRate, hoo
|
|
|
297
349
|
* {@link DEFAULT_CASH_OUT_SLIPPAGE_BPS}.
|
|
298
350
|
* @returns The protected route (see {@link CashOutRoute}).
|
|
299
351
|
*/
|
|
300
|
-
export
|
|
352
|
+
export interface HookAwareCashOutArguments {
|
|
301
353
|
chainId: JBChainId;
|
|
302
354
|
projectId: bigint;
|
|
303
355
|
holder: Address;
|
|
@@ -308,5 +360,60 @@ export declare function getHookAwareCashOutQuote(client: PublicClient, { chainId
|
|
|
308
360
|
buybackHookAddress?: Address;
|
|
309
361
|
beneficiaryIsFeeless?: boolean;
|
|
310
362
|
slippageBps?: bigint;
|
|
311
|
-
}
|
|
363
|
+
}
|
|
364
|
+
/** The protocol facts returned by one `previewCashOutFrom` call. */
|
|
365
|
+
export interface CashOutPreviewSnapshot {
|
|
366
|
+
rulesetId: bigint | null;
|
|
367
|
+
reclaimAmount: bigint;
|
|
368
|
+
cashOutTaxRate: bigint;
|
|
369
|
+
hookSpecifications: readonly CashOutHookSpecification[];
|
|
370
|
+
}
|
|
371
|
+
export declare function getHookAwareCashOutQuote(client: PublicClient, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary, terminal, buybackHookAddress, beneficiaryIsFeeless, slippageBps, }: HookAwareCashOutArguments): Promise<CashOutRoute>;
|
|
372
|
+
/**
|
|
373
|
+
* Quote the best user exit across the terminal and a directly spendable pool.
|
|
374
|
+
*
|
|
375
|
+
* `previewCashOutFrom` remains the source of truth for terminal and buyback-hook
|
|
376
|
+
* settlement. When a matching pool and sufficient claimed ERC-20 balance are
|
|
377
|
+
* supplied, the V4 Quoter is read as well and a direct swap wins only when its
|
|
378
|
+
* slippage-protected minimum exceeds the terminal route's full expected output.
|
|
379
|
+
*/
|
|
380
|
+
export declare function getBestCashOutRoute(client: PublicClient, args: BestCashOutArguments): Promise<BestCashOutRoute>;
|
|
381
|
+
export declare class CashOutRouteChangedError extends Error {
|
|
382
|
+
readonly code = "CASH_OUT_ROUTE_CHANGED";
|
|
383
|
+
constructor();
|
|
384
|
+
}
|
|
385
|
+
/** A fresh quote, locked AMM preview, and matching transaction request. */
|
|
386
|
+
export interface PreparedHookAwareCashOut {
|
|
387
|
+
route: CashOutRoute;
|
|
388
|
+
transaction: V6CashOutTxRequest;
|
|
389
|
+
preview: CashOutPreviewSnapshot;
|
|
390
|
+
lockedPreview: CashOutPreviewSnapshot | null;
|
|
391
|
+
}
|
|
392
|
+
export type PreparedBestCashOut = ({
|
|
393
|
+
kind: "cash-out";
|
|
394
|
+
} & PreparedHookAwareCashOut) | {
|
|
395
|
+
kind: "direct-swap";
|
|
396
|
+
route: Extract<BestCashOutRoute, {
|
|
397
|
+
kind: "direct-swap";
|
|
398
|
+
}>;
|
|
399
|
+
transaction: UniswapV4SwapTxRequest;
|
|
400
|
+
};
|
|
401
|
+
/**
|
|
402
|
+
* Prepare the exact hook-aware cash-out request a wallet should submit.
|
|
403
|
+
*
|
|
404
|
+
* Pool routes are re-previewed with their slippage metadata before the request
|
|
405
|
+
* is returned. This proves the executable minimum still selects the same route
|
|
406
|
+
* and avoids clients independently composing a stale quote and transaction.
|
|
407
|
+
*/
|
|
408
|
+
export declare function prepareHookAwareCashOut(client: PublicClient, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary, terminal, buybackHookAddress, beneficiaryIsFeeless, slippageBps, }: HookAwareCashOutArguments): Promise<PreparedHookAwareCashOut>;
|
|
409
|
+
/**
|
|
410
|
+
* Freshly prepare the best executable cash-out or direct-swap transaction.
|
|
411
|
+
*
|
|
412
|
+
* A direct swap is freshly quoted and slippage-floored in the same operation
|
|
413
|
+
* which builds its Universal Router request. If it cannot safely beat the
|
|
414
|
+
* terminal, the terminal path is re-previewed and locked instead.
|
|
415
|
+
*/
|
|
416
|
+
export declare function prepareBestCashOut(client: PublicClient, args: BestCashOutArguments & {
|
|
417
|
+
directSwapDeadline: bigint;
|
|
418
|
+
}): Promise<PreparedBestCashOut>;
|
|
312
419
|
//# sourceMappingURL=cashOut.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashOut.d.ts","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,GAAG,EACH,YAAY,EAGb,MAAM,MAAM,CAAC;AACd,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cashOut.d.ts","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/v6/cashOut.js
CHANGED
|
@@ -4,6 +4,7 @@ import { applyJbDaoCashOutFee } from "../utils/fee.js";
|
|
|
4
4
|
import { createHookMetadata, hookMetadataId } from "../utils/hook.js";
|
|
5
5
|
import { NATIVE_TOKEN_CURRENCY_ID } from "./currency.js";
|
|
6
6
|
import { v6Address } from "./types.js";
|
|
7
|
+
import { buildUniswapV4ExactInputSwapTx, quoteUniswapV4ExactInputSingle, uniswapV4SwapDirection, } from "./uniswapV4.js";
|
|
7
8
|
/**
|
|
8
9
|
* Build a `cashOutTokensOf(holder, projectId, cashOutCount, tokenToReclaim,
|
|
9
10
|
* minTokensReclaimed, beneficiary, metadata)` transaction request for a v6 terminal.
|
|
@@ -210,6 +211,96 @@ export function buildBuybackCashOutMetadata({ hook, minimumSwapAmountOut, skip =
|
|
|
210
211
|
const payload = encodeAbiParameters([{ type: "uint256" }, { type: "bool" }], [minimumSwapAmountOut, skip]);
|
|
211
212
|
return createHookMetadata([hookMetadataId(hook, "cashOut")], [payload]);
|
|
212
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Pick the executable exit which guarantees the holder the most reclaim token.
|
|
216
|
+
*
|
|
217
|
+
* A direct pool sale can only spend claimed ERC-20s. Internal Juicebox credits
|
|
218
|
+
* stay on the terminal route until they are claimed. The direct route must beat
|
|
219
|
+
* the terminal's full expected output even after user slippage; an optimistic
|
|
220
|
+
* pool quote alone is never enough to displace a deterministic cash out.
|
|
221
|
+
*/
|
|
222
|
+
export function chooseBestCashOutRoute({ cashOut, directSwapQuote, directSwapPoolKey, directSwapZeroForOne, spendableProjectTokenCount = 0n, cashOutCount, slippageBps = DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
223
|
+
const cashOutCandidate = {
|
|
224
|
+
kind: "cash-out",
|
|
225
|
+
expectedReturn: cashOut.expectedReturn,
|
|
226
|
+
minimumReturn: cashOut.minimumReturn,
|
|
227
|
+
cashOut,
|
|
228
|
+
};
|
|
229
|
+
if (!directSwapQuote ||
|
|
230
|
+
directSwapQuote <= 0n ||
|
|
231
|
+
!directSwapPoolKey ||
|
|
232
|
+
directSwapZeroForOne === undefined ||
|
|
233
|
+
cashOutCount <= 0n ||
|
|
234
|
+
spendableProjectTokenCount < cashOutCount) {
|
|
235
|
+
return cashOutCandidate;
|
|
236
|
+
}
|
|
237
|
+
const minimumReturn = slippageFloor(directSwapQuote, slippageBps);
|
|
238
|
+
if (minimumReturn <= cashOut.expectedReturn)
|
|
239
|
+
return cashOutCandidate;
|
|
240
|
+
return {
|
|
241
|
+
kind: "direct-swap",
|
|
242
|
+
expectedReturn: directSwapQuote,
|
|
243
|
+
minimumReturn,
|
|
244
|
+
cashOut,
|
|
245
|
+
poolKey: directSwapPoolKey,
|
|
246
|
+
zeroForOne: directSwapZeroForOne,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/** Pool fee/impact already reflected by the buyback hook's executable quote. */
|
|
250
|
+
export function cashOutPoolBufferBps(route) {
|
|
251
|
+
const buyback = route?.route === "amm" ? route.buyback : null;
|
|
252
|
+
if (!buyback || buyback.rawSwapQuote <= 0n)
|
|
253
|
+
return null;
|
|
254
|
+
const executableQuote = buyback.minimumSwapAmountOut > buyback.rawSwapQuote
|
|
255
|
+
? buyback.rawSwapQuote
|
|
256
|
+
: buyback.minimumSwapAmountOut;
|
|
257
|
+
return (((buyback.rawSwapQuote - executableQuote) * MAX_BPS +
|
|
258
|
+
buyback.rawSwapQuote -
|
|
259
|
+
1n) /
|
|
260
|
+
buyback.rawSwapQuote);
|
|
261
|
+
}
|
|
262
|
+
const CASH_OUT_EXECUTION_ERRORS = [
|
|
263
|
+
{
|
|
264
|
+
code: "BUYBACK_SLIPPAGE_EXCEEDED",
|
|
265
|
+
selector: "0xe2d708a9",
|
|
266
|
+
matchers: ["0xe2d708a9", "jbbuybackhook_specifiedslippageexceeded"],
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
code: "TERMINAL_UNDER_MIN",
|
|
270
|
+
selector: "0x6b2bb382",
|
|
271
|
+
matchers: ["0x6b2bb382", "jbmultiterminal_undermin"],
|
|
272
|
+
},
|
|
273
|
+
];
|
|
274
|
+
function collectCashOutErrorText(value, seen = new Set(), depth = 0) {
|
|
275
|
+
if (depth > 8 || value === null || value === undefined || seen.has(value)) {
|
|
276
|
+
return [];
|
|
277
|
+
}
|
|
278
|
+
if (typeof value === "string")
|
|
279
|
+
return [value];
|
|
280
|
+
if (typeof value !== "object")
|
|
281
|
+
return [];
|
|
282
|
+
seen.add(value);
|
|
283
|
+
const record = value;
|
|
284
|
+
return [
|
|
285
|
+
record.shortMessage,
|
|
286
|
+
record.message,
|
|
287
|
+
record.details,
|
|
288
|
+
record.errorName,
|
|
289
|
+
record.signature,
|
|
290
|
+
record.raw,
|
|
291
|
+
record.data,
|
|
292
|
+
record.cause,
|
|
293
|
+
record.error,
|
|
294
|
+
].flatMap((item) => collectCashOutErrorText(item, seen, depth + 1));
|
|
295
|
+
}
|
|
296
|
+
/** Classify known cash-out errors through viem/wallet nested error shapes. */
|
|
297
|
+
export function classifyCashOutExecutionError(error) {
|
|
298
|
+
const text = collectCashOutErrorText(error).join(" | ").toLowerCase();
|
|
299
|
+
if (!text)
|
|
300
|
+
return null;
|
|
301
|
+
const matched = CASH_OUT_EXECUTION_ERRORS.find(({ matchers }) => matchers.some((matcher) => text.includes(matcher)));
|
|
302
|
+
return matched ? { code: matched.code, selector: matched.selector } : null;
|
|
303
|
+
}
|
|
213
304
|
/**
|
|
214
305
|
* Interpret a hook-aware `previewCashOutFrom` result and prepare a
|
|
215
306
|
* slippage-protected route.
|
|
@@ -271,14 +362,20 @@ export function resolveCashOutRoute({ reclaimAmount, cashOutTaxRate, hookSpecifi
|
|
|
271
362
|
};
|
|
272
363
|
if (!specification || specification.noop || !buyback)
|
|
273
364
|
return treasuryRoute;
|
|
274
|
-
// The
|
|
275
|
-
//
|
|
276
|
-
//
|
|
365
|
+
// The raw swap quote is an optimistic oracle quote used for display and
|
|
366
|
+
// route comparison. The hook's minimumSwapAmountOut is the executable pool
|
|
367
|
+
// quote after fee, liquidity, and price-impact constraints. User slippage
|
|
368
|
+
// must be applied to that executable value; applying it to rawSwapQuote can
|
|
369
|
+
// create a minimum the pool cannot satisfy.
|
|
277
370
|
const quote = buyback.rawSwapQuote > 0n
|
|
278
371
|
? buyback.rawSwapQuote
|
|
279
372
|
: buyback.minimumSwapAmountOut;
|
|
373
|
+
const executableQuote = buyback.rawSwapQuote > 0n &&
|
|
374
|
+
buyback.minimumSwapAmountOut > buyback.rawSwapQuote
|
|
375
|
+
? buyback.rawSwapQuote
|
|
376
|
+
: buyback.minimumSwapAmountOut;
|
|
280
377
|
const minimumReturn = buyback.rawSwapQuote > 0n && !buyback.hasUserSpecifiedMinimumSwapAmountOut
|
|
281
|
-
? slippageFloor(
|
|
378
|
+
? slippageFloor(executableQuote, slippageBps)
|
|
282
379
|
: buyback.minimumSwapAmountOut;
|
|
283
380
|
// An explicit metadata minimum at or below the direct net routes execution
|
|
284
381
|
// back to the terminal path anyway; take the deterministic treasury route.
|
|
@@ -300,41 +397,22 @@ export function resolveCashOutRoute({ reclaimAmount, cashOutTaxRate, hookSpecifi
|
|
|
300
397
|
buyback,
|
|
301
398
|
};
|
|
302
399
|
}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
* @param args.beneficiary The reclaim beneficiary. Defaults to the holder.
|
|
320
|
-
* @param args.terminal The terminal to quote against. Defaults to the chain's
|
|
321
|
-
* canonical `JBMultiTerminal`.
|
|
322
|
-
* @param args.buybackHookAddress The buyback hook whose specification may win
|
|
323
|
-
* the pool route. Defaults to the chain's canonical `JBBuybackHook`; pass it
|
|
324
|
-
* explicitly for a project whose `JBBuybackHookRegistry` entry points at a
|
|
325
|
-
* custom hook. On a chain with no `JBBuybackHook` deployment, specifications
|
|
326
|
-
* are treated as non-buyback and the treasury route is returned.
|
|
327
|
-
* @param args.beneficiaryIsFeeless Whether the beneficiary is feeless.
|
|
328
|
-
* Defaults to false.
|
|
329
|
-
* @param args.slippageBps Tolerance for quote-to-inclusion drift. Defaults to
|
|
330
|
-
* {@link DEFAULT_CASH_OUT_SLIPPAGE_BPS}.
|
|
331
|
-
* @returns The protected route (see {@link CashOutRoute}).
|
|
332
|
-
*/
|
|
333
|
-
export async function getHookAwareCashOutQuote(client, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary, terminal, buybackHookAddress, beneficiaryIsFeeless = false, slippageBps = DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
334
|
-
const terminalAddress = terminal ?? v6Address("JBMultiTerminal", chainId);
|
|
335
|
-
const buybackHook = buybackHookAddress ?? optionalV6Address("JBBuybackHook", chainId);
|
|
336
|
-
const [, reclaimAmount, cashOutTaxRate, hookSpecifications] = await client.readContract({
|
|
337
|
-
address: terminalAddress,
|
|
400
|
+
function rulesetIdOf(ruleset) {
|
|
401
|
+
const id = ruleset && typeof ruleset === "object" && "id" in ruleset
|
|
402
|
+
? ruleset.id
|
|
403
|
+
: Array.isArray(ruleset)
|
|
404
|
+
? ruleset[0]
|
|
405
|
+
: null;
|
|
406
|
+
try {
|
|
407
|
+
return id === null || id === undefined ? null : BigInt(id);
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
async function readCashOutPreviewSnapshot(client, { terminal, holder, projectId, cashOutCount, tokenToReclaim, beneficiary, metadata, }) {
|
|
414
|
+
const [ruleset, reclaimAmount, cashOutTaxRate, hookSpecifications] = await client.readContract({
|
|
415
|
+
address: terminal,
|
|
338
416
|
abi: jbMultiTerminalAbi,
|
|
339
417
|
functionName: "previewCashOutFrom",
|
|
340
418
|
args: [
|
|
@@ -342,29 +420,219 @@ export async function getHookAwareCashOutQuote(client, { chainId, projectId, hol
|
|
|
342
420
|
projectId,
|
|
343
421
|
cashOutCount,
|
|
344
422
|
tokenToReclaim,
|
|
345
|
-
beneficiary
|
|
346
|
-
|
|
423
|
+
beneficiary,
|
|
424
|
+
metadata,
|
|
347
425
|
],
|
|
348
426
|
});
|
|
349
|
-
|
|
350
|
-
|
|
427
|
+
return {
|
|
428
|
+
rulesetId: rulesetIdOf(ruleset),
|
|
429
|
+
reclaimAmount,
|
|
430
|
+
cashOutTaxRate,
|
|
431
|
+
hookSpecifications,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
async function resolveCashOutPreviewSnapshot(client, preview, { terminal, projectId, tokenToReclaim, buybackHookAddress, beneficiaryIsFeeless, slippageBps, }) {
|
|
435
|
+
const feeFreeSurplus = preview.cashOutTaxRate === 0n
|
|
351
436
|
? await client.readContract({
|
|
352
|
-
address:
|
|
437
|
+
address: terminal,
|
|
353
438
|
abi: jbMultiTerminalAbi,
|
|
354
439
|
functionName: "feeFreeSurplusOf",
|
|
355
440
|
args: [projectId, tokenToReclaim],
|
|
356
441
|
})
|
|
357
442
|
: 0n;
|
|
358
443
|
return resolveCashOutRoute({
|
|
359
|
-
reclaimAmount,
|
|
360
|
-
cashOutTaxRate,
|
|
361
|
-
hookSpecifications,
|
|
362
|
-
buybackHookAddress
|
|
444
|
+
reclaimAmount: preview.reclaimAmount,
|
|
445
|
+
cashOutTaxRate: preview.cashOutTaxRate,
|
|
446
|
+
hookSpecifications: preview.hookSpecifications,
|
|
447
|
+
buybackHookAddress,
|
|
363
448
|
beneficiaryIsFeeless,
|
|
364
449
|
feeFreeSurplus,
|
|
365
450
|
slippageBps,
|
|
366
451
|
});
|
|
367
452
|
}
|
|
453
|
+
export async function getHookAwareCashOutQuote(client, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary = holder, terminal, buybackHookAddress, beneficiaryIsFeeless = false, slippageBps = DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
454
|
+
const terminalAddress = terminal ?? v6Address("JBMultiTerminal", chainId);
|
|
455
|
+
const buybackHook = buybackHookAddress ?? optionalV6Address("JBBuybackHook", chainId);
|
|
456
|
+
const preview = await readCashOutPreviewSnapshot(client, {
|
|
457
|
+
terminal: terminalAddress,
|
|
458
|
+
holder,
|
|
459
|
+
projectId,
|
|
460
|
+
cashOutCount,
|
|
461
|
+
tokenToReclaim,
|
|
462
|
+
beneficiary,
|
|
463
|
+
metadata: "0x",
|
|
464
|
+
});
|
|
465
|
+
return resolveCashOutPreviewSnapshot(client, preview, {
|
|
466
|
+
terminal: terminalAddress,
|
|
467
|
+
projectId,
|
|
468
|
+
tokenToReclaim,
|
|
469
|
+
buybackHookAddress: buybackHook,
|
|
470
|
+
beneficiaryIsFeeless,
|
|
471
|
+
slippageBps,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
/**
|
|
475
|
+
* Quote the best user exit across the terminal and a directly spendable pool.
|
|
476
|
+
*
|
|
477
|
+
* `previewCashOutFrom` remains the source of truth for terminal and buyback-hook
|
|
478
|
+
* settlement. When a matching pool and sufficient claimed ERC-20 balance are
|
|
479
|
+
* supplied, the V4 Quoter is read as well and a direct swap wins only when its
|
|
480
|
+
* slippage-protected minimum exceeds the terminal route's full expected output.
|
|
481
|
+
*/
|
|
482
|
+
export async function getBestCashOutRoute(client, args) {
|
|
483
|
+
const cashOut = await getHookAwareCashOutQuote(client, args);
|
|
484
|
+
const directSwap = args.directSwap;
|
|
485
|
+
if (!directSwap ||
|
|
486
|
+
directSwap.spendableProjectTokenCount < args.cashOutCount ||
|
|
487
|
+
args.cashOutCount <= 0n) {
|
|
488
|
+
return chooseBestCashOutRoute({
|
|
489
|
+
cashOut,
|
|
490
|
+
cashOutCount: args.cashOutCount,
|
|
491
|
+
slippageBps: args.slippageBps,
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
const zeroForOne = uniswapV4SwapDirection({
|
|
495
|
+
poolKey: directSwap.poolKey,
|
|
496
|
+
tokenIn: directSwap.projectToken,
|
|
497
|
+
tokenOut: args.tokenToReclaim,
|
|
498
|
+
});
|
|
499
|
+
if (zeroForOne === null) {
|
|
500
|
+
return chooseBestCashOutRoute({
|
|
501
|
+
cashOut,
|
|
502
|
+
cashOutCount: args.cashOutCount,
|
|
503
|
+
slippageBps: args.slippageBps,
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
let directSwapQuote;
|
|
507
|
+
try {
|
|
508
|
+
directSwapQuote = await quoteUniswapV4ExactInputSingle(client, {
|
|
509
|
+
chainId: args.chainId,
|
|
510
|
+
poolKey: directSwap.poolKey,
|
|
511
|
+
zeroForOne,
|
|
512
|
+
amountIn: args.cashOutCount,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
catch {
|
|
516
|
+
// The direct pool is an optional optimization. A missing/reverting quoter
|
|
517
|
+
// must not make an otherwise valid terminal cash out unavailable.
|
|
518
|
+
return chooseBestCashOutRoute({
|
|
519
|
+
cashOut,
|
|
520
|
+
cashOutCount: args.cashOutCount,
|
|
521
|
+
slippageBps: args.slippageBps,
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
return chooseBestCashOutRoute({
|
|
525
|
+
cashOut,
|
|
526
|
+
directSwapQuote,
|
|
527
|
+
directSwapPoolKey: directSwap.poolKey,
|
|
528
|
+
directSwapZeroForOne: zeroForOne,
|
|
529
|
+
spendableProjectTokenCount: directSwap.spendableProjectTokenCount,
|
|
530
|
+
cashOutCount: args.cashOutCount,
|
|
531
|
+
slippageBps: args.slippageBps,
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
export class CashOutRouteChangedError extends Error {
|
|
535
|
+
constructor() {
|
|
536
|
+
super("The cash-out route changed while its executable minimum was being locked.");
|
|
537
|
+
this.code = "CASH_OUT_ROUTE_CHANGED";
|
|
538
|
+
this.name = "CashOutRouteChangedError";
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Prepare the exact hook-aware cash-out request a wallet should submit.
|
|
543
|
+
*
|
|
544
|
+
* Pool routes are re-previewed with their slippage metadata before the request
|
|
545
|
+
* is returned. This proves the executable minimum still selects the same route
|
|
546
|
+
* and avoids clients independently composing a stale quote and transaction.
|
|
547
|
+
*/
|
|
548
|
+
export async function prepareHookAwareCashOut(client, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary = holder, terminal, buybackHookAddress, beneficiaryIsFeeless = false, slippageBps = DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
549
|
+
const terminalAddress = terminal ?? v6Address("JBMultiTerminal", chainId);
|
|
550
|
+
const buybackHook = buybackHookAddress ?? optionalV6Address("JBBuybackHook", chainId);
|
|
551
|
+
const resolvePreview = (preview) => resolveCashOutPreviewSnapshot(client, preview, {
|
|
552
|
+
terminal: terminalAddress,
|
|
553
|
+
projectId,
|
|
554
|
+
tokenToReclaim,
|
|
555
|
+
buybackHookAddress: buybackHook,
|
|
556
|
+
beneficiaryIsFeeless,
|
|
557
|
+
slippageBps,
|
|
558
|
+
});
|
|
559
|
+
const preview = await readCashOutPreviewSnapshot(client, {
|
|
560
|
+
terminal: terminalAddress,
|
|
561
|
+
holder,
|
|
562
|
+
projectId,
|
|
563
|
+
cashOutCount,
|
|
564
|
+
tokenToReclaim,
|
|
565
|
+
beneficiary,
|
|
566
|
+
metadata: "0x",
|
|
567
|
+
});
|
|
568
|
+
const route = await resolvePreview(preview);
|
|
569
|
+
let lockedPreview = null;
|
|
570
|
+
if (route.route === "amm") {
|
|
571
|
+
lockedPreview = await readCashOutPreviewSnapshot(client, {
|
|
572
|
+
terminal: terminalAddress,
|
|
573
|
+
holder,
|
|
574
|
+
projectId,
|
|
575
|
+
cashOutCount,
|
|
576
|
+
tokenToReclaim,
|
|
577
|
+
beneficiary,
|
|
578
|
+
metadata: route.metadata,
|
|
579
|
+
});
|
|
580
|
+
const lockedRoute = await resolvePreview(lockedPreview);
|
|
581
|
+
if ((preview.rulesetId !== null &&
|
|
582
|
+
lockedPreview.rulesetId !== null &&
|
|
583
|
+
lockedPreview.rulesetId !== preview.rulesetId) ||
|
|
584
|
+
lockedRoute.route !== "amm" ||
|
|
585
|
+
lockedRoute.minimumReturn !== route.minimumReturn ||
|
|
586
|
+
lockedRoute.metadata.toLowerCase() !== route.metadata.toLowerCase()) {
|
|
587
|
+
throw new CashOutRouteChangedError();
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
return {
|
|
591
|
+
route,
|
|
592
|
+
transaction: buildCashOutTx({
|
|
593
|
+
chainId,
|
|
594
|
+
terminal: terminalAddress,
|
|
595
|
+
holder,
|
|
596
|
+
projectId,
|
|
597
|
+
cashOutCount,
|
|
598
|
+
tokenToReclaim,
|
|
599
|
+
minTokensReclaimed: route.terminalMinimum,
|
|
600
|
+
beneficiary,
|
|
601
|
+
metadata: route.metadata,
|
|
602
|
+
}),
|
|
603
|
+
preview,
|
|
604
|
+
lockedPreview,
|
|
605
|
+
};
|
|
606
|
+
}
|
|
607
|
+
/**
|
|
608
|
+
* Freshly prepare the best executable cash-out or direct-swap transaction.
|
|
609
|
+
*
|
|
610
|
+
* A direct swap is freshly quoted and slippage-floored in the same operation
|
|
611
|
+
* which builds its Universal Router request. If it cannot safely beat the
|
|
612
|
+
* terminal, the terminal path is re-previewed and locked instead.
|
|
613
|
+
*/
|
|
614
|
+
export async function prepareBestCashOut(client, args) {
|
|
615
|
+
const best = await getBestCashOutRoute(client, args);
|
|
616
|
+
if (best.kind === "direct-swap") {
|
|
617
|
+
return {
|
|
618
|
+
kind: "direct-swap",
|
|
619
|
+
route: best,
|
|
620
|
+
transaction: buildUniswapV4ExactInputSwapTx({
|
|
621
|
+
chainId: args.chainId,
|
|
622
|
+
poolKey: best.poolKey,
|
|
623
|
+
zeroForOne: best.zeroForOne,
|
|
624
|
+
amountIn: args.cashOutCount,
|
|
625
|
+
minimumAmountOut: best.minimumReturn,
|
|
626
|
+
recipient: args.beneficiary ?? args.holder,
|
|
627
|
+
deadline: args.directSwapDeadline,
|
|
628
|
+
}),
|
|
629
|
+
};
|
|
630
|
+
}
|
|
631
|
+
return {
|
|
632
|
+
kind: "cash-out",
|
|
633
|
+
...(await prepareHookAwareCashOut(client, args)),
|
|
634
|
+
};
|
|
635
|
+
}
|
|
368
636
|
/**
|
|
369
637
|
* `v6Address`, but returning undefined instead of throwing on a chain the
|
|
370
638
|
* contract isn't deployed to.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashOut.js","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cashOut.js","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"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"}
|