@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/cjs/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":"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;AAKxC,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAExB;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,kBAAkB,CAAC;IAC/B,YAAY,EAAE,iBAAiB,CAAC;IAChC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;CACzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,cAAc,EACd,kBAAuB,EACvB,WAAW,EACX,QAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG,kBAAkB,CAgBrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,gBAAgB,EAChB,QAAQ,GACT,EAAE;IACD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,GAAG,CAiBN;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,SAAS,EACT,YAAY,EACZ,QAAc,EACd,QAA2C,GAC5C,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAWlD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,MAAsC,GAClD,MAAM,CAKR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,aAAa,EACb,cAAc,EACd,oBAA4B,EAC5B,cAAmB,GACpB,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAMT;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC,EAAE,OAAO,CAAC;CAC/C;AAaD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,GAAG,GAAG,kBAAkB,CAqB1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CAAC,EAC1C,IAAI,EACJ,oBAAoB,EACpB,IAAY,GACb,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,GAAG,CAYN;AAED,gFAAgF;AAChF,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC;IAC1B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,QAAQ,EAAE,GAAG,CAAC;IACd,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,OAAO,EAAE,CAAC,kBAAkB,GAAG;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;CACvB,GACD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEN;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,0BAA+B,EAC/B,YAAY,EACZ,WAA2C,GAC5C,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IACrC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,gBAAgB,CA6BnB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,0BAA0B,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,UAAU,CAAC,EAAE,0BAA0B,CAAC;CACzC;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,GACrC,MAAM,GAAG,IAAI,CAaf;AAED,gFAAgF;AAChF,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,oBAAoB,CAAC;AAEzB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,yBAAyB,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC;CACf;AA0CD,8EAA8E;AAC9E,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,qBAAqB,GAAG,IAAI,CAO9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,oBAA4B,EAC5B,cAAmB,EACnB,WAA2C,GAC5C,EAAE;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACxD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,YAAY,CA8Ef;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,oEAAoE;AACpE,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACzD;AAkGD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc,EACd,WAAoB,EACpB,QAAQ,EACR,kBAAkB,EAClB,oBAA4B,EAC5B,WAA2C,GAC5C,EAAE,yBAAyB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAqBvB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,4BAA4B;;CAQ1C;AAED,2EAA2E;AAC3E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,sBAAsB,CAAC;IAChC,aAAa,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC9C;AAED,MAAM,MAAM,mBAAmB,GAC3B,CAAC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG,wBAAwB,CAAC,GACjD;IACE,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;IAC1D,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEN;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,SAAS,EACT,MAAM,EACN,YAAY,EACZ,cAAc,EACd,WAAoB,EACpB,QAAQ,EACR,kBAAkB,EAClB,oBAA4B,EAC5B,WAA2C,GAC5C,EAAE,yBAAyB,GAC3B,OAAO,CAAC,wBAAwB,CAAC,CAiEnC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,oBAAoB,GAAG;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC,mBAAmB,CAAC,CAsB9B"}
|
package/dist/cjs/v6/cashOut.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_CASH_OUT_SLIPPAGE_BPS = void 0;
|
|
3
|
+
exports.CashOutRouteChangedError = exports.DEFAULT_CASH_OUT_SLIPPAGE_BPS = void 0;
|
|
4
4
|
exports.buildCashOutTx = buildCashOutTx;
|
|
5
5
|
exports.build721CashOutMetadata = build721CashOutMetadata;
|
|
6
6
|
exports.getCashOutQuote = getCashOutQuote;
|
|
@@ -8,14 +8,21 @@ exports.slippageFloor = slippageFloor;
|
|
|
8
8
|
exports.cashOutProtocolFee = cashOutProtocolFee;
|
|
9
9
|
exports.decodeBuybackCashOutSpec = decodeBuybackCashOutSpec;
|
|
10
10
|
exports.buildBuybackCashOutMetadata = buildBuybackCashOutMetadata;
|
|
11
|
+
exports.chooseBestCashOutRoute = chooseBestCashOutRoute;
|
|
12
|
+
exports.cashOutPoolBufferBps = cashOutPoolBufferBps;
|
|
13
|
+
exports.classifyCashOutExecutionError = classifyCashOutExecutionError;
|
|
11
14
|
exports.resolveCashOutRoute = resolveCashOutRoute;
|
|
12
15
|
exports.getHookAwareCashOutQuote = getHookAwareCashOutQuote;
|
|
16
|
+
exports.getBestCashOutRoute = getBestCashOutRoute;
|
|
17
|
+
exports.prepareHookAwareCashOut = prepareHookAwareCashOut;
|
|
18
|
+
exports.prepareBestCashOut = prepareBestCashOut;
|
|
13
19
|
const viem_1 = require("viem");
|
|
14
20
|
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
15
21
|
const fee_js_1 = require("../utils/fee.js");
|
|
16
22
|
const hook_js_1 = require("../utils/hook.js");
|
|
17
23
|
const currency_js_1 = require("./currency.js");
|
|
18
24
|
const types_js_1 = require("./types.js");
|
|
25
|
+
const uniswapV4_js_1 = require("./uniswapV4.js");
|
|
19
26
|
/**
|
|
20
27
|
* Build a `cashOutTokensOf(holder, projectId, cashOutCount, tokenToReclaim,
|
|
21
28
|
* minTokensReclaimed, beneficiary, metadata)` transaction request for a v6 terminal.
|
|
@@ -222,6 +229,96 @@ function buildBuybackCashOutMetadata({ hook, minimumSwapAmountOut, skip = false,
|
|
|
222
229
|
const payload = (0, viem_1.encodeAbiParameters)([{ type: "uint256" }, { type: "bool" }], [minimumSwapAmountOut, skip]);
|
|
223
230
|
return (0, hook_js_1.createHookMetadata)([(0, hook_js_1.hookMetadataId)(hook, "cashOut")], [payload]);
|
|
224
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Pick the executable exit which guarantees the holder the most reclaim token.
|
|
234
|
+
*
|
|
235
|
+
* A direct pool sale can only spend claimed ERC-20s. Internal Juicebox credits
|
|
236
|
+
* stay on the terminal route until they are claimed. The direct route must beat
|
|
237
|
+
* the terminal's full expected output even after user slippage; an optimistic
|
|
238
|
+
* pool quote alone is never enough to displace a deterministic cash out.
|
|
239
|
+
*/
|
|
240
|
+
function chooseBestCashOutRoute({ cashOut, directSwapQuote, directSwapPoolKey, directSwapZeroForOne, spendableProjectTokenCount = 0n, cashOutCount, slippageBps = exports.DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
241
|
+
const cashOutCandidate = {
|
|
242
|
+
kind: "cash-out",
|
|
243
|
+
expectedReturn: cashOut.expectedReturn,
|
|
244
|
+
minimumReturn: cashOut.minimumReturn,
|
|
245
|
+
cashOut,
|
|
246
|
+
};
|
|
247
|
+
if (!directSwapQuote ||
|
|
248
|
+
directSwapQuote <= 0n ||
|
|
249
|
+
!directSwapPoolKey ||
|
|
250
|
+
directSwapZeroForOne === undefined ||
|
|
251
|
+
cashOutCount <= 0n ||
|
|
252
|
+
spendableProjectTokenCount < cashOutCount) {
|
|
253
|
+
return cashOutCandidate;
|
|
254
|
+
}
|
|
255
|
+
const minimumReturn = slippageFloor(directSwapQuote, slippageBps);
|
|
256
|
+
if (minimumReturn <= cashOut.expectedReturn)
|
|
257
|
+
return cashOutCandidate;
|
|
258
|
+
return {
|
|
259
|
+
kind: "direct-swap",
|
|
260
|
+
expectedReturn: directSwapQuote,
|
|
261
|
+
minimumReturn,
|
|
262
|
+
cashOut,
|
|
263
|
+
poolKey: directSwapPoolKey,
|
|
264
|
+
zeroForOne: directSwapZeroForOne,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/** Pool fee/impact already reflected by the buyback hook's executable quote. */
|
|
268
|
+
function cashOutPoolBufferBps(route) {
|
|
269
|
+
const buyback = route?.route === "amm" ? route.buyback : null;
|
|
270
|
+
if (!buyback || buyback.rawSwapQuote <= 0n)
|
|
271
|
+
return null;
|
|
272
|
+
const executableQuote = buyback.minimumSwapAmountOut > buyback.rawSwapQuote
|
|
273
|
+
? buyback.rawSwapQuote
|
|
274
|
+
: buyback.minimumSwapAmountOut;
|
|
275
|
+
return (((buyback.rawSwapQuote - executableQuote) * MAX_BPS +
|
|
276
|
+
buyback.rawSwapQuote -
|
|
277
|
+
1n) /
|
|
278
|
+
buyback.rawSwapQuote);
|
|
279
|
+
}
|
|
280
|
+
const CASH_OUT_EXECUTION_ERRORS = [
|
|
281
|
+
{
|
|
282
|
+
code: "BUYBACK_SLIPPAGE_EXCEEDED",
|
|
283
|
+
selector: "0xe2d708a9",
|
|
284
|
+
matchers: ["0xe2d708a9", "jbbuybackhook_specifiedslippageexceeded"],
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
code: "TERMINAL_UNDER_MIN",
|
|
288
|
+
selector: "0x6b2bb382",
|
|
289
|
+
matchers: ["0x6b2bb382", "jbmultiterminal_undermin"],
|
|
290
|
+
},
|
|
291
|
+
];
|
|
292
|
+
function collectCashOutErrorText(value, seen = new Set(), depth = 0) {
|
|
293
|
+
if (depth > 8 || value === null || value === undefined || seen.has(value)) {
|
|
294
|
+
return [];
|
|
295
|
+
}
|
|
296
|
+
if (typeof value === "string")
|
|
297
|
+
return [value];
|
|
298
|
+
if (typeof value !== "object")
|
|
299
|
+
return [];
|
|
300
|
+
seen.add(value);
|
|
301
|
+
const record = value;
|
|
302
|
+
return [
|
|
303
|
+
record.shortMessage,
|
|
304
|
+
record.message,
|
|
305
|
+
record.details,
|
|
306
|
+
record.errorName,
|
|
307
|
+
record.signature,
|
|
308
|
+
record.raw,
|
|
309
|
+
record.data,
|
|
310
|
+
record.cause,
|
|
311
|
+
record.error,
|
|
312
|
+
].flatMap((item) => collectCashOutErrorText(item, seen, depth + 1));
|
|
313
|
+
}
|
|
314
|
+
/** Classify known cash-out errors through viem/wallet nested error shapes. */
|
|
315
|
+
function classifyCashOutExecutionError(error) {
|
|
316
|
+
const text = collectCashOutErrorText(error).join(" | ").toLowerCase();
|
|
317
|
+
if (!text)
|
|
318
|
+
return null;
|
|
319
|
+
const matched = CASH_OUT_EXECUTION_ERRORS.find(({ matchers }) => matchers.some((matcher) => text.includes(matcher)));
|
|
320
|
+
return matched ? { code: matched.code, selector: matched.selector } : null;
|
|
321
|
+
}
|
|
225
322
|
/**
|
|
226
323
|
* Interpret a hook-aware `previewCashOutFrom` result and prepare a
|
|
227
324
|
* slippage-protected route.
|
|
@@ -283,14 +380,20 @@ function resolveCashOutRoute({ reclaimAmount, cashOutTaxRate, hookSpecifications
|
|
|
283
380
|
};
|
|
284
381
|
if (!specification || specification.noop || !buyback)
|
|
285
382
|
return treasuryRoute;
|
|
286
|
-
// The
|
|
287
|
-
//
|
|
288
|
-
//
|
|
383
|
+
// The raw swap quote is an optimistic oracle quote used for display and
|
|
384
|
+
// route comparison. The hook's minimumSwapAmountOut is the executable pool
|
|
385
|
+
// quote after fee, liquidity, and price-impact constraints. User slippage
|
|
386
|
+
// must be applied to that executable value; applying it to rawSwapQuote can
|
|
387
|
+
// create a minimum the pool cannot satisfy.
|
|
289
388
|
const quote = buyback.rawSwapQuote > 0n
|
|
290
389
|
? buyback.rawSwapQuote
|
|
291
390
|
: buyback.minimumSwapAmountOut;
|
|
391
|
+
const executableQuote = buyback.rawSwapQuote > 0n &&
|
|
392
|
+
buyback.minimumSwapAmountOut > buyback.rawSwapQuote
|
|
393
|
+
? buyback.rawSwapQuote
|
|
394
|
+
: buyback.minimumSwapAmountOut;
|
|
292
395
|
const minimumReturn = buyback.rawSwapQuote > 0n && !buyback.hasUserSpecifiedMinimumSwapAmountOut
|
|
293
|
-
? slippageFloor(
|
|
396
|
+
? slippageFloor(executableQuote, slippageBps)
|
|
294
397
|
: buyback.minimumSwapAmountOut;
|
|
295
398
|
// An explicit metadata minimum at or below the direct net routes execution
|
|
296
399
|
// back to the terminal path anyway; take the deterministic treasury route.
|
|
@@ -312,41 +415,22 @@ function resolveCashOutRoute({ reclaimAmount, cashOutTaxRate, hookSpecifications
|
|
|
312
415
|
buyback,
|
|
313
416
|
};
|
|
314
417
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
* @param args.beneficiary The reclaim beneficiary. Defaults to the holder.
|
|
332
|
-
* @param args.terminal The terminal to quote against. Defaults to the chain's
|
|
333
|
-
* canonical `JBMultiTerminal`.
|
|
334
|
-
* @param args.buybackHookAddress The buyback hook whose specification may win
|
|
335
|
-
* the pool route. Defaults to the chain's canonical `JBBuybackHook`; pass it
|
|
336
|
-
* explicitly for a project whose `JBBuybackHookRegistry` entry points at a
|
|
337
|
-
* custom hook. On a chain with no `JBBuybackHook` deployment, specifications
|
|
338
|
-
* are treated as non-buyback and the treasury route is returned.
|
|
339
|
-
* @param args.beneficiaryIsFeeless Whether the beneficiary is feeless.
|
|
340
|
-
* Defaults to false.
|
|
341
|
-
* @param args.slippageBps Tolerance for quote-to-inclusion drift. Defaults to
|
|
342
|
-
* {@link DEFAULT_CASH_OUT_SLIPPAGE_BPS}.
|
|
343
|
-
* @returns The protected route (see {@link CashOutRoute}).
|
|
344
|
-
*/
|
|
345
|
-
async function getHookAwareCashOutQuote(client, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary, terminal, buybackHookAddress, beneficiaryIsFeeless = false, slippageBps = exports.DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
346
|
-
const terminalAddress = terminal ?? (0, types_js_1.v6Address)("JBMultiTerminal", chainId);
|
|
347
|
-
const buybackHook = buybackHookAddress ?? optionalV6Address("JBBuybackHook", chainId);
|
|
348
|
-
const [, reclaimAmount, cashOutTaxRate, hookSpecifications] = await client.readContract({
|
|
349
|
-
address: terminalAddress,
|
|
418
|
+
function rulesetIdOf(ruleset) {
|
|
419
|
+
const id = ruleset && typeof ruleset === "object" && "id" in ruleset
|
|
420
|
+
? ruleset.id
|
|
421
|
+
: Array.isArray(ruleset)
|
|
422
|
+
? ruleset[0]
|
|
423
|
+
: null;
|
|
424
|
+
try {
|
|
425
|
+
return id === null || id === undefined ? null : BigInt(id);
|
|
426
|
+
}
|
|
427
|
+
catch {
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
async function readCashOutPreviewSnapshot(client, { terminal, holder, projectId, cashOutCount, tokenToReclaim, beneficiary, metadata, }) {
|
|
432
|
+
const [ruleset, reclaimAmount, cashOutTaxRate, hookSpecifications] = await client.readContract({
|
|
433
|
+
address: terminal,
|
|
350
434
|
abi: juicebox_js_1.jbMultiTerminalAbi,
|
|
351
435
|
functionName: "previewCashOutFrom",
|
|
352
436
|
args: [
|
|
@@ -354,29 +438,220 @@ async function getHookAwareCashOutQuote(client, { chainId, projectId, holder, ca
|
|
|
354
438
|
projectId,
|
|
355
439
|
cashOutCount,
|
|
356
440
|
tokenToReclaim,
|
|
357
|
-
beneficiary
|
|
358
|
-
|
|
441
|
+
beneficiary,
|
|
442
|
+
metadata,
|
|
359
443
|
],
|
|
360
444
|
});
|
|
361
|
-
|
|
362
|
-
|
|
445
|
+
return {
|
|
446
|
+
rulesetId: rulesetIdOf(ruleset),
|
|
447
|
+
reclaimAmount,
|
|
448
|
+
cashOutTaxRate,
|
|
449
|
+
hookSpecifications,
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
async function resolveCashOutPreviewSnapshot(client, preview, { terminal, projectId, tokenToReclaim, buybackHookAddress, beneficiaryIsFeeless, slippageBps, }) {
|
|
453
|
+
const feeFreeSurplus = preview.cashOutTaxRate === 0n
|
|
363
454
|
? await client.readContract({
|
|
364
|
-
address:
|
|
455
|
+
address: terminal,
|
|
365
456
|
abi: juicebox_js_1.jbMultiTerminalAbi,
|
|
366
457
|
functionName: "feeFreeSurplusOf",
|
|
367
458
|
args: [projectId, tokenToReclaim],
|
|
368
459
|
})
|
|
369
460
|
: 0n;
|
|
370
461
|
return resolveCashOutRoute({
|
|
371
|
-
reclaimAmount,
|
|
372
|
-
cashOutTaxRate,
|
|
373
|
-
hookSpecifications,
|
|
374
|
-
buybackHookAddress
|
|
462
|
+
reclaimAmount: preview.reclaimAmount,
|
|
463
|
+
cashOutTaxRate: preview.cashOutTaxRate,
|
|
464
|
+
hookSpecifications: preview.hookSpecifications,
|
|
465
|
+
buybackHookAddress,
|
|
375
466
|
beneficiaryIsFeeless,
|
|
376
467
|
feeFreeSurplus,
|
|
377
468
|
slippageBps,
|
|
378
469
|
});
|
|
379
470
|
}
|
|
471
|
+
async function getHookAwareCashOutQuote(client, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary = holder, terminal, buybackHookAddress, beneficiaryIsFeeless = false, slippageBps = exports.DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
472
|
+
const terminalAddress = terminal ?? (0, types_js_1.v6Address)("JBMultiTerminal", chainId);
|
|
473
|
+
const buybackHook = buybackHookAddress ?? optionalV6Address("JBBuybackHook", chainId);
|
|
474
|
+
const preview = await readCashOutPreviewSnapshot(client, {
|
|
475
|
+
terminal: terminalAddress,
|
|
476
|
+
holder,
|
|
477
|
+
projectId,
|
|
478
|
+
cashOutCount,
|
|
479
|
+
tokenToReclaim,
|
|
480
|
+
beneficiary,
|
|
481
|
+
metadata: "0x",
|
|
482
|
+
});
|
|
483
|
+
return resolveCashOutPreviewSnapshot(client, preview, {
|
|
484
|
+
terminal: terminalAddress,
|
|
485
|
+
projectId,
|
|
486
|
+
tokenToReclaim,
|
|
487
|
+
buybackHookAddress: buybackHook,
|
|
488
|
+
beneficiaryIsFeeless,
|
|
489
|
+
slippageBps,
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Quote the best user exit across the terminal and a directly spendable pool.
|
|
494
|
+
*
|
|
495
|
+
* `previewCashOutFrom` remains the source of truth for terminal and buyback-hook
|
|
496
|
+
* settlement. When a matching pool and sufficient claimed ERC-20 balance are
|
|
497
|
+
* supplied, the V4 Quoter is read as well and a direct swap wins only when its
|
|
498
|
+
* slippage-protected minimum exceeds the terminal route's full expected output.
|
|
499
|
+
*/
|
|
500
|
+
async function getBestCashOutRoute(client, args) {
|
|
501
|
+
const cashOut = await getHookAwareCashOutQuote(client, args);
|
|
502
|
+
const directSwap = args.directSwap;
|
|
503
|
+
if (!directSwap ||
|
|
504
|
+
directSwap.spendableProjectTokenCount < args.cashOutCount ||
|
|
505
|
+
args.cashOutCount <= 0n) {
|
|
506
|
+
return chooseBestCashOutRoute({
|
|
507
|
+
cashOut,
|
|
508
|
+
cashOutCount: args.cashOutCount,
|
|
509
|
+
slippageBps: args.slippageBps,
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
const zeroForOne = (0, uniswapV4_js_1.uniswapV4SwapDirection)({
|
|
513
|
+
poolKey: directSwap.poolKey,
|
|
514
|
+
tokenIn: directSwap.projectToken,
|
|
515
|
+
tokenOut: args.tokenToReclaim,
|
|
516
|
+
});
|
|
517
|
+
if (zeroForOne === null) {
|
|
518
|
+
return chooseBestCashOutRoute({
|
|
519
|
+
cashOut,
|
|
520
|
+
cashOutCount: args.cashOutCount,
|
|
521
|
+
slippageBps: args.slippageBps,
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
let directSwapQuote;
|
|
525
|
+
try {
|
|
526
|
+
directSwapQuote = await (0, uniswapV4_js_1.quoteUniswapV4ExactInputSingle)(client, {
|
|
527
|
+
chainId: args.chainId,
|
|
528
|
+
poolKey: directSwap.poolKey,
|
|
529
|
+
zeroForOne,
|
|
530
|
+
amountIn: args.cashOutCount,
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
catch {
|
|
534
|
+
// The direct pool is an optional optimization. A missing/reverting quoter
|
|
535
|
+
// must not make an otherwise valid terminal cash out unavailable.
|
|
536
|
+
return chooseBestCashOutRoute({
|
|
537
|
+
cashOut,
|
|
538
|
+
cashOutCount: args.cashOutCount,
|
|
539
|
+
slippageBps: args.slippageBps,
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
return chooseBestCashOutRoute({
|
|
543
|
+
cashOut,
|
|
544
|
+
directSwapQuote,
|
|
545
|
+
directSwapPoolKey: directSwap.poolKey,
|
|
546
|
+
directSwapZeroForOne: zeroForOne,
|
|
547
|
+
spendableProjectTokenCount: directSwap.spendableProjectTokenCount,
|
|
548
|
+
cashOutCount: args.cashOutCount,
|
|
549
|
+
slippageBps: args.slippageBps,
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
class CashOutRouteChangedError extends Error {
|
|
553
|
+
constructor() {
|
|
554
|
+
super("The cash-out route changed while its executable minimum was being locked.");
|
|
555
|
+
this.code = "CASH_OUT_ROUTE_CHANGED";
|
|
556
|
+
this.name = "CashOutRouteChangedError";
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
exports.CashOutRouteChangedError = CashOutRouteChangedError;
|
|
560
|
+
/**
|
|
561
|
+
* Prepare the exact hook-aware cash-out request a wallet should submit.
|
|
562
|
+
*
|
|
563
|
+
* Pool routes are re-previewed with their slippage metadata before the request
|
|
564
|
+
* is returned. This proves the executable minimum still selects the same route
|
|
565
|
+
* and avoids clients independently composing a stale quote and transaction.
|
|
566
|
+
*/
|
|
567
|
+
async function prepareHookAwareCashOut(client, { chainId, projectId, holder, cashOutCount, tokenToReclaim, beneficiary = holder, terminal, buybackHookAddress, beneficiaryIsFeeless = false, slippageBps = exports.DEFAULT_CASH_OUT_SLIPPAGE_BPS, }) {
|
|
568
|
+
const terminalAddress = terminal ?? (0, types_js_1.v6Address)("JBMultiTerminal", chainId);
|
|
569
|
+
const buybackHook = buybackHookAddress ?? optionalV6Address("JBBuybackHook", chainId);
|
|
570
|
+
const resolvePreview = (preview) => resolveCashOutPreviewSnapshot(client, preview, {
|
|
571
|
+
terminal: terminalAddress,
|
|
572
|
+
projectId,
|
|
573
|
+
tokenToReclaim,
|
|
574
|
+
buybackHookAddress: buybackHook,
|
|
575
|
+
beneficiaryIsFeeless,
|
|
576
|
+
slippageBps,
|
|
577
|
+
});
|
|
578
|
+
const preview = await readCashOutPreviewSnapshot(client, {
|
|
579
|
+
terminal: terminalAddress,
|
|
580
|
+
holder,
|
|
581
|
+
projectId,
|
|
582
|
+
cashOutCount,
|
|
583
|
+
tokenToReclaim,
|
|
584
|
+
beneficiary,
|
|
585
|
+
metadata: "0x",
|
|
586
|
+
});
|
|
587
|
+
const route = await resolvePreview(preview);
|
|
588
|
+
let lockedPreview = null;
|
|
589
|
+
if (route.route === "amm") {
|
|
590
|
+
lockedPreview = await readCashOutPreviewSnapshot(client, {
|
|
591
|
+
terminal: terminalAddress,
|
|
592
|
+
holder,
|
|
593
|
+
projectId,
|
|
594
|
+
cashOutCount,
|
|
595
|
+
tokenToReclaim,
|
|
596
|
+
beneficiary,
|
|
597
|
+
metadata: route.metadata,
|
|
598
|
+
});
|
|
599
|
+
const lockedRoute = await resolvePreview(lockedPreview);
|
|
600
|
+
if ((preview.rulesetId !== null &&
|
|
601
|
+
lockedPreview.rulesetId !== null &&
|
|
602
|
+
lockedPreview.rulesetId !== preview.rulesetId) ||
|
|
603
|
+
lockedRoute.route !== "amm" ||
|
|
604
|
+
lockedRoute.minimumReturn !== route.minimumReturn ||
|
|
605
|
+
lockedRoute.metadata.toLowerCase() !== route.metadata.toLowerCase()) {
|
|
606
|
+
throw new CashOutRouteChangedError();
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
return {
|
|
610
|
+
route,
|
|
611
|
+
transaction: buildCashOutTx({
|
|
612
|
+
chainId,
|
|
613
|
+
terminal: terminalAddress,
|
|
614
|
+
holder,
|
|
615
|
+
projectId,
|
|
616
|
+
cashOutCount,
|
|
617
|
+
tokenToReclaim,
|
|
618
|
+
minTokensReclaimed: route.terminalMinimum,
|
|
619
|
+
beneficiary,
|
|
620
|
+
metadata: route.metadata,
|
|
621
|
+
}),
|
|
622
|
+
preview,
|
|
623
|
+
lockedPreview,
|
|
624
|
+
};
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Freshly prepare the best executable cash-out or direct-swap transaction.
|
|
628
|
+
*
|
|
629
|
+
* A direct swap is freshly quoted and slippage-floored in the same operation
|
|
630
|
+
* which builds its Universal Router request. If it cannot safely beat the
|
|
631
|
+
* terminal, the terminal path is re-previewed and locked instead.
|
|
632
|
+
*/
|
|
633
|
+
async function prepareBestCashOut(client, args) {
|
|
634
|
+
const best = await getBestCashOutRoute(client, args);
|
|
635
|
+
if (best.kind === "direct-swap") {
|
|
636
|
+
return {
|
|
637
|
+
kind: "direct-swap",
|
|
638
|
+
route: best,
|
|
639
|
+
transaction: (0, uniswapV4_js_1.buildUniswapV4ExactInputSwapTx)({
|
|
640
|
+
chainId: args.chainId,
|
|
641
|
+
poolKey: best.poolKey,
|
|
642
|
+
zeroForOne: best.zeroForOne,
|
|
643
|
+
amountIn: args.cashOutCount,
|
|
644
|
+
minimumAmountOut: best.minimumReturn,
|
|
645
|
+
recipient: args.beneficiary ?? args.holder,
|
|
646
|
+
deadline: args.directSwapDeadline,
|
|
647
|
+
}),
|
|
648
|
+
};
|
|
649
|
+
}
|
|
650
|
+
return {
|
|
651
|
+
kind: "cash-out",
|
|
652
|
+
...(await prepareHookAwareCashOut(client, args)),
|
|
653
|
+
};
|
|
654
|
+
}
|
|
380
655
|
/**
|
|
381
656
|
* `v6Address`, but returning undefined instead of throwing on a chain the
|
|
382
657
|
* 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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"}
|