@bananapus/nana-sdk-core 2.41.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/cjs/generated/juicebox.d.ts +122 -43
  2. package/dist/cjs/generated/juicebox.d.ts.map +1 -1
  3. package/dist/cjs/generated/juicebox.js +104 -43
  4. package/dist/cjs/generated/juicebox.js.map +1 -1
  5. package/dist/cjs/generated/stickySourceCollectors.d.ts +354 -0
  6. package/dist/cjs/generated/stickySourceCollectors.d.ts.map +1 -0
  7. package/dist/cjs/generated/stickySourceCollectors.js +391 -0
  8. package/dist/cjs/generated/stickySourceCollectors.js.map +1 -0
  9. package/dist/cjs/review/decode.js +1 -1
  10. package/dist/cjs/review/decode.js.map +1 -1
  11. package/dist/cjs/v6/index.d.ts +0 -1
  12. package/dist/cjs/v6/index.d.ts.map +1 -1
  13. package/dist/cjs/v6/index.js +0 -1
  14. package/dist/cjs/v6/index.js.map +1 -1
  15. package/dist/cjs/v6/pay.d.ts +89 -35
  16. package/dist/cjs/v6/pay.d.ts.map +1 -1
  17. package/dist/cjs/v6/pay.js +285 -41
  18. package/dist/cjs/v6/pay.js.map +1 -1
  19. package/dist/cjs/v6/sticky.d.ts +2 -2
  20. package/dist/cjs/v6/sticky.d.ts.map +1 -1
  21. package/dist/cjs/v6/sticky.js +5 -4
  22. package/dist/cjs/v6/sticky.js.map +1 -1
  23. package/dist/esm/generated/juicebox.d.ts +122 -43
  24. package/dist/esm/generated/juicebox.d.ts.map +1 -1
  25. package/dist/esm/generated/juicebox.js +104 -43
  26. package/dist/esm/generated/juicebox.js.map +1 -1
  27. package/dist/esm/generated/stickySourceCollectors.d.ts +354 -0
  28. package/dist/esm/generated/stickySourceCollectors.d.ts.map +1 -0
  29. package/dist/esm/generated/stickySourceCollectors.js +388 -0
  30. package/dist/esm/generated/stickySourceCollectors.js.map +1 -0
  31. package/dist/esm/review/decode.js +1 -1
  32. package/dist/esm/review/decode.js.map +1 -1
  33. package/dist/esm/v6/index.d.ts +0 -1
  34. package/dist/esm/v6/index.d.ts.map +1 -1
  35. package/dist/esm/v6/index.js +0 -1
  36. package/dist/esm/v6/index.js.map +1 -1
  37. package/dist/esm/v6/pay.d.ts +89 -35
  38. package/dist/esm/v6/pay.d.ts.map +1 -1
  39. package/dist/esm/v6/pay.js +285 -43
  40. package/dist/esm/v6/pay.js.map +1 -1
  41. package/dist/esm/v6/sticky.d.ts +2 -2
  42. package/dist/esm/v6/sticky.d.ts.map +1 -1
  43. package/dist/esm/v6/sticky.js +5 -4
  44. package/dist/esm/v6/sticky.js.map +1 -1
  45. package/package.json +1 -6
  46. package/dist/cjs/v6/directPay.d.ts +0 -69
  47. package/dist/cjs/v6/directPay.d.ts.map +0 -1
  48. package/dist/cjs/v6/directPay.js +0 -391
  49. package/dist/cjs/v6/directPay.js.map +0 -1
  50. package/dist/esm/v6/directPay.d.ts +0 -69
  51. package/dist/esm/v6/directPay.d.ts.map +0 -1
  52. package/dist/esm/v6/directPay.js +0 -385
  53. package/dist/esm/v6/directPay.js.map +0 -1
@@ -59,39 +59,16 @@ export interface PayPreview {
59
59
  */
60
60
  reservedTokenCount: bigint;
61
61
  }
62
- export type PaySettlement = "issuance" | "swap";
63
- export interface PayRouteCandidate extends PayPreview {
64
- kind: "pay";
65
- settlement: PaySettlement;
66
- }
67
- export interface DirectSwapRouteCandidate extends PayPreview {
68
- kind: "direct-swap";
69
- settlement: "swap";
70
- quotedTokenCount: bigint;
71
- }
72
- export type BestPayRoute = PayRouteCandidate | DirectSwapRouteCandidate;
73
- /**
74
- * Pick the executable route which guarantees the beneficiary the most tokens.
75
- *
76
- * A direct pool swap bypasses the terminal, so its reserved token count is always
77
- * zero. Its quote is reduced by `slippageBps` before comparison: a route is only
78
- * selected when its on-chain minimum beats the terminal preview, not merely when
79
- * its optimistic quote does.
80
- */
81
- export declare function chooseBestPayRoute({ pay, paySettlement, directSwapQuote, slippageBps, }: {
82
- pay: PayPreview;
83
- paySettlement: PaySettlement;
84
- directSwapQuote?: bigint | null;
85
- slippageBps?: bigint;
86
- }): BestPayRoute;
87
62
  /**
88
- * Preview the project tokens minted by a payment, via the terminal's
89
- * `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
63
+ * Preview the project tokens a payment puts in the beneficiary's hands, via the
64
+ * terminal's `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
90
65
  *
91
- * The terminal's `previewPayFor` is used (rather than
92
- * `JBTerminalStore.previewPayFrom`) because it takes exactly the data a `pay` caller
93
- * already has — the store variant additionally requires a full `JBTokenAmount` tuple
94
- * (token, decimals, currency, value), forcing an extra accounting-context lookup.
66
+ * When the buyback hook wins the route, the terminal mints nothing itself and
67
+ * reports zero; the hook's pay specification carries the swap quote. This folds
68
+ * it in with the router terminal's scoring rule (see
69
+ * {@link effectivePayPreview}), for the hook the buyback registry resolves for
70
+ * the project, 1.4 or 1.1.1. The swap figure ignores pool fees and price
71
+ * impact, so use {@link prepareUserPay} for a payment's minimum.
95
72
  *
96
73
  * @param client A viem public client on the given chain.
97
74
  * @param args.chainId The chain to preview on.
@@ -100,19 +77,71 @@ export declare function chooseBestPayRoute({ pay, paySettlement, directSwapQuote
100
77
  * @param args.token The token being paid.
101
78
  * @param args.amount The amount being paid, as a fixed point number with the token's
102
79
  * decimals.
103
- * @param args.beneficiary The address that would receive the minted project tokens.
80
+ * @param args.beneficiary The address that would receive the project tokens.
104
81
  * @param args.metadata Hook metadata. Defaults to "0x".
105
82
  * @returns The previewed token counts.
106
83
  */
