@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.
package/dist/state.js ADDED
@@ -0,0 +1,187 @@
1
+ import { moveTypeNameBcs, suiBalanceBcs, suiIdBcs, suiObjectIdBcs, suiUidBcs, } from "@interest-protocol/blast-core/bcs";
2
+ import { normalizePositiveU64 } from "@interest-protocol/blast-core/integers";
3
+ import { bpsBcs, feeSplitBcs, } from "@interest-protocol/blast-launchpad-sdk/allocation";
4
+ import { bcs } from "@mysten/sui/bcs";
5
+ import { ObjectError } from "@mysten/sui/client";
6
+ import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId, parseStructTag, } from "@mysten/sui/utils";
7
+ /** Venues whose adapters the migrators package ships. */
8
+ export const MIGRATOR_VENUES = ["bluefin", "cetus"];
9
+ /**
10
+ * Identifies a launch's recorded route from its `migration_witness` (the
11
+ * adapter's `Witness` type, by original package ID) and its pool tier. Rejects
12
+ * a witness from another migrators package or a venue this SDK cannot route.
13
+ */
14
+ export function launchMigrationRoute(launch, migratorsOriginalPackageId) {
15
+ const tag = parseStructTag(launch.migrationWitnessType);
16
+ if (tag.address !== normalizeSuiAddress(migratorsOriginalPackageId)) {
17
+ throw new TypeError("the launch migrates through another migrators package");
18
+ }
19
+ const venue = tag.module;
20
+ if (!MIGRATOR_VENUES.includes(venue) || tag.name !== "Witness") {
21
+ throw new RangeError(`unsupported migration route ${tag.module}::${tag.name}`);
22
+ }
23
+ return {
24
+ venue,
25
+ tickSpacing: launch.poolTickSpacing,
26
+ feeRate: launch.poolFeeRate,
27
+ };
28
+ }
29
+ /** BCS layout of `blast_fun_migrators::vault::LpVault<Meme, Quote>`. */
30
+ export const lpVaultBcs = bcs.struct("LpVault", {
31
+ id: suiUidBcs,
32
+ pool_id: suiIdBcs,
33
+ partner_id: bcs.option(suiObjectIdBcs),
34
+ protocol_meme_residual: suiBalanceBcs,
35
+ protocol_quote_residual: suiBalanceBcs,
36
+ unpaid_protocol_meme: suiBalanceBcs,
37
+ unpaid_protocol_quote: suiBalanceBcs,
38
+ fee_split: feeSplitBcs,
39
+ creator_meme: suiBalanceBcs,
40
+ creator_quote: suiBalanceBcs,
41
+ auto_lp_meme: suiBalanceBcs,
42
+ auto_lp_quote: suiBalanceBcs,
43
+ rewards_meme: suiBalanceBcs,
44
+ rewards_quote: suiBalanceBcs,
45
+ burn_quote: suiBalanceBcs,
46
+ next_round: bcs.u64(),
47
+ last_checkpoint: bcs.option(bcs.u64()),
48
+ });
49
+ /** BCS layout of `blast_fun_migrators::lp_fee_policy::SharePair`. */
50
+ export const lpFeeSharePairBcs = bcs.struct("SharePair", {
51
+ meme_bps: bpsBcs,
52
+ quote_bps: bpsBcs,
53
+ });
54
+ /** BCS layout of `blast_fun_migrators::lp_fee_policy::LpFeePolicy`. */
55
+ export const lpFeePolicyBcs = bcs.struct("LpFeePolicy", {
56
+ id: suiUidBcs,
57
+ destination: bcs.Address,
58
+ defaults: lpFeeSharePairBcs,
59
+ coins: bcs.struct("Table", { id: suiUidBcs, size: bcs.u64() }),
60
+ });
61
+ export function decodeLpVaultObject(object, originalPackageId) {
62
+ const tag = parseStructTag(object.type);
63
+ if (tag.module !== "vault" || tag.name !== "LpVault") {
64
+ throw new TypeError(`object ${object.objectId} is not an LP vault`);
65
+ }
66
+ if (tag.typeParams.length !== 2) {
67
+ throw new TypeError(`LP vault ${object.objectId} must have two type arguments`);
68
+ }
69
+ if (tag.address !== normalizeSuiAddress(originalPackageId)) {
70
+ throw new TypeError(`LP vault ${object.objectId} has an unexpected package`);
71
+ }
72
+ if (object.mutable !== true) {
73
+ throw new TypeError(`LP vault ${object.objectId} must be mutable`);
74
+ }
75
+ const parsed = lpVaultBcs.parse(object.content);
76
+ const objectId = normalizeSuiObjectId(object.objectId);
77
+ if (normalizeSuiObjectId(parsed.id.id.bytes) !== objectId) {
78
+ throw new TypeError(`LP vault ${object.objectId} has a mismatched UID`);
79
+ }
80
+ return {
81
+ objectId,
82
+ initialSharedVersion: normalizePositiveU64("initialSharedVersion", object.initialSharedVersion),
83
+ mutable: true,
84
+ memeType: normalizeTypeParameter(tag.typeParams[0]),
85
+ quoteType: normalizeTypeParameter(tag.typeParams[1]),
86
+ poolId: normalizeSuiObjectId(parsed.pool_id.bytes),
87
+ partnerId: parsed.partner_id,
88
+ protocolMemeResidual: BigInt(parsed.protocol_meme_residual.value),
89
+ protocolQuoteResidual: BigInt(parsed.protocol_quote_residual.value),
90
+ unpaidProtocolMeme: BigInt(parsed.unpaid_protocol_meme.value),
91
+ unpaidProtocolQuote: BigInt(parsed.unpaid_protocol_quote.value),
92
+ feeSplit: parsed.fee_split,
93
+ creatorMeme: BigInt(parsed.creator_meme.value),
94
+ creatorQuote: BigInt(parsed.creator_quote.value),
95
+ autoLpMeme: BigInt(parsed.auto_lp_meme.value),
96
+ autoLpQuote: BigInt(parsed.auto_lp_quote.value),
97
+ rewardsMeme: BigInt(parsed.rewards_meme.value),
98
+ rewardsQuote: BigInt(parsed.rewards_quote.value),
99
+ burnQuote: BigInt(parsed.burn_quote.value),
100
+ nextRound: BigInt(parsed.next_round),
101
+ lastCheckpoint: parsed.last_checkpoint === null ? null : BigInt(parsed.last_checkpoint),
102
+ };
103
+ }
104
+ export async function getLpVault(client, objectId, originalPackageId) {
105
+ const { object } = await client.core.getObject({
106
+ objectId,
107
+ include: { content: true },
108
+ });
109
+ if (object.owner.$kind !== "Shared") {
110
+ throw new TypeError(`LP vault ${object.objectId} is not a shared object`);
111
+ }
112
+ return decodeLpVaultObject({
113
+ objectId: object.objectId,
114
+ initialSharedVersion: object.owner.Shared.initialSharedVersion,
115
+ mutable: true,
116
+ type: object.type,
117
+ content: object.content,
118
+ }, originalPackageId);
119
+ }
120
+ /** Reads the shared `LpFeePolicy` singleton. */
121
+ export async function getLpFeePolicy(client, objectId, originalPackageId) {
122
+ const { object } = await client.core.getObject({
123
+ objectId,
124
+ include: { content: true },
125
+ });
126
+ if (object.owner.$kind !== "Shared") {
127
+ throw new TypeError(`LP-fee policy ${object.objectId} is not shared`);
128
+ }
129
+ const expected = normalizeStructTag(`${normalizeSuiAddress(originalPackageId)}::lp_fee_policy::LpFeePolicy`);
130
+ if (normalizeStructTag(object.type) !== expected) {
131
+ throw new TypeError(`object ${object.objectId} is not the LP-fee policy`);
132
+ }
133
+ const parsed = lpFeePolicyBcs.parse(object.content);
134
+ if (normalizeSuiObjectId(parsed.id.id.bytes) !==
135
+ normalizeSuiObjectId(object.objectId)) {
136
+ throw new TypeError(`LP-fee policy ${object.objectId} has a mismatched UID`);
137
+ }
138
+ return {
139
+ objectId: normalizeSuiObjectId(object.objectId),
140
+ initialSharedVersion: normalizePositiveU64("initialSharedVersion", object.owner.Shared.initialSharedVersion),
141
+ mutable: false,
142
+ protocolDestination: normalizeSuiAddress(parsed.destination),
143
+ defaultShares: {
144
+ memeBps: parsed.defaults.meme_bps,
145
+ quoteBps: parsed.defaults.quote_bps,
146
+ },
147
+ coinSharesTableId: normalizeSuiObjectId(parsed.coins.id.id.bytes),
148
+ coinSharesCount: BigInt(parsed.coins.size),
149
+ };
150
+ }
151
+ /**
152
+ * Mirrors `lp_fee_policy::shares<Meme>`: the coin's own pair when an
153
+ * administrator set one, otherwise the default pair. `source` says which.
154
+ */
155
+ export async function getLpFeeShares(client, policy, memeType) {
156
+ try {
157
+ const { dynamicField } = await client.core.getDynamicField({
158
+ parentId: policy.coinSharesTableId,
159
+ name: {
160
+ type: "0x1::type_name::TypeName",
161
+ bcs: moveTypeNameBcs
162
+ .serialize(originalTypeNameText(memeType))
163
+ .toBytes(),
164
+ },
165
+ });
166
+ const pair = lpFeeSharePairBcs.parse(dynamicField.value.bcs);
167
+ return { memeBps: pair.meme_bps, quoteBps: pair.quote_bps, source: "coin" };
168
+ }
169
+ catch (error) {
170
+ if (!(error instanceof ObjectError) || error.reason !== "notFound") {
171
+ throw error;
172
+ }
173
+ return { ...policy.defaultShares, source: "default" };
174
+ }
175
+ }
176
+ /** Move `TypeName` text: the normalized tag without the `0x` address prefix. */
177
+ function originalTypeNameText(type) {
178
+ const normalized = normalizeStructTag(type);
179
+ return normalized.startsWith("0x") ? normalized.slice(2) : normalized;
180
+ }
181
+ function normalizeTypeParameter(type) {
182
+ if (type === undefined || typeof type === "string") {
183
+ throw new TypeError("LP vault coin type must be a struct type");
184
+ }
185
+ return normalizeStructTag(type);
186
+ }
187
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,314 @@
1
+ import type { CoinSourceOptions } from "@interest-protocol/blast-core/coins";
2
+ import type { RewardManifest, RewardProof } from "@interest-protocol/blast-core/rewards/allocations";
3
+ import type { SharedObjectIdentity, SharedObjectReference } from "@interest-protocol/blast-core/sui";
4
+ import type { FeeSplit } from "@interest-protocol/blast-launchpad-sdk/allocation";
5
+ import type { BlastFunAdminRole, LaunchpadDeployment, LaunchSettings, LaunchTypes, PreShareBuyInput } from "@interest-protocol/blast-launchpad-sdk/transactions";
6
+ import { LaunchpadCalls } from "@interest-protocol/blast-launchpad-sdk/transactions";
7
+ import type { TransactionObjectArgument, TransactionObjectInput, TransactionResult } from "@mysten/sui/transactions";
8
+ import { Transaction } from "@mysten/sui/transactions";
9
+ import type { MigratorVenue } from "./state.ts";
10
+ /**
11
+ * The vault's partner, when `LpVaultState.partnerId` is set: the collection
12
+ * then pays it and Blast the LP fees the vault held.
13
+ */
14
+ export type LpFeePartner = {
15
+ partner?: SharedObjectReference<false> | null;
16
+ };
17
+ export type MigratorsDeployment = {
18
+ packageId: string;
19
+ originalPackageId: string;
20
+ launchpad: LaunchpadDeployment;
21
+ /** Migrators `blast_fun_migrators::PackageVersion` checked by every protected entry. */
22
+ migratorsVersion: SharedObjectIdentity;
23
+ /** Migrators `lp_fee_policy::LpFeePolicy` read by every LP-fee collection. */
24
+ lpFeePolicy: SharedObjectIdentity;
25
+ /** Migrators `venue_config::VenueConfig`, holding each Meme's Cetus `PoolCreationCap`. */
26
+ venueConfig: SharedObjectIdentity;
27
+ };
28
+ import type { CetusMemeSide } from "@interest-protocol/blast-core/cetus";
29
+ export type { CetusMemeSide } from "@interest-protocol/blast-core/cetus";
30
+ /** The Cetus CLMM `config::GlobalConfig` every Cetus route reads. */
31
+ export type CetusObjects = {
32
+ /** Cetus CLMM `config::GlobalConfig`. */
33
+ cetusConfig: SharedObjectReference<false>;
34
+ };
35
+ /** Settings for starting a launch through an adapter in one transaction. */
36
+ export type CreateLaunchOptions = LaunchTypes & LaunchSettings & CoinSourceOptions & {
37
+ /** The `LaunchTicket<Meme>` the generated package's initializer transferred to its publisher. */
38
+ ticket: TransactionObjectInput;
39
+ /** The Meme `Currency<Meme>` in the Coin Registry, fixed at finalization. */
40
+ memeCurrency: SharedObjectReference<true>;
41
+ /** `LaunchConfig.creation_fee` in MIST, paid as an exact SUI coin. */
42
+ creationFee: bigint;
43
+ preShareBuy?: PreShareBuyInput;
44
+ };
45
+ /** Maximum Merkle proof depth the holder-reward leaf count (65,536) allows. */
46
+ export declare const MAX_HOLDER_REWARD_PROOF_DEPTH = 16;
47
+ export declare class MigratorCalls {
48
+ #private;
49
+ readonly deployment: MigratorsDeployment;
50
+ readonly launchpad: LaunchpadCalls;
51
+ constructor(deployment: MigratorsDeployment);
52
+ /** The adapter witness type a launch stores as its `migration_witness`. */
53
+ migrationWitnessType(venue: MigratorVenue): string;
54
+ signIn(options: {
55
+ adminCap: TransactionObjectInput;
56
+ role: BlastFunAdminRole;
57
+ }): (tx: Transaction) => TransactionObjectArgument;
58
+ /**
59
+ * Starts a Cetus launch at `tickSpacing`: Cetus derives the fee rate, and the
60
+ * Meme type's single `PoolCreationCap` is minted and reserved for the pair.
61
+ * Returns the `LaunchInitializer`, which the same PTB must finalize.
62
+ */
63
+ newCetusLaunch(options: LaunchTypes & CetusObjects & {
64
+ ticket: TransactionObjectInput;
65
+ cetusPools: SharedObjectReference<true>;
66
+ tickSpacing: number;
67
+ }): (tx: Transaction) => TransactionResult;
68
+ /**
69
+ * Starts a Bluefin launch at the creator's tier (tick spacing 1-400, fee rate
70
+ * 1-20,000, Bluefin's own bounds). Returns the `LaunchInitializer`.
71
+ */
72
+ newBluefinLaunch(options: LaunchTypes & {
73
+ ticket: TransactionObjectInput;
74
+ tickSpacing: number;
75
+ feeRate: bigint;
76
+ }): (tx: Transaction) => TransactionResult;
77
+ /**
78
+ * Migrates a MigrationReady Cetus launch: creates the pool with the reserved
79
+ * capability, seeds full-range liquidity, and burns the position through
80
+ * Cetus LP Burn. Anyone may call it.
81
+ */
82
+ migrateCetus(options: LaunchTypes & CetusObjects & {
83
+ memeSide: CetusMemeSide;
84
+ launch: SharedObjectReference<true>;
85
+ memeCurrency: SharedObjectReference<true>;
86
+ cetusPools: SharedObjectReference<true>;
87
+ /** Cetus LP Burn `lp_burn::BurnManager`. */
88
+ burnManager: SharedObjectReference<true>;
89
+ }): (tx: Transaction) => void;
90
+ /**
91
+ * Migrates a MigrationReady Bluefin launch into a new `Pool<Meme, Quote>`.
92
+ * `creationFee` must be exactly Bluefin's configured SUI pool-creation fee.
93
+ */
94
+ migrateBluefin(options: LaunchTypes & {
95
+ launch: SharedObjectReference<true>;
96
+ memeCurrency: SharedObjectReference<true>;
97
+ quoteCurrency: SharedObjectReference<false>;
98
+ bluefinConfig: SharedObjectReference<true>;
99
+ creationFee: TransactionObjectInput;
100
+ }): (tx: Transaction) => void;
101
+ /**
102
+ * Collects the burned migration position's and the auto-LP position's fees,
103
+ * pays Blast's live share, splits the rest, burns the burn share's Meme, and
104
+ * adds the auto-LP share back. Anyone may call it.
105
+ */
106
+ collectCetusFees(options: LaunchTypes & CetusObjects & {
107
+ memeSide: CetusMemeSide;
108
+ vault: SharedObjectReference<true>;
109
+ memeCurrency: SharedObjectReference<true>;
110
+ burnManager: SharedObjectReference<false>;
111
+ pool: SharedObjectReference<true>;
112
+ }): (tx: Transaction) => void;
113
+ /** Collects, splits, burns, and adds auto-LP for a Bluefin vault. Anyone may call it. */
114
+ collectBluefinFees(options: LaunchTypes & {
115
+ vault: SharedObjectReference<true>;
116
+ memeCurrency: SharedObjectReference<true>;
117
+ bluefinConfig: SharedObjectReference<false>;
118
+ pool: SharedObjectReference<true>;
119
+ }): (tx: Transaction) => void;
120
+ /**
121
+ * Settles the fees accrued under the current split, then commits `feeSplit`
122
+ * as the vault's split. Only the launch's live `CurveFeeCap` authorizes it.
123
+ * `launch` is read immutably by Move.
124
+ */
125
+ settleAndUpdateCetusFeeSplit(options: LaunchTypes & CetusObjects & {
126
+ memeSide: CetusMemeSide;
127
+ vault: SharedObjectReference<true>;
128
+ launch: SharedObjectReference;
129
+ curveFeeCap: TransactionObjectInput;
130
+ memeCurrency: SharedObjectReference<true>;
131
+ burnManager: SharedObjectReference<false>;
132
+ pool: SharedObjectReference<true>;
133
+ feeSplit: FeeSplit;
134
+ }): (tx: Transaction) => void;
135
+ /** Bluefin counterpart of `settleAndUpdateCetusFeeSplit`. */
136
+ settleAndUpdateBluefinFeeSplit(options: LaunchTypes & {
137
+ vault: SharedObjectReference<true>;
138
+ launch: SharedObjectReference;
139
+ curveFeeCap: TransactionObjectInput;
140
+ memeCurrency: SharedObjectReference<true>;
141
+ bluefinConfig: SharedObjectReference<false>;
142
+ pool: SharedObjectReference<true>;
143
+ feeSplit: FeeSplit;
144
+ }): (tx: Transaction) => void;
145
+ /**
146
+ * Swaps `quoteIn` atomic units of the vault's burn Quote for Meme in its
147
+ * Cetus pool and burns it, under a `BuybackAdmin` witness. The contract
148
+ * aborts with `EBuybackQuoteOutOfRange` when `quoteIn` exceeds the vault's
149
+ * burn Quote, and unless the swap returns at least `minMemeOut`; set it from
150
+ * an off-chain price, since anyone can move the pool's price within a
151
+ * transaction. Unspent Quote waits for the next buyback.
152
+ */
153
+ buybackAndBurnCetus(options: LaunchTypes & CetusObjects & {
154
+ memeSide: CetusMemeSide;
155
+ vault: SharedObjectReference<true>;
156
+ adminWitness: TransactionObjectInput;
157
+ memeCurrency: SharedObjectReference<true>;
158
+ pool: SharedObjectReference<true>;
159
+ quoteIn: bigint;
160
+ minMemeOut: bigint;
161
+ }): (tx: Transaction) => void;
162
+ /** Bluefin counterpart of `buybackAndBurnCetus`. */
163
+ buybackAndBurnBluefin(options: LaunchTypes & {
164
+ vault: SharedObjectReference<true>;
165
+ adminWitness: TransactionObjectInput;
166
+ memeCurrency: SharedObjectReference<true>;
167
+ bluefinConfig: SharedObjectReference<false>;
168
+ pool: SharedObjectReference<true>;
169
+ quoteIn: bigint;
170
+ minMemeOut: bigint;
171
+ }): (tx: Transaction) => void;
172
+ /**
173
+ * Claims the creator's accrued LP fees with the launch's live `CurveFeeCap`.
174
+ * `launch` is read immutably by Move.
175
+ */
176
+ claimCreatorFees(options: LaunchTypes & {
177
+ vault: SharedObjectReference<true>;
178
+ launch: SharedObjectReference;
179
+ curveFeeCap: TransactionObjectInput;
180
+ }): (tx: Transaction) => TransactionResult;
181
+ /**
182
+ * `vault::claim_protocol_lp_fees_with_partner`: pays a partnered vault's held
183
+ * Blast LP fees, the launch's partner its cut in force of each asset, rounded
184
+ * down, and the `LpFeePolicy` destination the rest. Anyone may call it;
185
+ * holding nothing pays nothing.
186
+ */
187
+ claimProtocolLpFeesWithPartner(options: LaunchTypes & {
188
+ vault: SharedObjectReference<true>;
189
+ partner: SharedObjectReference<false>;
190
+ }): (tx: Transaction) => void;
191
+ /** Claims the protocol-owned migration residuals under a `TreasuryAdmin` witness. */
192
+ claimProtocolFees(options: LaunchTypes & {
193
+ vault: SharedObjectReference<true>;
194
+ adminWitness: TransactionObjectInput;
195
+ }): (tx: Transaction) => TransactionResult;
196
+ /** Changes Blast's default Meme and Quote LP-fee shares for coins without their own pair (`FeeAdmin`). */
197
+ setLpFeeDefaultShares(options: {
198
+ adminWitness: TransactionObjectInput;
199
+ memeBps: bigint;
200
+ quoteBps: bigint;
201
+ }): (tx: Transaction) => void;
202
+ /** Sets Blast's LP-fee shares for one original Meme type (`FeeAdmin`). */
203
+ setLpFeeCoinShares(options: {
204
+ memeType: string;
205
+ adminWitness: TransactionObjectInput;
206
+ memeBps: bigint;
207
+ quoteBps: bigint;
208
+ }): (tx: Transaction) => void;
209
+ /** Removes one Meme type's own pair so its collections use the defaults again (`FeeAdmin`). */
210
+ clearLpFeeCoinShares(options: {
211
+ memeType: string;
212
+ adminWitness: TransactionObjectInput;
213
+ }): (tx: Transaction) => void;
214
+ /** Redirects every later protocol LP-fee payout (`TreasuryAdmin`). */
215
+ setLpFeeProtocolDestination(options: {
216
+ adminWitness: TransactionObjectInput;
217
+ destination: string;
218
+ }): (tx: Transaction) => void;
219
+ /**
220
+ * Publishes a holder-reward round from a validated manifest, reserving its
221
+ * budget from the vault's rewards balance, and shares the `Round`
222
+ * (`RewardsAdmin`).
223
+ */
224
+ publishHolderRewardRound(options: LaunchTypes & {
225
+ vault: SharedObjectReference<true>;
226
+ adminWitness: TransactionObjectInput;
227
+ manifest: RewardManifest;
228
+ }): (tx: Transaction) => void;
229
+ /** Relays one allocation's proof; the round pays its committed beneficiary. */
230
+ claimHolderReward(options: LaunchTypes & {
231
+ round: SharedObjectReference<true>;
232
+ allocation: RewardProof;
233
+ }): (tx: Transaction) => void;
234
+ }
235
+ export declare class MigratorTransactions {
236
+ #private;
237
+ readonly call: MigratorCalls;
238
+ constructor(deployment: MigratorsDeployment, options?: CoinSourceOptions);
239
+ /**
240
+ * Starts, configures, finalizes, and shares a Cetus launch atomically, with
241
+ * an optional purchase on the owned launch, routed to its recipient.
242
+ */
243
+ createCetusLaunch(options: CreateLaunchOptions & CetusObjects & {
244
+ cetusPools: SharedObjectReference<true>;
245
+ tickSpacing: number;
246
+ }): Transaction;
247
+ /** Bluefin counterpart of `createCetusLaunch`. */
248
+ createBluefinLaunch(options: CreateLaunchOptions & {
249
+ tickSpacing: number;
250
+ feeRate: bigint;
251
+ }): Transaction;
252
+ migrateCetus(options: Parameters<MigratorCalls["migrateCetus"]>[0]): Transaction;
253
+ /** Pays Bluefin's SUI pool-creation fee as an exact-balance coin. */
254
+ migrateBluefin(options: Omit<Parameters<MigratorCalls["migrateBluefin"]>[0], "creationFee"> & {
255
+ creationFee: bigint;
256
+ } & CoinSourceOptions): Transaction;
257
+ /** Then pays the vault's partner when `partner` is given; see `claimProtocolLpFeesWithPartner`. */
258
+ collectCetusFees(options: Parameters<MigratorCalls["collectCetusFees"]>[0] & LpFeePartner): Transaction;
259
+ /** Then pays the vault's partner when `partner` is given; see `claimProtocolLpFeesWithPartner`. */
260
+ collectBluefinFees(options: Parameters<MigratorCalls["collectBluefinFees"]>[0] & LpFeePartner): Transaction;
261
+ /** Pays a partnered vault's partner and Blast the LP fees its collections held. */
262
+ claimProtocolLpFeesWithPartner(options: Parameters<MigratorCalls["claimProtocolLpFeesWithPartner"]>[0]): Transaction;
263
+ settleAndUpdateCetusFeeSplit(options: Omit<Parameters<MigratorCalls["settleAndUpdateCetusFeeSplit"]>[0], "curveFeeCap"> & {
264
+ curveFeeCapId: string;
265
+ }): Transaction;
266
+ settleAndUpdateBluefinFeeSplit(options: Omit<Parameters<MigratorCalls["settleAndUpdateBluefinFeeSplit"]>[0], "curveFeeCap"> & {
267
+ curveFeeCapId: string;
268
+ }): Transaction;
269
+ claimCreatorFees(options: LaunchTypes & {
270
+ vault: SharedObjectReference<true>;
271
+ launch: SharedObjectReference;
272
+ curveFeeCapId: string;
273
+ recipient: string;
274
+ }): Transaction;
275
+ claimProtocolFees(options: LaunchTypes & {
276
+ vault: SharedObjectReference<true>;
277
+ adminCapId: string;
278
+ recipient: string;
279
+ }): Transaction;
280
+ setLpFeeDefaultShares(options: {
281
+ adminCapId: string;
282
+ memeBps: bigint;
283
+ quoteBps: bigint;
284
+ }): Transaction;
285
+ setLpFeeCoinShares(options: {
286
+ memeType: string;
287
+ adminCapId: string;
288
+ memeBps: bigint;
289
+ quoteBps: bigint;
290
+ }): Transaction;
291
+ clearLpFeeCoinShares(options: {
292
+ memeType: string;
293
+ adminCapId: string;
294
+ }): Transaction;
295
+ setLpFeeProtocolDestination(options: {
296
+ adminCapId: string;
297
+ destination: string;
298
+ }): Transaction;
299
+ buybackAndBurnCetus(options: Omit<Parameters<MigratorCalls["buybackAndBurnCetus"]>[0], "adminWitness"> & {
300
+ adminCapId: string;
301
+ }): Transaction;
302
+ buybackAndBurnBluefin(options: Omit<Parameters<MigratorCalls["buybackAndBurnBluefin"]>[0], "adminWitness"> & {
303
+ adminCapId: string;
304
+ }): Transaction;
305
+ publishHolderRewardRound(options: Omit<Parameters<MigratorCalls["publishHolderRewardRound"]>[0], "adminWitness"> & {
306
+ adminCapId: string;
307
+ }): Transaction;
308
+ /** Relays up to `allocations.length` proofs of one round in a single PTB. */
309
+ claimHolderRewards(options: LaunchTypes & {
310
+ round: SharedObjectReference<true>;
311
+ allocations: readonly RewardProof[];
312
+ }): Transaction;
313
+ }
314
+ //# sourceMappingURL=transactions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}