@interest-protocol/blast-migrators-sdk 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,604 @@
1
+ import { grossGasBudget } from "@interest-protocol/blast-core/gas";
2
+ import { requirePositiveU64, requireU64, } from "@interest-protocol/blast-core/integers";
3
+ import { deploymentObject, moveResults, } from "@interest-protocol/blast-core/ptb";
4
+ import { MIGRATOR_REWARD_LEAF_DOMAIN, rewardAddress, rewardDigest, validateRewardManifest, } from "@interest-protocol/blast-core/rewards/allocations";
5
+ import { normalizeSharedObjectIdentity, normalizeSharedObjectReference, normalizeSuiPackageReference, } from "@interest-protocol/blast-core/sui";
6
+ import { addLaunchCompletion, LaunchpadCalls, normalizeLaunchTypes, } from "@interest-protocol/blast-launchpad-sdk/transactions";
7
+ import { Transaction } from "@mysten/sui/transactions";
8
+ import { normalizeStructTag, normalizeSuiAddress } from "@mysten/sui/utils";
9
+ /** Maximum Merkle proof depth the holder-reward leaf count (65,536) allows. */
10
+ export const MAX_HOLDER_REWARD_PROOF_DEPTH = 16;
11
+ export class MigratorCalls {
12
+ deployment;
13
+ launchpad;
14
+ constructor(deployment) {
15
+ this.launchpad = new LaunchpadCalls(deployment.launchpad);
16
+ this.deployment = {
17
+ ...normalizeSuiPackageReference("migrators", deployment),
18
+ launchpad: this.launchpad.deployment,
19
+ migratorsVersion: normalizeSharedObjectIdentity("migratorsVersion", deployment.migratorsVersion),
20
+ lpFeePolicy: normalizeSharedObjectIdentity("lpFeePolicy", deployment.lpFeePolicy),
21
+ venueConfig: normalizeSharedObjectIdentity("venueConfig", deployment.venueConfig),
22
+ };
23
+ }
24
+ /** The adapter witness type a launch stores as its `migration_witness`. */
25
+ migrationWitnessType(venue) {
26
+ return normalizeStructTag(`${this.deployment.originalPackageId}::${venue}::Witness`);
27
+ }
28
+ signIn(options) {
29
+ return this.launchpad.signIn(options);
30
+ }
31
+ /**
32
+ * Starts a Cetus launch at `tickSpacing`: Cetus derives the fee rate, and the
33
+ * Meme type's single `PoolCreationCap` is minted and reserved for the pair.
34
+ * Returns the `LaunchInitializer`, which the same PTB must finalize.
35
+ */
36
+ newCetusLaunch(options) {
37
+ const types = normalizeLaunchTypes(options);
38
+ const tickSpacing = requireU32("tickSpacing", options.tickSpacing);
39
+ return (tx) => tx.moveCall({
40
+ target: `${this.deployment.packageId}::cetus::new`,
41
+ typeArguments: [types.memeType, types.quoteType],
42
+ arguments: [
43
+ tx.object(options.ticket),
44
+ this.#migratorsVersion(tx),
45
+ this.#launchpadVersion(tx),
46
+ this.#launchConfig(tx),
47
+ deploymentObject(tx, this.deployment.venueConfig, true),
48
+ sharedObject(tx, "cetusConfig", options.cetusConfig, false),
49
+ sharedObject(tx, "cetusPools", options.cetusPools, true),
50
+ tx.pure.u32(tickSpacing),
51
+ ],
52
+ });
53
+ }
54
+ /**
55
+ * Starts a Bluefin launch at the creator's tier (tick spacing 1-400, fee rate
56
+ * 1-20,000, Bluefin's own bounds). Returns the `LaunchInitializer`.
57
+ */
58
+ newBluefinLaunch(options) {
59
+ const types = normalizeLaunchTypes(options);
60
+ const tickSpacing = requireU32("tickSpacing", options.tickSpacing);
61
+ requireU64("feeRate", options.feeRate);
62
+ return (tx) => tx.moveCall({
63
+ target: `${this.deployment.packageId}::bluefin::new`,
64
+ typeArguments: [types.memeType, types.quoteType],
65
+ arguments: [
66
+ tx.object(options.ticket),
67
+ this.#migratorsVersion(tx),
68
+ this.#launchpadVersion(tx),
69
+ this.#launchConfig(tx),
70
+ tx.pure.u32(tickSpacing),
71
+ tx.pure.u64(options.feeRate),
72
+ ],
73
+ });
74
+ }
75
+ /**
76
+ * Migrates a MigrationReady Cetus launch: creates the pool with the reserved
77
+ * capability, seeds full-range liquidity, and burns the position through
78
+ * Cetus LP Burn. Anyone may call it.
79
+ */
80
+ migrateCetus(options) {
81
+ const types = normalizeLaunchTypes(options);
82
+ const memeSide = normalizeMemeSide(options.memeSide);
83
+ return (tx) => {
84
+ // Cetus seeds a new pool's tick skip list from the clock, so its storage
85
+ // differs between simulation and execution by up to 18 bytes, more than
86
+ // the default budget's headroom: budget this transaction at gross cost.
87
+ tx.addBuildPlugin(grossGasBudget());
88
+ tx.moveCall({
89
+ target: `${this.deployment.packageId}::cetus::migrate`,
90
+ typeArguments: cetusTypeArguments(types, memeSide),
91
+ arguments: [
92
+ sharedObject(tx, "launch", options.launch, true),
93
+ this.#migratorsVersion(tx),
94
+ this.#launchpadVersion(tx),
95
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
96
+ deploymentObject(tx, this.deployment.venueConfig, false),
97
+ sharedObject(tx, "cetusConfig", options.cetusConfig, false),
98
+ sharedObject(tx, "cetusPools", options.cetusPools, true),
99
+ sharedObject(tx, "burnManager", options.burnManager, true),
100
+ tx.object.clock(),
101
+ ],
102
+ });
103
+ };
104
+ }
105
+ /**
106
+ * Migrates a MigrationReady Bluefin launch into a new `Pool<Meme, Quote>`.
107
+ * `creationFee` must be exactly Bluefin's configured SUI pool-creation fee.
108
+ */
109
+ migrateBluefin(options) {
110
+ const types = normalizeLaunchTypes(options);
111
+ return (tx) => {
112
+ tx.moveCall({
113
+ target: `${this.deployment.packageId}::bluefin::migrate`,
114
+ typeArguments: [types.memeType, types.quoteType],
115
+ arguments: [
116
+ sharedObject(tx, "launch", options.launch, true),
117
+ this.#migratorsVersion(tx),
118
+ this.#launchpadVersion(tx),
119
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
120
+ sharedObject(tx, "quoteCurrency", options.quoteCurrency, false),
121
+ sharedObject(tx, "bluefinConfig", options.bluefinConfig, true),
122
+ tx.object(options.creationFee),
123
+ tx.object.clock(),
124
+ ],
125
+ });
126
+ };
127
+ }
128
+ /**
129
+ * Collects the burned migration position's and the auto-LP position's fees,
130
+ * pays Blast's live share, splits the rest, burns the burn share's Meme, and
131
+ * adds the auto-LP share back. Anyone may call it.
132
+ */
133
+ collectCetusFees(options) {
134
+ const types = normalizeLaunchTypes(options);
135
+ const memeSide = normalizeMemeSide(options.memeSide);
136
+ return (tx) => {
137
+ tx.moveCall({
138
+ target: `${this.deployment.packageId}::cetus::collect_fees`,
139
+ typeArguments: cetusTypeArguments(types, memeSide),
140
+ arguments: [
141
+ sharedObject(tx, "vault", options.vault, true),
142
+ this.#migratorsVersion(tx),
143
+ this.#lpFeePolicy(tx),
144
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
145
+ sharedObject(tx, "cetusConfig", options.cetusConfig, false),
146
+ sharedObject(tx, "burnManager", options.burnManager, false),
147
+ sharedObject(tx, "pool", options.pool, true),
148
+ tx.object.clock(),
149
+ ],
150
+ });
151
+ };
152
+ }
153
+ /** Collects, splits, burns, and adds auto-LP for a Bluefin vault. Anyone may call it. */
154
+ collectBluefinFees(options) {
155
+ const types = normalizeLaunchTypes(options);
156
+ return (tx) => {
157
+ tx.moveCall({
158
+ target: `${this.deployment.packageId}::bluefin::collect_fees`,
159
+ typeArguments: [types.memeType, types.quoteType],
160
+ arguments: [
161
+ sharedObject(tx, "vault", options.vault, true),
162
+ this.#migratorsVersion(tx),
163
+ this.#lpFeePolicy(tx),
164
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
165
+ sharedObject(tx, "bluefinConfig", options.bluefinConfig, false),
166
+ sharedObject(tx, "pool", options.pool, true),
167
+ tx.object.clock(),
168
+ ],
169
+ });
170
+ };
171
+ }
172
+ /**
173
+ * Settles the fees accrued under the current split, then commits `feeSplit`
174
+ * as the vault's split. Only the launch's live `CurveFeeCap` authorizes it.
175
+ * `launch` is read immutably by Move.
176
+ */
177
+ settleAndUpdateCetusFeeSplit(options) {
178
+ const types = normalizeLaunchTypes(options);
179
+ const memeSide = normalizeMemeSide(options.memeSide);
180
+ const feeSplit = this.launchpad.feeSplit(options.feeSplit);
181
+ return (tx) => {
182
+ tx.moveCall({
183
+ target: `${this.deployment.packageId}::cetus::settle_and_update_fee_split`,
184
+ typeArguments: cetusTypeArguments(types, memeSide),
185
+ arguments: [
186
+ sharedObject(tx, "vault", options.vault, true),
187
+ this.#migratorsVersion(tx),
188
+ this.#lpFeePolicy(tx),
189
+ sharedObject(tx, "launch", options.launch, options.launch.mutable),
190
+ tx.object(options.curveFeeCap),
191
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
192
+ sharedObject(tx, "cetusConfig", options.cetusConfig, false),
193
+ sharedObject(tx, "burnManager", options.burnManager, false),
194
+ sharedObject(tx, "pool", options.pool, true),
195
+ tx.add(feeSplit),
196
+ tx.object.clock(),
197
+ ],
198
+ });
199
+ };
200
+ }
201
+ /** Bluefin counterpart of `settleAndUpdateCetusFeeSplit`. */
202
+ settleAndUpdateBluefinFeeSplit(options) {
203
+ const types = normalizeLaunchTypes(options);
204
+ const feeSplit = this.launchpad.feeSplit(options.feeSplit);
205
+ return (tx) => {
206
+ tx.moveCall({
207
+ target: `${this.deployment.packageId}::bluefin::settle_and_update_fee_split`,
208
+ typeArguments: [types.memeType, types.quoteType],
209
+ arguments: [
210
+ sharedObject(tx, "vault", options.vault, true),
211
+ this.#migratorsVersion(tx),
212
+ this.#lpFeePolicy(tx),
213
+ sharedObject(tx, "launch", options.launch, options.launch.mutable),
214
+ tx.object(options.curveFeeCap),
215
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
216
+ sharedObject(tx, "bluefinConfig", options.bluefinConfig, false),
217
+ sharedObject(tx, "pool", options.pool, true),
218
+ tx.add(feeSplit),
219
+ tx.object.clock(),
220
+ ],
221
+ });
222
+ };
223
+ }
224
+ /**
225
+ * Swaps `quoteIn` atomic units of the vault's burn Quote for Meme in its
226
+ * Cetus pool and burns it, under a `BuybackAdmin` witness. The contract
227
+ * aborts with `EBuybackQuoteOutOfRange` when `quoteIn` exceeds the vault's
228
+ * burn Quote, and unless the swap returns at least `minMemeOut`; set it from
229
+ * an off-chain price, since anyone can move the pool's price within a
230
+ * transaction. Unspent Quote waits for the next buyback.
231
+ */
232
+ buybackAndBurnCetus(options) {
233
+ const types = normalizeLaunchTypes(options);
234
+ const memeSide = normalizeMemeSide(options.memeSide);
235
+ const quoteIn = requirePositiveU64("quoteIn", options.quoteIn);
236
+ const minMemeOut = requireU64("minMemeOut", options.minMemeOut);
237
+ return (tx) => {
238
+ tx.moveCall({
239
+ target: `${this.deployment.packageId}::cetus::buyback_and_burn`,
240
+ typeArguments: cetusTypeArguments(types, memeSide),
241
+ arguments: [
242
+ sharedObject(tx, "vault", options.vault, true),
243
+ this.#migratorsVersion(tx),
244
+ tx.object(options.adminWitness),
245
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
246
+ sharedObject(tx, "cetusConfig", options.cetusConfig, false),
247
+ sharedObject(tx, "pool", options.pool, true),
248
+ tx.pure.u64(quoteIn),
249
+ tx.pure.u64(minMemeOut),
250
+ tx.object.clock(),
251
+ ],
252
+ });
253
+ };
254
+ }
255
+ /** Bluefin counterpart of `buybackAndBurnCetus`. */
256
+ buybackAndBurnBluefin(options) {
257
+ const types = normalizeLaunchTypes(options);
258
+ const quoteIn = requirePositiveU64("quoteIn", options.quoteIn);
259
+ const minMemeOut = requireU64("minMemeOut", options.minMemeOut);
260
+ return (tx) => {
261
+ tx.moveCall({
262
+ target: `${this.deployment.packageId}::bluefin::buyback_and_burn`,
263
+ typeArguments: [types.memeType, types.quoteType],
264
+ arguments: [
265
+ sharedObject(tx, "vault", options.vault, true),
266
+ this.#migratorsVersion(tx),
267
+ tx.object(options.adminWitness),
268
+ sharedObject(tx, "memeCurrency", options.memeCurrency, true),
269
+ sharedObject(tx, "bluefinConfig", options.bluefinConfig, false),
270
+ sharedObject(tx, "pool", options.pool, true),
271
+ tx.pure.u64(quoteIn),
272
+ tx.pure.u64(minMemeOut),
273
+ tx.object.clock(),
274
+ ],
275
+ });
276
+ };
277
+ }
278
+ /**
279
+ * Claims the creator's accrued LP fees with the launch's live `CurveFeeCap`.
280
+ * `launch` is read immutably by Move.
281
+ */
282
+ claimCreatorFees(options) {
283
+ const types = normalizeLaunchTypes(options);
284
+ return (tx) => tx.moveCall({
285
+ target: `${this.deployment.packageId}::vault::claim_creator_fees`,
286
+ typeArguments: [types.memeType, types.quoteType],
287
+ arguments: [
288
+ sharedObject(tx, "vault", options.vault, true),
289
+ this.#migratorsVersion(tx),
290
+ sharedObject(tx, "launch", options.launch, options.launch.mutable),
291
+ tx.object(options.curveFeeCap),
292
+ ],
293
+ });
294
+ }
295
+ /**
296
+ * `vault::claim_protocol_lp_fees_with_partner`: pays a partnered vault's held
297
+ * Blast LP fees, the launch's partner its cut in force of each asset, rounded
298
+ * down, and the `LpFeePolicy` destination the rest. Anyone may call it;
299
+ * holding nothing pays nothing.
300
+ */
301
+ claimProtocolLpFeesWithPartner(options) {
302
+ const types = normalizeLaunchTypes(options);
303
+ return (tx) => {
304
+ tx.moveCall({
305
+ target: `${this.deployment.packageId}::vault::claim_protocol_lp_fees_with_partner`,
306
+ typeArguments: [types.memeType, types.quoteType],
307
+ arguments: [
308
+ sharedObject(tx, "vault", options.vault, true),
309
+ this.#migratorsVersion(tx),
310
+ this.#lpFeePolicy(tx),
311
+ sharedObject(tx, "partner", options.partner, false),
312
+ tx.object.clock(),
313
+ ],
314
+ });
315
+ };
316
+ }
317
+ /** Claims the protocol-owned migration residuals under a `TreasuryAdmin` witness. */
318
+ claimProtocolFees(options) {
319
+ const types = normalizeLaunchTypes(options);
320
+ return (tx) => tx.moveCall({
321
+ target: `${this.deployment.packageId}::vault::claim_protocol_fees`,
322
+ typeArguments: [types.memeType, types.quoteType],
323
+ arguments: [
324
+ sharedObject(tx, "vault", options.vault, true),
325
+ this.#migratorsVersion(tx),
326
+ tx.object(options.adminWitness),
327
+ ],
328
+ });
329
+ }
330
+ /** Changes Blast's default Meme and Quote LP-fee shares for coins without their own pair (`FeeAdmin`). */
331
+ setLpFeeDefaultShares(options) {
332
+ return this.#lpFeePolicyAdmin("set_default_shares", [], options, (tx) => [
333
+ tx.add(this.launchpad.bps(options.memeBps)),
334
+ tx.add(this.launchpad.bps(options.quoteBps)),
335
+ ]);
336
+ }
337
+ /** Sets Blast's LP-fee shares for one original Meme type (`FeeAdmin`). */
338
+ setLpFeeCoinShares(options) {
339
+ return this.#lpFeePolicyAdmin("set_coin_shares", [normalizeStructTag(options.memeType)], options, (tx) => [
340
+ tx.add(this.launchpad.bps(options.memeBps)),
341
+ tx.add(this.launchpad.bps(options.quoteBps)),
342
+ ]);
343
+ }
344
+ /** Removes one Meme type's own pair so its collections use the defaults again (`FeeAdmin`). */
345
+ clearLpFeeCoinShares(options) {
346
+ return this.#lpFeePolicyAdmin("clear_coin_shares", [normalizeStructTag(options.memeType)], options, () => []);
347
+ }
348
+ /** Redirects every later protocol LP-fee payout (`TreasuryAdmin`). */
349
+ setLpFeeProtocolDestination(options) {
350
+ const destination = normalizeSuiAddress(options.destination);
351
+ return this.#lpFeePolicyAdmin("set_protocol_destination", [], options, (tx) => [tx.pure.address(destination)]);
352
+ }
353
+ /**
354
+ * Publishes a holder-reward round from a validated manifest, reserving its
355
+ * budget from the vault's rewards balance, and shares the `Round`
356
+ * (`RewardsAdmin`).
357
+ */
358
+ publishHolderRewardRound(options) {
359
+ const types = normalizeLaunchTypes(options);
360
+ const manifest = validateRewardManifest(options.manifest, MIGRATOR_REWARD_LEAF_DOMAIN);
361
+ if (rewardAddress(manifest.vaultId) !== rewardAddress(options.vault.objectId)) {
362
+ throw new TypeError("manifest belongs to another vault");
363
+ }
364
+ return (tx) => {
365
+ tx.moveCall({
366
+ target: `${this.deployment.packageId}::blast_holder_rewards::publish_round`,
367
+ typeArguments: [types.memeType, types.quoteType],
368
+ arguments: [
369
+ sharedObject(tx, "vault", options.vault, true),
370
+ this.#migratorsVersion(tx),
371
+ tx.object(options.adminWitness),
372
+ tx.pure.u64(manifest.number),
373
+ tx.pure.u64(manifest.startCheckpoint),
374
+ tx.pure.u64(manifest.endCheckpoint),
375
+ tx.pure.vector("u8", rewardDigest(manifest.root)),
376
+ tx.pure.vector("u8", rewardDigest(manifest.manifestDigest)),
377
+ tx.pure.u64(manifest.allocations.length),
378
+ tx.pure.u64(manifest.memeAmount),
379
+ tx.pure.u64(manifest.quoteAmount),
380
+ ],
381
+ });
382
+ };
383
+ }
384
+ /** Relays one allocation's proof; the round pays its committed beneficiary. */
385
+ claimHolderReward(options) {
386
+ const types = normalizeLaunchTypes(options);
387
+ const { allocation } = options;
388
+ const index = requireU64("index", BigInt(allocation.index));
389
+ const memeAmount = requireU64("memeAmount", BigInt(allocation.memeAmount));
390
+ const quoteAmount = requireU64("quoteAmount", BigInt(allocation.quoteAmount));
391
+ const beneficiary = rewardAddress(allocation.beneficiary);
392
+ if (allocation.proof.length > MAX_HOLDER_REWARD_PROOF_DEPTH) {
393
+ throw new RangeError(`proof exceeds ${MAX_HOLDER_REWARD_PROOF_DEPTH} siblings`);
394
+ }
395
+ const proof = allocation.proof.map((sibling) => Array.from(rewardDigest(sibling)));
396
+ return (tx) => {
397
+ tx.moveCall({
398
+ target: `${this.deployment.packageId}::blast_holder_rewards::claim`,
399
+ typeArguments: [types.memeType, types.quoteType],
400
+ arguments: [
401
+ sharedObject(tx, "round", options.round, true),
402
+ this.#migratorsVersion(tx),
403
+ tx.pure.u64(index),
404
+ tx.pure.address(beneficiary),
405
+ tx.pure.u64(memeAmount),
406
+ tx.pure.u64(quoteAmount),
407
+ tx.pure.vector("vector<u8>", proof),
408
+ ],
409
+ });
410
+ };
411
+ }
412
+ #lpFeePolicyAdmin(functionName, typeArguments, options, extra) {
413
+ return (tx) => {
414
+ tx.moveCall({
415
+ target: `${this.deployment.packageId}::lp_fee_policy::${functionName}`,
416
+ typeArguments,
417
+ arguments: [
418
+ deploymentObject(tx, this.deployment.lpFeePolicy, true),
419
+ this.#migratorsVersion(tx),
420
+ tx.object(options.adminWitness),
421
+ ...extra(tx),
422
+ ],
423
+ });
424
+ };
425
+ }
426
+ #migratorsVersion(tx) {
427
+ return deploymentObject(tx, this.deployment.migratorsVersion, false);
428
+ }
429
+ #launchpadVersion(tx) {
430
+ return deploymentObject(tx, this.deployment.launchpad.packageVersion, false);
431
+ }
432
+ #launchConfig(tx) {
433
+ return deploymentObject(tx, this.deployment.launchpad.launchConfig, false);
434
+ }
435
+ #lpFeePolicy(tx) {
436
+ return deploymentObject(tx, this.deployment.lpFeePolicy, false);
437
+ }
438
+ }
439
+ export class MigratorTransactions {
440
+ call;
441
+ #useGasCoin;
442
+ constructor(deployment, options = {}) {
443
+ this.call = new MigratorCalls(deployment);
444
+ this.#useGasCoin = options.useGasCoin ?? true;
445
+ }
446
+ /**
447
+ * Starts, configures, finalizes, and shares a Cetus launch atomically, with
448
+ * an optional purchase on the owned launch, routed to its recipient.
449
+ */
450
+ createCetusLaunch(options) {
451
+ const tx = new Transaction();
452
+ const initializer = tx.add(this.call.newCetusLaunch(options));
453
+ addLaunchCompletion(tx, this.call.launchpad, {
454
+ ...options,
455
+ initializer,
456
+ currency: options.memeCurrency,
457
+ useGasCoin: options.useGasCoin ?? this.#useGasCoin,
458
+ });
459
+ return tx;
460
+ }
461
+ /** Bluefin counterpart of `createCetusLaunch`. */
462
+ createBluefinLaunch(options) {
463
+ const tx = new Transaction();
464
+ const initializer = tx.add(this.call.newBluefinLaunch(options));
465
+ addLaunchCompletion(tx, this.call.launchpad, {
466
+ ...options,
467
+ initializer,
468
+ currency: options.memeCurrency,
469
+ useGasCoin: options.useGasCoin ?? this.#useGasCoin,
470
+ });
471
+ return tx;
472
+ }
473
+ migrateCetus(options) {
474
+ const tx = new Transaction();
475
+ tx.add(this.call.migrateCetus(options));
476
+ return tx;
477
+ }
478
+ /** Pays Bluefin's SUI pool-creation fee as an exact-balance coin. */
479
+ migrateBluefin(options) {
480
+ requireU64("creationFee", options.creationFee);
481
+ const tx = new Transaction();
482
+ const creationFee = tx.coin({
483
+ type: "0x2::sui::SUI",
484
+ balance: options.creationFee,
485
+ useGasCoin: options.useGasCoin ?? this.#useGasCoin,
486
+ });
487
+ tx.add(this.call.migrateBluefin({ ...options, creationFee }));
488
+ return tx;
489
+ }
490
+ /** Then pays the vault's partner when `partner` is given; see `claimProtocolLpFeesWithPartner`. */
491
+ collectCetusFees(options) {
492
+ const tx = new Transaction();
493
+ tx.add(this.call.collectCetusFees(options));
494
+ return this.#claimProtocolLpFeesWithPartnerAfter(tx, options);
495
+ }
496
+ /** Then pays the vault's partner when `partner` is given; see `claimProtocolLpFeesWithPartner`. */
497
+ collectBluefinFees(options) {
498
+ const tx = new Transaction();
499
+ tx.add(this.call.collectBluefinFees(options));
500
+ return this.#claimProtocolLpFeesWithPartnerAfter(tx, options);
501
+ }
502
+ /** Pays a partnered vault's partner and Blast the LP fees its collections held. */
503
+ claimProtocolLpFeesWithPartner(options) {
504
+ const tx = new Transaction();
505
+ tx.add(this.call.claimProtocolLpFeesWithPartner(options));
506
+ return tx;
507
+ }
508
+ settleAndUpdateCetusFeeSplit(options) {
509
+ const tx = new Transaction();
510
+ tx.add(this.call.settleAndUpdateCetusFeeSplit({
511
+ ...options,
512
+ curveFeeCap: options.curveFeeCapId,
513
+ }));
514
+ return tx;
515
+ }
516
+ settleAndUpdateBluefinFeeSplit(options) {
517
+ const tx = new Transaction();
518
+ tx.add(this.call.settleAndUpdateBluefinFeeSplit({
519
+ ...options,
520
+ curveFeeCap: options.curveFeeCapId,
521
+ }));
522
+ return tx;
523
+ }
524
+ claimCreatorFees(options) {
525
+ const tx = new Transaction();
526
+ const result = tx.add(this.call.claimCreatorFees({
527
+ ...options,
528
+ curveFeeCap: options.curveFeeCapId,
529
+ }));
530
+ tx.transferObjects(moveResults(result, 2), normalizeSuiAddress(options.recipient));
531
+ return tx;
532
+ }
533
+ claimProtocolFees(options) {
534
+ const tx = new Transaction();
535
+ const adminWitness = tx.add(this.call.signIn({ adminCap: options.adminCapId, role: "TreasuryAdmin" }));
536
+ const result = tx.add(this.call.claimProtocolFees({ ...options, adminWitness }));
537
+ tx.transferObjects(moveResults(result, 2), normalizeSuiAddress(options.recipient));
538
+ return tx;
539
+ }
540
+ setLpFeeDefaultShares(options) {
541
+ return this.#asAdmin(options.adminCapId, "FeeAdmin", (adminWitness) => this.call.setLpFeeDefaultShares({ ...options, adminWitness }));
542
+ }
543
+ setLpFeeCoinShares(options) {
544
+ return this.#asAdmin(options.adminCapId, "FeeAdmin", (adminWitness) => this.call.setLpFeeCoinShares({ ...options, adminWitness }));
545
+ }
546
+ clearLpFeeCoinShares(options) {
547
+ return this.#asAdmin(options.adminCapId, "FeeAdmin", (adminWitness) => this.call.clearLpFeeCoinShares({ ...options, adminWitness }));
548
+ }
549
+ setLpFeeProtocolDestination(options) {
550
+ return this.#asAdmin(options.adminCapId, "TreasuryAdmin", (adminWitness) => this.call.setLpFeeProtocolDestination({ ...options, adminWitness }));
551
+ }
552
+ buybackAndBurnCetus(options) {
553
+ return this.#asAdmin(options.adminCapId, "BuybackAdmin", (adminWitness) => this.call.buybackAndBurnCetus({ ...options, adminWitness }));
554
+ }
555
+ buybackAndBurnBluefin(options) {
556
+ return this.#asAdmin(options.adminCapId, "BuybackAdmin", (adminWitness) => this.call.buybackAndBurnBluefin({ ...options, adminWitness }));
557
+ }
558
+ publishHolderRewardRound(options) {
559
+ return this.#asAdmin(options.adminCapId, "RewardsAdmin", (adminWitness) => this.call.publishHolderRewardRound({ ...options, adminWitness }));
560
+ }
561
+ /** Relays up to `allocations.length` proofs of one round in a single PTB. */
562
+ claimHolderRewards(options) {
563
+ const tx = new Transaction();
564
+ for (const allocation of options.allocations) {
565
+ tx.add(this.call.claimHolderReward({ ...options, allocation }));
566
+ }
567
+ return tx;
568
+ }
569
+ #asAdmin(adminCapId, role, call) {
570
+ const tx = new Transaction();
571
+ const adminWitness = tx.add(this.call.signIn({ adminCap: adminCapId, role }));
572
+ tx.add(call(adminWitness));
573
+ return tx;
574
+ }
575
+ #claimProtocolLpFeesWithPartnerAfter(tx, options) {
576
+ const { partner } = options;
577
+ if (partner)
578
+ tx.add(this.call.claimProtocolLpFeesWithPartner({ ...options, partner }));
579
+ return tx;
580
+ }
581
+ }
582
+ function sharedObject(tx, name, reference, mutable) {
583
+ return tx.sharedObjectRef(normalizeSharedObjectReference(name, reference, mutable));
584
+ }
585
+ /** `[Meme, Quote, CoinA, CoinB]`, the pool's coins in Cetus order. */
586
+ function cetusTypeArguments(types, memeSide) {
587
+ const { memeType, quoteType } = types;
588
+ return memeSide === "a"
589
+ ? [memeType, quoteType, memeType, quoteType]
590
+ : [memeType, quoteType, quoteType, memeType];
591
+ }
592
+ function normalizeMemeSide(value) {
593
+ if (value !== "a" && value !== "b") {
594
+ throw new RangeError("memeSide must be a or b");
595
+ }
596
+ return value;
597
+ }
598
+ function requireU32(name, value) {
599
+ if (!Number.isInteger(value) || value < 0 || value > 0xffff_ffff) {
600
+ throw new RangeError(`${name} must be a u32`);
601
+ }
602
+ return value;
603
+ }
604
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}