107
- export declare function previewPay(client: PublicClient, { terminal, projectId, token, amount, beneficiary, metadata, }: {
84
+ export declare function previewPay(client: PublicClient, args: PayArgs & {
85
+ metadata?: Hex;
86
+ }): Promise<PayPreview>;
87
+ interface PayArgs {
108
88
  chainId: JBChainId;
109
89
  terminal: Address;
110
90
  projectId: bigint;
111
91
  token: Address;
112
92
  amount: bigint;
113
93
  beneficiary: Address;
114
- metadata?: Hex;
115
- }): Promise<PayPreview>;
94
+ }
95
+ type PayHookSpecification = {
96
+ hook: Address;
97
+ noop: boolean;
98
+ metadata: Hex;
99
+ };
100
+ /**
101
+ * Fold the buyback hook's pay specification into a terminal preview, with the
102
+ * rule `JBPayRouteResolver._effectivePreviewPayTokenCounts` scores routes by.
103
+ * The swap leg uses the hook's raw quote: the TWAP price times the amount, with
104
+ * no pool fee or price impact. It is a ranking figure, not a minimum.
105
+ */
106
+ export declare function effectivePayPreview({ buybackHook, beneficiaryTokenCount, reservedTokenCount, weight, reservedPercent, hookSpecifications, }: {
107
+ buybackHook: Address | null;
108
+ beneficiaryTokenCount: bigint;
109
+ reservedTokenCount: bigint;
110
+ weight: bigint;
111
+ /** The ruleset's reserved percent, for 1.1.1 specs. */
112
+ reservedPercent?: bigint;
113
+ hookSpecifications: readonly PayHookSpecification[];
114
+ }): PayPreview;
115
+ /** A pay card's whole payment: what to send, what to show, what to require. */
116
+ export interface PreparedUserPay {
117
+ metadata: Hex;
118
+ preview: PayPreview;
119
+ minReturnedTokens: bigint;
120
+ }
121
+ /**
122
+ * Prepare a person's payment with {@link buildUserPayMetadata}: preview it,
123
+ * and set the minimum the terminal enforces on the beneficiary's balance.
124
+ *
125
+ * When the project's buyback hook honors `skipSplits` and its pool is in the
126
+ * paid token, this quotes that pool (fee and price impact included) and sends
127
+ * the slippage-floored quote as an explicit minimum. The hook then swaps
128
+ * whenever the pool beats the payer's share of a mint, and reverts below the
129
+ * floor. Without it the hook routes by its TWAP floor, which reaches zero on
130
+ * large buys against a thin pool and sends them to minting even when the pool
131
+ * pays far more.
132
+ *
133
+ * Otherwise (no pool, hook 1.1.1, a router converting the token first, or a
134
+ * failed quote) the hook routes by TWAP. The minimum is then the payer's mint
135
+ * entitlement when the hook would swap, since the hook never settles below it,
136
+ * and the terminal's own issuance when it would not.
137
+ *
138
+ * @param args.slippageBps Tolerance on the pool quote and on the fallback
139
+ * minimum. Defaults to 100 (1%).
140
+ */
141
+ export declare function prepareUserPay(client: PublicClient, { tiers, slippageBps, ...args }: PayArgs & {
142
+ tiers?: UserPayTiers;
143
+ slippageBps?: bigint;
144
+ }): Promise<PreparedUserPay>;
116
145
  /**
117
146
  * Build pay metadata instructing a project's JB721 tiers hook to mint specific tiers.
118
147
  *
@@ -152,4 +181,29 @@ export declare function buildBuybackPayMetadata({ hook, amountToSwapWith, minimu
152
181
  minimumSwapAmountOut: bigint;
153
182
  skipSplits?: boolean;
154
183
  }): Hex;
184
+ /** The 721 tiers a payment buys. */
185
+ export interface UserPayTiers {
186
+ metadataIdTarget: Address;
187
+ tierIdsToMint: bigint[];
188
+ allowOverspending?: boolean;
189
+ }
190
+ /**
191
+ * The pay metadata a person's pay card sends: the buyback registry's quote
192
+ * `(0, minimumSwapAmountOut, skipSplits=true)`, plus the 721 tiers when the
193
+ * payment buys NFTs. Prefer {@link prepareUserPay}, which picks the minimum.
194
+ *
195
+ * The registry rekeys its quote to the project's resolved hook. On buyback 1.4
196
+ * the hook buys from the pool only when that gives the payer more than their
197
+ * share of a mint, and hands the swapped tokens over without the reserved
198
+ * split. Minting still goes through the split. A zero swap amount swaps the
199
+ * whole payment. A zero minimum routes by the hook's TWAP floor; a nonzero one
200
+ * replaces it and reverts below it. The terminal's `minReturnedTokens` checks
201
+ * the beneficiary's balance change, which counts the swapped tokens.
202
+ */
203
+ export declare function buildUserPayMetadata({ chainId, tiers, minimumSwapAmountOut, }: {
204
+ chainId: JBChainId;
205
+ tiers?: UserPayTiers;
206
+ minimumSwapAmountOut?: bigint;
207
+ }): Hex;
208
+ export {};
155
209
  //# sourceMappingURL=pay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,GAAG,EACH,YAAY,EAGb,MAAM,MAAM,CAAC;AAMd,OAAO,EAEL,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AASxC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,kBAAkB,CAAC;IAC/B,YAAY,EAAE,KAAK,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACvE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,iBAAsB,EACtB,IAAS,EACT,QAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG,cAAc,CAmBjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GACjC,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,UAAU,OAAO;IACf,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAmBD,KAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAkDF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,MAAM,EACN,eAAoB,EACpB,kBAAkB,GACnB,EAAE;IACD,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACrD,GAAG,UAAU,CAuCb;AAsGD,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA2BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,EACE,KAAK,EACL,WAAkB,EAClB,GAAG,IAAI,EACR,EAAE,OAAO,GAAG;IAAE,KAAK,CAAC,EAAE,YAAY,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D,OAAO,CAAC,eAAe,CAAC,CAkE1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAA8C,GAC/C,EAAE;IACD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,GAAG,CAeN;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,gBAAgB,EAChB,oBAAoB,EACpB,UAAkB,GACnB,EAAE;IACD,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,GAAG,CAUN;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,oBAAyB,GAC1B,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,GAAG,CA0BN"}
@@ -1,14 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildPayTx = buildPayTx;
4
- exports.chooseBestPayRoute = chooseBestPayRoute;
5
4
  exports.previewPay = previewPay;
5
+ exports.effectivePayPreview = effectivePayPreview;
6
+ exports.prepareUserPay = prepareUserPay;
6
7
  exports.build721PayMetadata = build721PayMetadata;
7
8
  exports.buildBuybackPayMetadata = buildBuybackPayMetadata;
9
+ exports.buildUserPayMetadata = buildUserPayMetadata;
8
10
  const viem_1 = require("viem");
9
11
  const constants_js_1 = require("../constants.js");
10
12
  const juicebox_js_1 = require("../generated/juicebox.js");
13
+ const contracts_js_1 = require("../utils/contracts.js");
11
14
  const hook_js_1 = require("../utils/hook.js");
15
+ const cashOut_js_1 = require("./cashOut.js");
16
+ const uniswapV4_js_1 = require("./uniswapV4.js");
12
17
  /**
13
18
  * Build a `pay(projectId, token, amount, beneficiary, minReturnedTokens, memo,
14
19
  * metadata)` transaction request for a v6 terminal.
@@ -51,43 +56,15 @@ function buildPayTx({ chainId, terminal, projectId, token, amount, beneficiary,
51
56
  };
52
57
  }
53
58
  /**
54
- * Pick the executable route which guarantees the beneficiary the most tokens.
59
+ * Preview the project tokens a payment puts in the beneficiary's hands, via the
60
+ * terminal's `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
55
61
  *
56
- * A direct pool swap bypasses the terminal, so its reserved token count is always
57
- * zero. Its quote is reduced by `slippageBps` before comparison: a route is only
58
- * selected when its on-chain minimum beats the terminal preview, not merely when
59
- * its optimistic quote does.
60
- */
61
- function chooseBestPayRoute({ pay, paySettlement, directSwapQuote, slippageBps = 100n, }) {
62
- if (slippageBps < 0n || slippageBps >= 10000n) {
63
- throw new Error("slippageBps must be between 0 and 9,999.");
64
- }
65
- const payRoute = {
66
- kind: "pay",
67
- settlement: paySettlement,
68
- ...pay,
69
- };
70
- if (!directSwapQuote || directSwapQuote <= 0n)
71
- return payRoute;
72
- const minimum = (directSwapQuote * (10000n - slippageBps)) / 10000n;
73
- if (minimum <= pay.beneficiaryTokenCount)
74
- return payRoute;
75
- return {
76
- kind: "direct-swap",
77
- settlement: "swap",
78
- quotedTokenCount: directSwapQuote,
79
- beneficiaryTokenCount: minimum,
80
- reservedTokenCount: 0n,
81
- };
82
- }
83
- /**
84
- * Preview the project tokens minted by a payment, via the terminal's
85
- * `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
86
- *
87
- * The terminal's `previewPayFor` is used (rather than
88
- * `JBTerminalStore.previewPayFrom`) because it takes exactly the data a `pay` caller
89
- * already has — the store variant additionally requires a full `JBTokenAmount` tuple
90
- * (token, decimals, currency, value), forcing an extra accounting-context lookup.
62
+ * When the buyback hook wins the route, the terminal mints nothing itself and
63
+ * reports zero; the hook's pay specification carries the swap quote. This folds
64
+ * it in with the router terminal's scoring rule (see
65
+ * {@link effectivePayPreview}), for the hook the buyback registry resolves for
66
+ * the project, 1.4 or 1.1.1. The swap figure ignores pool fees and price
67
+ * impact, so use {@link prepareUserPay} for a payment's minimum.
91
68
  *
92
69
  * @param client A viem public client on the given chain.
93
70
  * @param args.chainId The chain to preview on.
@@ -96,18 +73,256 @@ function chooseBestPayRoute({ pay, paySettlement, directSwapQuote, slippageBps =
96
73
  * @param args.token The token being paid.
97
74
  * @param args.amount The amount being paid, as a fixed point number with the token's
98
75
  * decimals.
99
- * @param args.beneficiary The address that would receive the minted project tokens.
76
+ * @param args.beneficiary The address that would receive the project tokens.
100
77
  * @param args.metadata Hook metadata. Defaults to "0x".
101
78
  * @returns The previewed token counts.
102
79
  */
103
- async function previewPay(client, { terminal, projectId, token, amount, beneficiary, metadata = "0x", }) {
104
- const [, beneficiaryTokenCount, reservedTokenCount] = await client.readContract({
80
+ async function previewPay(client, args) {
81
+ return (await readPay(client, args)).preview;
82
+ }
83
+ /**
84
+ * Decode a buyback pay specification: 17 words on 1.4, 15 on 1.1.1, which
85
+ * share the first 15. 1.1.1 has no `skipSplits` and reports no reserved
86
+ * percent, so the ruleset's is used.
87
+ */
88
+ function decodeBuybackPaySpec(spec, rulesetReservedPercent) {
89
+ const words = (spec.metadata.length - 2) / 64;
90
+ if (words !== 15 && words < 17)
91
+ return null;
92
+ const word = (i) => `0x${spec.metadata.slice(2 + i * 64, 2 + (i + 1) * 64)}`;
93
+ const uint = (i) => BigInt(word(i));
94
+ return {
95
+ hook: spec.hook,
96
+ noop: spec.noop,
97
+ projectTokenIs0: uint(0) !== 0n,
98
+ amountToMintWith: uint(1),
99
+ minimumSwapAmountOut: uint(2),
100
+ tokenCountWithoutHook: uint(5),
101
+ weightRatio: uint(6),
102
+ amountToSwapWith: uint(7),
103
+ poolId: word(10),
104
+ rawSwapQuote: uint(13),
105
+ oracleUnseeded: uint(14) !== 0n,
106
+ skipSplits: words >= 17 && uint(15) !== 0n,
107
+ reservedPercent: words >= 17 ? uint(16) : rulesetReservedPercent,
108
+ };
109
+ }
110
+ /** The controller's beneficiary share of a split mint, rounded the same way. */
111
+ function splitOf(tokenCount, reservedPercent) {
112
+ const max = BigInt(constants_js_1.MAX_RESERVED_PERCENT);
113
+ const beneficiaryTokenCount = (tokenCount * (max - reservedPercent)) / max;
114
+ return {
115
+ beneficiaryTokenCount,
116
+ reservedTokenCount: tokenCount - beneficiaryTokenCount,
117
+ };
118
+ }
119
+ /** Tokens the hook's direct-mint leg issues, as the hook computes them. */
120
+ function directMintOf(spec, weight) {
121
+ return spec.amountToMintWith !== 0n && spec.weightRatio !== 0n
122
+ ? (spec.amountToMintWith * weight) / spec.weightRatio
123
+ : 0n;
124
+ }
125
+ /**
126
+ * Fold the buyback hook's pay specification into a terminal preview, with the
127
+ * rule `JBPayRouteResolver._effectivePreviewPayTokenCounts` scores routes by.
128
+ * The swap leg uses the hook's raw quote: the TWAP price times the amount, with
129
+ * no pool fee or price impact. It is a ranking figure, not a minimum.
130
+ */
131
+ function effectivePayPreview({ buybackHook, beneficiaryTokenCount, reservedTokenCount, weight, reservedPercent = 0n, hookSpecifications, }) {
132
+ let best = { beneficiaryTokenCount, reservedTokenCount };
133
+ if (!buybackHook ||
134
+ beneficiaryTokenCount !== 0n ||
135
+ reservedTokenCount !== 0n) {
136
+ return best;
137
+ }
138
+ for (const spec of hookSpecifications) {
139
+ if (spec.noop || spec.hook.toLowerCase() !== buybackHook.toLowerCase()) {
140
+ continue;
141
+ }
142
+ const decoded = decodeBuybackPaySpec(spec, reservedPercent);
143
+ if (!decoded)
144
+ continue;
145
+ const directMintTokenCount = directMintOf(decoded, weight);
146
+ const swapTokenCount = !decoded.oracleUnseeded &&
147
+ decoded.rawSwapQuote > decoded.minimumSwapAmountOut
148
+ ? decoded.rawSwapQuote
149
+ : decoded.minimumSwapAmountOut;
150
+ const candidate = splitOf(decoded.skipSplits
151
+ ? directMintTokenCount
152
+ : swapTokenCount + directMintTokenCount, decoded.reservedPercent);
153
+ if (decoded.skipSplits)
154
+ candidate.beneficiaryTokenCount += swapTokenCount;
155
+ if (candidate.beneficiaryTokenCount > best.beneficiaryTokenCount ||
156
+ (candidate.beneficiaryTokenCount === best.beneficiaryTokenCount &&
157
+ candidate.reservedTokenCount > best.reservedTokenCount)) {
158
+ best = candidate;
159
+ }
160
+ }
161
+ return best;
162
+ }
163
+ /**
164
+ * What the payer receives if the hook mints instead of swapping. The hook
165
+ * swaps only while the pool beats this rate, and unwinds to it when a swap
166
+ * underfills, so every honest settlement clears it.
167
+ */
168
+ function mintEntitlementOf(spec, weight) {
169
+ const swapLeg = spec.skipSplits
170
+ ? spec.tokenCountWithoutHook
171
+ : splitOf(spec.tokenCountWithoutHook, spec.reservedPercent)
172
+ .beneficiaryTokenCount;
173
+ return (swapLeg +
174
+ splitOf(directMintOf(spec, weight), spec.reservedPercent)
175
+ .beneficiaryTokenCount);
176
+ }
177
+ /** One terminal preview, with the project's buyback spec decoded. */
178
+ async function readPay(client, { chainId, terminal, projectId, token, amount, beneficiary, metadata = "0x", }) {
179
+ const [ruleset, beneficiaryTokenCount, reservedTokenCount, hookSpecifications,] = await client.readContract({
105
180
  address: terminal,
106
181
  abi: juicebox_js_1.jbMultiTerminalAbi,
107
182
  functionName: "previewPayFor",
108
183
  args: [projectId, token, amount, beneficiary, metadata],
109
184
  });
110
- return { beneficiaryTokenCount, reservedTokenCount };
185
+ // Only a payment with hook specs needs to know which one is the buyback hook.
186
+ const buybackHook = hookSpecifications.length > 0
187
+ ? await resolvedBuybackHookOf(client, chainId, projectId)
188
+ : null;
189
+ const reservedPercent = (ruleset.metadata >> 4n) & 0xffffn;
190
+ const spec = buybackHook
191
+ ? hookSpecifications.find((s) => s.hook.toLowerCase() === buybackHook.toLowerCase())
192
+ : undefined;
193
+ return {
194
+ preview: effectivePayPreview({
195
+ buybackHook,
196
+ beneficiaryTokenCount,
197
+ reservedTokenCount,
198
+ weight: ruleset.weight,
199
+ reservedPercent,
200
+ hookSpecifications,
201
+ }),
202
+ terminalBeneficiaryTokenCount: beneficiaryTokenCount,
203
+ weight: ruleset.weight,
204
+ buyback: spec ? decodeBuybackPaySpec(spec, reservedPercent) : null,
205
+ unreadableSwap: !!spec && !spec.noop && !decodeBuybackPaySpec(spec, reservedPercent),
206
+ };
207
+ }
208
+ /** The buyback hook the registry resolves for a project, or null. */
209
+ async function resolvedBuybackHookOf(client, chainId, projectId) {
210
+ let registry;
211
+ try {
212
+ registry = (0, contracts_js_1.getJBContractAddress)("JBBuybackHookRegistry", 6, chainId);
213
+ }
214
+ catch {
215
+ return null;
216
+ }
217
+ // A failed read throws: guessing "no hook" would drop the payment's minimum.
218
+ const hook = await client.readContract({
219
+ address: registry,
220
+ abi: juicebox_js_1.jbBuybackHookRegistryAbi,
221
+ functionName: "hookOf",
222
+ args: [projectId],
223
+ });
224
+ return hook === viem_1.zeroAddress ? null : hook;
225
+ }
226
+ const maxBigInt = (a, b) => (a > b ? a : b);
227
+ const poolKeyOfAbi = [
228
+ {
229
+ type: "function",
230
+ name: "poolKeyOf",
231
+ stateMutability: "view",
232
+ inputs: [
233
+ { name: "projectId", type: "uint256" },
234
+ { name: "terminalToken", type: "address" },
235
+ ],
236
+ outputs: [
237
+ {
238
+ name: "key",
239
+ type: "tuple",
240
+ components: [
241
+ { name: "currency0", type: "address" },
242
+ { name: "currency1", type: "address" },
243
+ { name: "fee", type: "uint24" },
244
+ { name: "tickSpacing", type: "int24" },
245
+ { name: "hooks", type: "address" },
246
+ ],
247
+ },
248
+ ],
249
+ },
250
+ ];
251
+ /**
252
+ * Prepare a person's payment with {@link buildUserPayMetadata}: preview it,
253
+ * and set the minimum the terminal enforces on the beneficiary's balance.
254
+ *
255
+ * When the project's buyback hook honors `skipSplits` and its pool is in the
256
+ * paid token, this quotes that pool (fee and price impact included) and sends
257
+ * the slippage-floored quote as an explicit minimum. The hook then swaps
258
+ * whenever the pool beats the payer's share of a mint, and reverts below the
259
+ * floor. Without it the hook routes by its TWAP floor, which reaches zero on
260
+ * large buys against a thin pool and sends them to minting even when the pool
261
+ * pays far more.
262
+ *
263
+ * Otherwise (no pool, hook 1.1.1, a router converting the token first, or a
264
+ * failed quote) the hook routes by TWAP. The minimum is then the payer's mint
265
+ * entitlement when the hook would swap, since the hook never settles below it,
266
+ * and the terminal's own issuance when it would not.
267
+ *
268
+ * @param args.slippageBps Tolerance on the pool quote and on the fallback
269
+ * minimum. Defaults to 100 (1%).
270
+ */
271
+ async function prepareUserPay(client, { tiers, slippageBps = 100n, ...args }) {
272
+ const { chainId, projectId, token } = args;
273
+ const metadata = buildUserPayMetadata({ chainId, tiers });
274
+ const { preview, terminalBeneficiaryTokenCount, weight, buyback, unreadableSwap, } = await readPay(client, { ...args, metadata });
275
+ if (unreadableSwap) {
276
+ throw new Error("The project's buyback hook swaps with an unknown specification, so no safe minimum can be set.");
277
+ }
278
+ const fallback = {
279
+ metadata,
280
+ preview,
281
+ minReturnedTokens: (0, cashOut_js_1.slippageFloor)(buyback && !buyback.noop
282
+ ? // The swap and the leftover mint each round down once.
283
+ maxBigInt(mintEntitlementOf(buyback, weight) - 2n, 0n)
284
+ : terminalBeneficiaryTokenCount, slippageBps),
285
+ };
286
+ if (!buyback?.skipSplits || buyback.amountToSwapWith === 0n)
287
+ return fallback;
288
+ try {
289
+ const poolKey = await client.readContract({
290
+ address: buyback.hook,
291
+ abi: poolKeyOfAbi,
292
+ functionName: "poolKeyOf",
293
+ args: [
294
+ projectId,
295
+ token.toLowerCase() === constants_js_1.NATIVE_TOKEN.toLowerCase()
296
+ ? viem_1.zeroAddress
297
+ : token,
298
+ ],
299
+ });
300
+ // A router converts the paid token first, so its pool is a different one.
301
+ if ((0, uniswapV4_js_1.uniswapV4PoolId)(poolKey) !== buyback.poolId)
302
+ return fallback;
303
+ const quote = await (0, uniswapV4_js_1.quoteUniswapV4ExactInputSingle)(client, {
304
+ chainId,
305
+ poolKey,
306
+ zeroForOne: !buyback.projectTokenIs0,
307
+ amountIn: buyback.amountToSwapWith,
308
+ });
309
+ const minimumSwapAmountOut = (0, cashOut_js_1.slippageFloor)(quote, slippageBps);
310
+ // The pool loses to minting: leave the payment on the mint path.
311
+ if (minimumSwapAmountOut <= buyback.tokenCountWithoutHook)
312
+ return fallback;
313
+ const directMint = splitOf(directMintOf(buyback, weight), buyback.reservedPercent);
314
+ return {
315
+ metadata: buildUserPayMetadata({ chainId, tiers, minimumSwapAmountOut }),
316
+ preview: {
317
+ beneficiaryTokenCount: quote + directMint.beneficiaryTokenCount,
318
+ reservedTokenCount: directMint.reservedTokenCount,
319
+ },
320
+ minReturnedTokens: minimumSwapAmountOut,
321
+ };
322
+ }
323
+ catch {
324
+ return fallback;
325
+ }
111
326
  }
112
327
  /**
113
328
  * Build pay metadata instructing a project's JB721 tiers hook to mint specific tiers.
@@ -148,4 +363,33 @@ function buildBuybackPayMetadata({ hook, amountToSwapWith, minimumSwapAmountOut,
148
363
  (0, viem_1.encodeAbiParameters)([{ type: "uint256" }, { type: "uint256" }, { type: "bool" }], [amountToSwapWith, minimumSwapAmountOut, skipSplits]),
149
364
  ]);
150
365
  }
366
+ /**
367
+ * The pay metadata a person's pay card sends: the buyback registry's quote
368
+ * `(0, minimumSwapAmountOut, skipSplits=true)`, plus the 721 tiers when the
369
+ * payment buys NFTs. Prefer {@link prepareUserPay}, which picks the minimum.
370
+ *
371
+ * The registry rekeys its quote to the project's resolved hook. On buyback 1.4
372
+ * the hook buys from the pool only when that gives the payer more than their
373
+ * share of a mint, and hands the swapped tokens over without the reserved
374
+ * split. Minting still goes through the split. A zero swap amount swaps the
375
+ * whole payment. A zero minimum routes by the hook's TWAP floor; a nonzero one
376
+ * replaces it and reverts below it. The terminal's `minReturnedTokens` checks
377
+ * the beneficiary's balance change, which counts the swapped tokens.
378
+ */
379
+ function buildUserPayMetadata({ chainId, tiers, minimumSwapAmountOut = 0n, }) {
380
+ const ids = [
381
+ (0, hook_js_1.hookMetadataId)((0, contracts_js_1.getJBContractAddress)("JBBuybackHookRegistry", 6, chainId), "pay"),
382
+ ];
383
+ const data = [
384
+ (0, viem_1.encodeAbiParameters)([{ type: "uint256" }, { type: "uint256" }, { type: "bool" }], [0n, minimumSwapAmountOut, true]),
385
+ ];
386
+ if (tiers && tiers.tierIdsToMint.length > 0) {
387
+ ids.push((0, hook_js_1.hookMetadataId)(tiers.metadataIdTarget, "pay"));
388
+ data.push((0, viem_1.encodeAbiParameters)([{ type: "bool" }, { type: "uint16[]" }], [
389
+ tiers.allowOverspending ?? constants_js_1.DEFAULT_ALLOW_OVERSPENDING,
390
+ tiers.tierIdsToMint.map(Number),
391
+ ]));
392
+ }
393
+ return (0, hook_js_1.createHookMetadata)(ids, data);
394
+ }
151
395
  //# sourceMappingURL=pay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":";;AA4DA,gCAuCC;AAsCD,gCAKC;AAwFD,kDAsDC;AA0JD,wCAyEC;AAsBD,kDA0BC;AAQD,0DAoBC;AAsBD,oDAkCC;AAnoBD,+BAMc;AACd,kDAIyB;AACzB,0DAGkC;AAElC,wDAA6D;AAC7D,8CAAsE;AACtE,6CAA6C;AAC7C,iDAGwB;AAexB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,iBAAiB,GAAG,EAAE,EACtB,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,IAAI,GAWhB;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,2BAAY,CAAC,WAAW,EAAE,CAAC;IAEpE,OAAO;QACL,OAAO;QACP,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,gCAAkB;QACvB,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE;YACJ,SAAS;YACT,KAAK;YACL,MAAM;YACN,WAAW;YACX,iBAAiB;YACjB,IAAI;YACJ,QAAQ;SACT;QACD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC9B,CAAC;AACJ,CAAC;AAgBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAoB,EACpB,IAAkC;IAElC,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAC/C,CAAC;AAkCD;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,IAA0B,EAC1B,sBAA8B;IAE9B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9C,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CACzB,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAS,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;QAC/B,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QACzB,oBAAoB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7B,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9B,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACpB,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAChB,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;QACtB,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAC/B,UAAU,EAAE,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1C,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;KACjE,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS,OAAO,CAAC,UAAkB,EAAE,eAAuB;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,mCAAoB,CAAC,CAAC;IACzC,MAAM,qBAAqB,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC,GAAG,GAAG,CAAC;IAC3E,OAAO;QACL,qBAAqB;QACrB,kBAAkB,EAAE,UAAU,GAAG,qBAAqB;KACvD,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,YAAY,CAAC,IAAoB,EAAE,MAAc;IACxD,OAAO,IAAI,CAAC,gBAAgB,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;QAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW;QACrD,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,qBAAqB,EACrB,kBAAkB,EAClB,MAAM,EACN,eAAe,GAAG,EAAE,EACpB,kBAAkB,GASnB;IACC,IAAI,IAAI,GAAe,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IACrE,IACE,CAAC,WAAW;QACZ,qBAAqB,KAAK,EAAE;QAC5B,kBAAkB,KAAK,EAAE,EACzB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YACvE,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,oBAAoB,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,cAAc,GAClB,CAAC,OAAO,CAAC,cAAc;YACvB,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,oBAAoB;YACjD,CAAC,CAAC,OAAO,CAAC,YAAY;YACtB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACnC,MAAM,SAAS,GAAG,OAAO,CACvB,OAAO,CAAC,UAAU;YAChB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,cAAc,GAAG,oBAAoB,EACzC,OAAO,CAAC,eAAe,CACxB,CAAC;QACF,IAAI,OAAO,CAAC,UAAU;YAAE,SAAS,CAAC,qBAAqB,IAAI,cAAc,CAAC;QAE1E,IACE,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB;YAC5D,CAAC,SAAS,CAAC,qBAAqB,KAAK,IAAI,CAAC,qBAAqB;gBAC7D,SAAS,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EACzD,CAAC;YACD,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAoB,EAAE,MAAc;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU;QAC7B,CAAC,CAAC,IAAI,CAAC,qBAAqB;QAC5B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,eAAe,CAAC;aACtD,qBAAqB,CAAC;IAC7B,OAAO,CACL,OAAO;QACP,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC;aACtD,qBAAqB,CACzB,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,KAAK,UAAU,OAAO,CACpB,MAAoB,EACpB,EACE,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,GAAG,IAAI,GACc;IAS/B,MAAM,CACJ,OAAO,EACP,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EACnB,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QAC5B,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,gCAAkB;QACvB,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;KACxD,CAAC,CAAC;IACH,8EAA8E;IAC9E,MAAM,WAAW,GACf,kBAAkB,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,eAAe,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3D,MAAM,IAAI,GAAG,WAAW;QACtB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAC1D;QACH,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,OAAO,EAAE,mBAAmB,CAAC;YAC3B,WAAW;YACX,qBAAqB;YACrB,kBAAkB;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,eAAe;YACf,kBAAkB;SACnB,CAAC;QACF,6BAA6B,EAAE,qBAAqB;QACpD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI;QAClE,cAAc,EACZ,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,eAAe,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,KAAK,UAAU,qBAAqB,CAClC,MAAoB,EACpB,OAAkB,EAClB,SAAiB;IAEjB,IAAI,QAAiB,CAAC;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAA,mCAAoB,EAAC,uBAAuB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,6EAA6E;IAC7E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACrC,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,sCAAwB;QAC7B,YAAY,EAAE,QAAQ;QACtB,IAAI,EAAE,CAAC,SAAS,CAAC;KAClB,CAAC,CAAC;IACH,OAAO,IAAI,KAAK,kBAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAS5D,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;YACtC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE;SAC3C;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE;oBACV,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;oBACtC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC/B,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;oBACtC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;iBACnC;aACF;SACF;KACF;CACO,CAAC;AAEX;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,EACE,KAAK,EACL,WAAW,GAAG,IAAI,EAClB,GAAG,IAAI,EACkD;IAE3D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,EACJ,OAAO,EACP,6BAA6B,EAC7B,MAAM,EACN,OAAO,EACP,cAAc,GACf,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAoB;QAChC,QAAQ;QACR,OAAO;QACP,iBAAiB,EAAE,IAAA,0BAAa,EAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;YACtB,CAAC,CAAC,uDAAuD;gBACvD,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;YACxD,CAAC,CAAC,6BAA6B,EACjC,WAAW,CACZ;KACF,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,gBAAgB,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;YACxC,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,GAAG,EAAE,YAAY;YACjB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE;gBACJ,SAAS;gBACT,KAAK,CAAC,WAAW,EAAE,KAAK,2BAAY,CAAC,WAAW,EAAE;oBAChD,CAAC,CAAC,kBAAW;oBACb,CAAC,CAAC,KAAK;aACV;SACF,CAAC,CAAC;QACH,0EAA0E;QAC1E,IAAI,IAAA,8BAAe,EAAC,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM;YAAE,OAAO,QAAQ,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,IAAA,6CAA8B,EAAC,MAAM,EAAE;YACzD,OAAO;YACP,OAAO;YACP,UAAU,EAAE,CAAC,OAAO,CAAC,eAAe;YACpC,QAAQ,EAAE,OAAO,CAAC,gBAAgB;SACnC,CAAC,CAAC;QACH,MAAM,oBAAoB,GAAG,IAAA,0BAAa,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/D,iEAAiE;QACjE,IAAI,oBAAoB,IAAI,OAAO,CAAC,qBAAqB;YAAE,OAAO,QAAQ,CAAC;QAC3E,MAAM,UAAU,GAAG,OAAO,CACxB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,EAC7B,OAAO,CAAC,eAAe,CACxB,CAAC;QACF,OAAO;YACL,QAAQ,EAAE,oBAAoB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YACxE,OAAO,EAAE;gBACP,qBAAqB,EAAE,KAAK,GAAG,UAAU,CAAC,qBAAqB;gBAC/D,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;aAClD;YACD,iBAAiB,EAAE,oBAAoB;SACxC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,GAAG,yCAA0B,GAO/C;IACC,MAAM,MAAM,GAAG,gBAAgB,IAAI,WAAW,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,0BAAmB,EACrC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EACxC,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAC/C,CAAC;IAEF,OAAO,IAAA,4BAAkB,EACvB,CAAC,IAAA,wBAAc,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAC/B,CAAC,WAAW,CAAC,CACP,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,GAAG,KAAK,GAMnB;IACC,OAAO,IAAA,4BAAkB,EACvB,CAAC,IAAA,wBAAc,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAC7B;QACE,IAAA,0BAAmB,EACjB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAC5D,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,CAAC,CACrD;KACF,CACF,CAAC;AACJ,CAAC;AASD;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,oBAAoB,GAAG,EAAE,GAK1B;IACC,MAAM,GAAG,GAAG;QACV,IAAA,wBAAc,EACZ,IAAA,mCAAoB,EAAC,uBAAuB,EAAE,CAAC,EAAE,OAAO,CAAC,EACzD,KAAK,CACN;KACF,CAAC;IACF,MAAM,IAAI,GAAU;QAClB,IAAA,0BAAmB,EACjB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAC5D,CAAC,EAAE,EAAE,oBAAoB,EAAE,IAAI,CAAC,CACjC;KACF,CAAC;IACF,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,IAAA,wBAAc,EAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CACP,IAAA,0BAAmB,EACjB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EACxC;YACE,KAAK,CAAC,iBAAiB,IAAI,yCAA0B;YACrD,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;SAChC,CACF,CACF,CAAC;IACJ,CAAC;IACD,OAAO,IAAA,4BAAkB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC"}
@@ -287,7 +287,7 @@ export declare const stickySourceCollectorAbi: readonly [{
287
287
  }];
288
288
  }];
289
289
  /**
290
- * A reviewed, actually deployed collector and fee child on one source chain.
290
+ * A reviewed, actually deployed collector and fee payer on one source chain.
291
291
  * Obtain hashes and bindings from verified deployment artifacts, never predictions
292
292
  * or the target's own getters. A destination family has one address across sources.
293
293
  */
@@ -303,7 +303,7 @@ export interface StickySourceCollectorDeployment {
303
303
  directory: Address;
304
304
  receiverFactory: Address;
305
305
  }
306
- /** No new collector family has been published as a verified live deployment yet. */
306
+ /** Verified source/home families generated from the pinned Sticky release. */
307
307
  export declare const STICKY_SOURCE_COLLECTOR_DEPLOYMENTS: readonly StickySourceCollectorDeployment[];
308
308
  /**
309
309
  * Find a deployed source/home pair. Unknown or conflicting family records fail
@@ -1 +1 @@
1
- {"version":3,"file":"sticky.d.ts","sourceRoot":"","sources":["../../../src/v6/sticky.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sticky.d.ts","sourceRoot":"","sources":["../../../src/v6/sticky.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,7 @@ const juicebox_js_1 = require("../generated/juicebox.js");
53
53
  const pureConstants_js_1 = require("../pureConstants.js");
54
54
  const splits_js_1 = require("./splits.js");
55
55
  const types_js_1 = require("./types.js");
56
+ const stickySourceCollectors_js_1 = require("../generated/stickySourceCollectors.js");
56
57
  /**
57
58
  * A split routes funds to Sticky holders when its `hook` is the chain's
58
59
  * `StickyDistributor`. The distributor reads the rest of the split this way:
@@ -543,8 +544,8 @@ const stickySuckerIdentityAbi = [
543
544
  ],
544
545
  },
545
546
  ];
546
- /** No new collector family has been published as a verified live deployment yet. */
547
- exports.STICKY_SOURCE_COLLECTOR_DEPLOYMENTS = [];
547
+ /** Verified source/home families generated from the pinned Sticky release. */
548
+ exports.STICKY_SOURCE_COLLECTOR_DEPLOYMENTS = stickySourceCollectors_js_1.stickySourceCollectorDeployments;
548
549
  /**
549
550
  * Find a deployed source/home pair. Unknown or conflicting family records fail
550
551
  * closed, including different addresses for the same destination on other sources.
@@ -923,8 +924,8 @@ async function verifyStickyCollectorRoute(sourceClient, destinationClient, args)
923
924
  if (returnChain !== BigInt(deployment.sourceChainId) ||
924
925
  !(0, viem_1.isAddressEqual)(suckerBytes32ToAddress(returnPeer), sucker))
925
926
  throw new Error("Sticky destination peer does not match the source route.");
926
- // The fee child can return only same-call refunds. Native Arbitrum L1
927
- // retryables refund later on L2, where the child cannot attribute or return
927
+ // The fee payer can return only same-call refunds. Native Arbitrum L1
928
+ // retryables refund later on L2, where the fee payer cannot attribute or return
928
929
  // that caller's payment. This is a qualification mitigation, not a contract
929
930
  // restriction or a fix to the upstream asynchronous refund destination.
930
931
  const transport = await classifySuckerTransport(sourceClient, sucker);