@metaplex-foundation/genesis 0.20.4 → 0.21.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 (117) hide show
  1. package/README.md +90 -0
  2. package/dist/src/api/client.d.ts +70 -0
  3. package/dist/src/api/client.js +186 -0
  4. package/dist/src/api/client.js.map +1 -0
  5. package/dist/src/api/errors.d.ts +19 -0
  6. package/dist/src/api/errors.js +39 -0
  7. package/dist/src/api/errors.js.map +1 -0
  8. package/dist/src/api/index.d.ts +6 -0
  9. package/dist/src/api/index.js +22 -0
  10. package/dist/src/api/index.js.map +1 -0
  11. package/dist/src/api/payloadBuilder.d.ts +19 -0
  12. package/dist/src/api/payloadBuilder.js +241 -0
  13. package/dist/src/api/payloadBuilder.js.map +1 -0
  14. package/dist/src/api/transactionHelper.d.ts +20 -0
  15. package/dist/src/api/transactionHelper.js +45 -0
  16. package/dist/src/api/transactionHelper.js.map +1 -0
  17. package/dist/src/api/types.d.ts +166 -0
  18. package/dist/src/api/types.js +3 -0
  19. package/dist/src/api/types.js.map +1 -0
  20. package/dist/src/conditions.d.ts +40 -1
  21. package/dist/src/conditions.js +43 -1
  22. package/dist/src/conditions.js.map +1 -1
  23. package/dist/src/generated/accounts/genesisAccountV2.d.ts +3 -0
  24. package/dist/src/generated/accounts/genesisAccountV2.js +4 -2
  25. package/dist/src/generated/accounts/genesisAccountV2.js.map +1 -1
  26. package/dist/src/generated/accounts/launchPoolBucketV2.js +2 -2
  27. package/dist/src/generated/errors/genesis.d.ts +12 -0
  28. package/dist/src/generated/errors/genesis.js +23 -1
  29. package/dist/src/generated/errors/genesis.js.map +1 -1
  30. package/dist/src/generated/instructions/addBondingCurveBucketV2Extensions.js +1 -1
  31. package/dist/src/generated/instructions/addConstantProductBondingCurveBucketV2.js +1 -1
  32. package/dist/src/generated/instructions/addConstantProductBondingCurveBucketV2Base.js +1 -1
  33. package/dist/src/generated/instructions/addLaunchPoolBucketV2.d.ts +7 -7
  34. package/dist/src/generated/instructions/addLaunchPoolBucketV2.js +28 -10
  35. package/dist/src/generated/instructions/addLaunchPoolBucketV2.js.map +1 -1
  36. package/dist/src/generated/instructions/addLaunchPoolBucketV2Base.js +1 -1
  37. package/dist/src/generated/instructions/addLaunchPoolBucketV2Extensions.js +1 -1
  38. package/dist/src/generated/instructions/addPresaleBucketV2.js +1 -1
  39. package/dist/src/generated/instructions/addPresaleBucketV2Base.js +1 -1
  40. package/dist/src/generated/instructions/addPresaleBucketV2Extensions.js +1 -1
  41. package/dist/src/generated/instructions/addRaydiumCpmmBucketV2.js +1 -1
  42. package/dist/src/generated/instructions/addRaydiumCpmmBucketV2Base.js +1 -1
  43. package/dist/src/generated/instructions/addRaydiumCpmmBucketV2Extensions.js +1 -1
  44. package/dist/src/generated/instructions/addStreamflowBucketV2.js +1 -1
  45. package/dist/src/generated/instructions/addUnlockedBucketV2.js +1 -1
  46. package/dist/src/generated/instructions/addUnlockedBucketV2Base.js +1 -1
  47. package/dist/src/generated/instructions/addUnlockedBucketV2Extensions.js +1 -1
  48. package/dist/src/generated/instructions/addVaultBucketV2.js +1 -1
  49. package/dist/src/generated/instructions/addVaultBucketV2Base.js +1 -1
  50. package/dist/src/generated/instructions/addVaultBucketV2Extensions.js +1 -1
  51. package/dist/src/generated/instructions/claimLaunchPoolV2.js +1 -1
  52. package/dist/src/generated/instructions/claimPresaleV2.js +1 -1
  53. package/dist/src/generated/instructions/claimRaydiumCpmmLpTokensV2.js +1 -1
  54. package/dist/src/generated/instructions/claimUnlockedV2.js +1 -1
  55. package/dist/src/generated/instructions/collectRaydiumCpmmFeesV2.d.ts +14 -10
  56. package/dist/src/generated/instructions/collectRaydiumCpmmFeesV2.js +60 -10
  57. package/dist/src/generated/instructions/collectRaydiumCpmmFeesV2.js.map +1 -1
  58. package/dist/src/generated/instructions/depositLaunchPoolV2.js +1 -1
  59. package/dist/src/generated/instructions/depositPresaleV2.js +1 -1
  60. package/dist/src/generated/instructions/depositVaultV2.js +1 -1
  61. package/dist/src/generated/instructions/graduateToRaydiumCpmmV2.js +1 -1
  62. package/dist/src/generated/instructions/index.d.ts +1 -0
  63. package/dist/src/generated/instructions/index.js +1 -0
  64. package/dist/src/generated/instructions/index.js.map +1 -1
  65. package/dist/src/generated/instructions/lockStreamflowV2.js +1 -1
  66. package/dist/src/generated/instructions/refundLaunchPoolV2.js +1 -1
  67. package/dist/src/generated/instructions/refundVaultDepositV2.js +1 -1
  68. package/dist/src/generated/instructions/removeBondingCurveBucketV2Extensions.js +1 -1
  69. package/dist/src/generated/instructions/removeLaunchPoolBucketV2Extensions.js +1 -1
  70. package/dist/src/generated/instructions/removePresaleBucketV2Extensions.js +1 -1
  71. package/dist/src/generated/instructions/removeRaydiumCpmmBucketV2Extensions.js +1 -1
  72. package/dist/src/generated/instructions/removeUnlockedBucketV2Extensions.js +1 -1
  73. package/dist/src/generated/instructions/removeVaultBucketV2Extensions.js +1 -1
  74. package/dist/src/generated/instructions/setBondingCurveBucketV2Behaviors.js +1 -1
  75. package/dist/src/generated/instructions/setBondingCurvePausedStateV2.js +1 -1
  76. package/dist/src/generated/instructions/setLaunchPoolBucketV2Behaviors.js +1 -1
  77. package/dist/src/generated/instructions/setLaunchTypeV2.d.ts +32 -0
  78. package/dist/src/generated/instructions/setLaunchTypeV2.js +73 -0
  79. package/dist/src/generated/instructions/setLaunchTypeV2.js.map +1 -0
  80. package/dist/src/generated/instructions/setPresaleBucketV2Behaviors.js +1 -1
  81. package/dist/src/generated/instructions/setRaydiumCpmmBucketV2Behaviors.js +1 -1
  82. package/dist/src/generated/instructions/setUnlockedBucketV2Behaviors.js +1 -1
  83. package/dist/src/generated/instructions/setUnlockedBucketV2Behaviors.js.map +1 -1
  84. package/dist/src/generated/instructions/setVaultBucketV2Behaviors.js +1 -1
  85. package/dist/src/generated/instructions/swapBondingCurveV2.js +1 -1
  86. package/dist/src/generated/instructions/swapVaultToBondingCurveV2.js +1 -1
  87. package/dist/src/generated/instructions/updateBondingCurveBucketV2.js +1 -1
  88. package/dist/src/generated/instructions/updateGenesisV2.js +1 -1
  89. package/dist/src/generated/instructions/updateLaunchPoolBucketV2.js +1 -1
  90. package/dist/src/generated/instructions/updatePresaleBucketV2.js +1 -1
  91. package/dist/src/generated/instructions/updateRaydiumCpmmBucketV2.js +1 -1
  92. package/dist/src/generated/instructions/updateUnlockedBucketV2.js +1 -1
  93. package/dist/src/generated/instructions/updateVaultBucketV2.js +1 -1
  94. package/dist/src/generated/instructions/withdrawLaunchPoolV2.js +1 -1
  95. package/dist/src/generated/instructions/withdrawVaultV2.js +1 -1
  96. package/dist/src/generated/types/index.d.ts +2 -0
  97. package/dist/src/generated/types/index.js +2 -0
  98. package/dist/src/generated/types/index.js.map +1 -1
  99. package/dist/src/generated/types/launchPoolV2Extension.d.ts +7 -7
  100. package/dist/src/generated/types/launchPoolV2Extension.js +3 -3
  101. package/dist/src/generated/types/launchPoolV2Extension.js.map +1 -1
  102. package/dist/src/generated/types/launchPoolV2Extensions.d.ts +7 -7
  103. package/dist/src/generated/types/launchPoolV2Extensions.js +27 -9
  104. package/dist/src/generated/types/launchPoolV2Extensions.js.map +1 -1
  105. package/dist/src/generated/types/launchType.d.ts +15 -0
  106. package/dist/src/generated/types/launchType.js +24 -0
  107. package/dist/src/generated/types/launchType.js.map +1 -0
  108. package/dist/src/generated/types/linearBpsScheduleV2.d.ts +26 -0
  109. package/dist/src/generated/types/linearBpsScheduleV2.js +24 -0
  110. package/dist/src/generated/types/linearBpsScheduleV2.js.map +1 -0
  111. package/dist/src/index.d.ts +1 -0
  112. package/dist/src/index.js +1 -0
  113. package/dist/src/index.js.map +1 -1
  114. package/dist/src/schedule.d.ts +20 -1
  115. package/dist/src/schedule.js +90 -1
  116. package/dist/src/schedule.js.map +1 -1
  117. package/package.json +1 -1
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCreateLaunchPayload = void 0;
4
+ const errors_1 = require("./errors");
5
+ // ─── Constants ──────────────────────────────────────────────────────────────
6
+ const PROJECT_TOTAL_SUPPLY = 1000000000;
7
+ const DEPOSIT_DURATION_MS = 48 * 60 * 60 * 1000; // 48 hours
8
+ const MAX_VALID_JS_DATE_ISO = '9999-12-31T23:59:59.999Z';
9
+ const TOTAL_BPS = 10000;
10
+ const RAYDIUM_MIN_BPS = 2000;
11
+ const DEFAULT_UNLOCKED_BUCKET_NAME = 'Creator Allocation';
12
+ // ─── Quote Mint Resolution ──────────────────────────────────────────────────
13
+ const USDC_MINTS = {
14
+ 'solana-mainnet': 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
15
+ 'solana-devnet': '4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU',
16
+ };
17
+ function resolveQuoteMint(input, network) {
18
+ if (!input || input === 'SOL')
19
+ return undefined;
20
+ if (input === 'USDC')
21
+ return USDC_MINTS[network];
22
+ throw (0, errors_1.genesisValidationError)(`Unsupported quote mint: '${input}'. Must be 'SOL' or 'USDC'.`, 'quoteMint');
23
+ }
24
+ // ─── Helpers ────────────────────────────────────────────────────────────────
25
+ function toIsoString(time) {
26
+ if (typeof time === 'string') {
27
+ const d = new Date(time);
28
+ if (Number.isNaN(d.getTime())) {
29
+ throw (0, errors_1.genesisValidationError)(`Invalid date string: ${time}`, 'time');
30
+ }
31
+ return d.toISOString();
32
+ }
33
+ if (Number.isNaN(time.getTime())) {
34
+ throw (0, errors_1.genesisValidationError)(`Invalid date: ${time}`, 'time');
35
+ }
36
+ return time.toISOString();
37
+ }
38
+ function toMs(time) {
39
+ const d = typeof time === 'string' ? new Date(time) : time;
40
+ return d.getTime();
41
+ }
42
+ function toKeyString(key) {
43
+ return typeof key === 'string' ? key : key.toString();
44
+ }
45
+ function timeAbsolute(time) {
46
+ return { type: 'TimeAbsolute', timestamp: toIsoString(time) };
47
+ }
48
+ // ─── Validation ─────────────────────────────────────────────────────────────
49
+ function validateInput(input) {
50
+ const { token, launch, launchType } = input;
51
+ if (!token.name || token.name.length < 1 || token.name.length > 32) {
52
+ throw (0, errors_1.genesisValidationError)('Token name must be between 1 and 32 characters', 'token.name');
53
+ }
54
+ if (!token.symbol || token.symbol.length < 1 || token.symbol.length > 10) {
55
+ throw (0, errors_1.genesisValidationError)('Token symbol must be between 1 and 10 characters', 'token.symbol');
56
+ }
57
+ try {
58
+ const url = new URL(token.image);
59
+ if (url.protocol !== 'https:' && url.protocol !== 'http:') {
60
+ throw new Error();
61
+ }
62
+ }
63
+ catch {
64
+ throw (0, errors_1.genesisValidationError)('Token image must be a valid URL', 'token.image');
65
+ }
66
+ if (token.description && token.description.length > 250) {
67
+ throw (0, errors_1.genesisValidationError)('Token description must be at most 250 characters', 'token.description');
68
+ }
69
+ if (launchType !== 'project') {
70
+ throw (0, errors_1.genesisValidationError)('Invalid launch type', 'launchType');
71
+ }
72
+ const { launchpool, lockedAllocations } = launch;
73
+ if (launchpool.tokenAllocation <= 0) {
74
+ throw (0, errors_1.genesisValidationError)('Launchpool token allocation must be greater than 0', 'launchpool.tokenAllocation');
75
+ }
76
+ if (launchpool.raiseGoal <= 0) {
77
+ throw (0, errors_1.genesisValidationError)('Raise goal must be greater than 0', 'launchpool.raiseGoal');
78
+ }
79
+ if (launchpool.raydiumLiquidityBps < RAYDIUM_MIN_BPS ||
80
+ launchpool.raydiumLiquidityBps > TOTAL_BPS) {
81
+ throw (0, errors_1.genesisValidationError)(`Raydium liquidity must be between ${RAYDIUM_MIN_BPS} and ${TOTAL_BPS} basis points`, 'launchpool.raydiumLiquidityBps');
82
+ }
83
+ let totalAllocated = launchpool.tokenAllocation;
84
+ if (lockedAllocations) {
85
+ for (const alloc of lockedAllocations) {
86
+ if (alloc.tokenAmount <= 0) {
87
+ throw (0, errors_1.genesisValidationError)('Locked allocation token amount must be > 0', 'lockedAllocations.tokenAmount');
88
+ }
89
+ totalAllocated += alloc.tokenAmount;
90
+ }
91
+ }
92
+ if (totalAllocated > PROJECT_TOTAL_SUPPLY) {
93
+ throw (0, errors_1.genesisValidationError)(`Total allocated tokens (${totalAllocated}) exceeds total supply (${PROJECT_TOTAL_SUPPLY})`, 'allocations');
94
+ }
95
+ }
96
+ // ─── Payload Builder ────────────────────────────────────────────────────────
97
+ /**
98
+ * Builds the API payload for `/v1/launches/create` from simplified input.
99
+ */
100
+ function buildCreateLaunchPayload(input) {
101
+ validateInput(input);
102
+ const { launchType, launch } = input;
103
+ const { launchpool, lockedAllocations } = launch;
104
+ const network = input.network ?? 'solana-mainnet';
105
+ const quoteMint = resolveQuoteMint(input.quoteMint, network);
106
+ const walletStr = toKeyString(input.wallet);
107
+ // ── Launchpool timing ─────────────────────────────────────────────────
108
+ const depositStartMs = toMs(launch.launchpool.depositStartTime);
109
+ const depositEndMs = depositStartMs + DEPOSIT_DURATION_MS;
110
+ const depositStartCondition = timeAbsolute(new Date(depositStartMs));
111
+ const depositEndCondition = timeAbsolute(new Date(depositEndMs));
112
+ const claimEndCondition = timeAbsolute(MAX_VALID_JS_DATE_ISO);
113
+ // Claim start is relative to Raydium graduation (not an absolute time).
114
+ // The server resolves the bucket PDA address at transaction build time.
115
+ const claimStartCondition = {
116
+ type: 'TimeRelativeToUnknownAddress',
117
+ bucketType: 'raydiumV2',
118
+ bucketIndex: 0,
119
+ bucketTime: 'Graduate',
120
+ timeOffset: 0,
121
+ };
122
+ // ── Fund flows ────────────────────────────────────────────────────────
123
+ const raydiumBps = launchpool.raydiumLiquidityBps;
124
+ const unlockedBps = TOTAL_BPS - raydiumBps;
125
+ const raydiumLpSupply = (launchpool.tokenAllocation * raydiumBps) / TOTAL_BPS;
126
+ const fundFlows = [
127
+ {
128
+ type: 'MinimumQuoteTokenThreshold',
129
+ recipient: walletStr,
130
+ claimStartCondition: depositEndCondition,
131
+ claimEndCondition,
132
+ },
133
+ {
134
+ type: 'UnlockedFunds',
135
+ percentageBps: unlockedBps,
136
+ recipient: toKeyString(launchpool.fundsRecipient),
137
+ claimStartCondition,
138
+ claimEndCondition,
139
+ },
140
+ {
141
+ type: 'RaydiumLP',
142
+ percentageBps: raydiumBps,
143
+ supply: raydiumLpSupply,
144
+ startCondition: depositEndCondition,
145
+ lpLockSchedule: {
146
+ startCondition: depositEndCondition,
147
+ cliffCondition: depositEndCondition,
148
+ },
149
+ },
150
+ ];
151
+ // ── Allocations ───────────────────────────────────────────────────────
152
+ const allocations = [];
153
+ // Launchpool (always first)
154
+ allocations.push({
155
+ type: 'launchpoolV2',
156
+ name: 'Launchpool',
157
+ supply: launchpool.tokenAllocation,
158
+ launchpoolV2: {
159
+ depositStartCondition,
160
+ depositEndCondition,
161
+ claimStartCondition,
162
+ claimEndCondition,
163
+ minimumQuoteTokenThreshold: launchpool.raiseGoal,
164
+ depositBonus: {},
165
+ withdrawPenalty: {},
166
+ fundFlows,
167
+ },
168
+ });
169
+ // Locked/vesting allocations (Streamflow)
170
+ if (lockedAllocations) {
171
+ for (const alloc of lockedAllocations) {
172
+ allocations.push({
173
+ type: 'lockedV2',
174
+ name: alloc.name,
175
+ supply: alloc.tokenAmount,
176
+ lockedV2: {
177
+ type: 'streamflow',
178
+ vesting: {
179
+ recipient: toKeyString(alloc.recipient),
180
+ startTime: toIsoString(alloc.vestingStartTime),
181
+ durationValue: alloc.vestingDuration.value,
182
+ durationUnit: alloc.vestingDuration.unit,
183
+ unlockSchedule: alloc.unlockSchedule,
184
+ cliff: alloc.cliff
185
+ ? {
186
+ enabled: true,
187
+ durationValue: alloc.cliff.duration.value,
188
+ durationUnit: alloc.cliff.duration.unit,
189
+ ...(alloc.cliff.unlockAmount !== undefined
190
+ ? { unlockAmount: alloc.cliff.unlockAmount }
191
+ : {}),
192
+ }
193
+ : { enabled: false },
194
+ },
195
+ },
196
+ });
197
+ }
198
+ }
199
+ // Unlocked allocation for remaining supply
200
+ let totalAllocated = launchpool.tokenAllocation + raydiumLpSupply;
201
+ if (lockedAllocations) {
202
+ for (const alloc of lockedAllocations) {
203
+ totalAllocated += alloc.tokenAmount;
204
+ }
205
+ }
206
+ const remainingSupply = PROJECT_TOTAL_SUPPLY - totalAllocated;
207
+ if (remainingSupply > 0) {
208
+ allocations.push({
209
+ type: 'unlockedV2',
210
+ name: DEFAULT_UNLOCKED_BUCKET_NAME,
211
+ supply: remainingSupply,
212
+ unlockedV2: {
213
+ recipient: walletStr,
214
+ claimStartCondition,
215
+ claimEndCondition,
216
+ },
217
+ });
218
+ }
219
+ // ── Assemble payload ──────────────────────────────────────────────────
220
+ return {
221
+ wallet: walletStr,
222
+ launch: {
223
+ type: launchType,
224
+ name: input.token.name,
225
+ symbol: input.token.symbol,
226
+ image: input.token.image,
227
+ ...(input.token.description
228
+ ? { description: input.token.description }
229
+ : {}),
230
+ ...(input.token.externalLinks
231
+ ? { externalLinks: input.token.externalLinks }
232
+ : {}),
233
+ publicKey: walletStr,
234
+ ...(network !== 'solana-mainnet' ? { network } : {}),
235
+ ...(quoteMint ? { quoteMint } : {}),
236
+ allocations,
237
+ },
238
+ };
239
+ }
240
+ exports.buildCreateLaunchPayload = buildCreateLaunchPayload;
241
+ //# sourceMappingURL=payloadBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadBuilder.js","sourceRoot":"","sources":["../../../src/api/payloadBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Umi } from '@metaplex-foundation/umi';
2
+ import { CreateLaunchResponse, SignAndSendOptions } from './types';
3
+ /**
4
+ * Signs and sends the transactions returned by {@link createLaunch}.
5
+ *
6
+ * Transactions are sent **sequentially** and each is confirmed before
7
+ * sending the next.
8
+ *
9
+ * @param umi - Umi instance configured with the signer identity and RPC
10
+ * @param createResponse - The response from {@link createLaunch}
11
+ * @param options - Optional confirmation settings
12
+ * @returns Array of transaction signatures in the same order as the input transactions
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const createResult = await createLaunch(config, umi, input);
17
+ * const signatures = await signAndSendLaunchTransactions(umi, createResult);
18
+ * ```
19
+ */
20
+ export declare function signAndSendLaunchTransactions(umi: Umi, createResponse: CreateLaunchResponse, options?: SignAndSendOptions): Promise<Uint8Array[]>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signAndSendLaunchTransactions = void 0;
4
+ /**
5
+ * Signs and sends the transactions returned by {@link createLaunch}.
6
+ *
7
+ * Transactions are sent **sequentially** and each is confirmed before
8
+ * sending the next.
9
+ *
10
+ * @param umi - Umi instance configured with the signer identity and RPC
11
+ * @param createResponse - The response from {@link createLaunch}
12
+ * @param options - Optional confirmation settings
13
+ * @returns Array of transaction signatures in the same order as the input transactions
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const createResult = await createLaunch(config, umi, input);
18
+ * const signatures = await signAndSendLaunchTransactions(umi, createResult);
19
+ * ```
20
+ */
21
+ async function signAndSendLaunchTransactions(umi, createResponse, options) {
22
+ const commitment = options?.commitment ?? 'confirmed';
23
+ const preflightCommitment = options?.preflightCommitment ?? 'confirmed';
24
+ const skipPreflight = options?.skipPreflight ?? false;
25
+ const signatures = [];
26
+ for (const transaction of createResponse.transactions) {
27
+ const signedTransaction = await umi.identity.signTransaction(transaction);
28
+ const signature = await umi.rpc.sendTransaction(signedTransaction, {
29
+ skipPreflight,
30
+ commitment,
31
+ preflightCommitment,
32
+ });
33
+ await umi.rpc.confirmTransaction(signature, {
34
+ strategy: {
35
+ type: 'blockhash',
36
+ ...createResponse.blockhash,
37
+ },
38
+ commitment,
39
+ });
40
+ signatures.push(signature);
41
+ }
42
+ return signatures;
43
+ }
44
+ exports.signAndSendLaunchTransactions = signAndSendLaunchTransactions;
45
+ //# sourceMappingURL=transactionHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionHelper.js","sourceRoot":"","sources":["../../../src/api/transactionHelper.ts"],"names":[],"mappings":";;;AAKA;;;;;;;;;;;;;;;;GAgBG;AACI,KAAK,UAAU,6BAA6B,CACjD,GAAQ,EACR,cAAoC,EACpC,OAA4B;IAE5B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,WAAW,CAAC;IACtD,MAAM,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,IAAI,WAAW,CAAC;IACxE,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,KAAK,CAAC;IACtD,MAAM,UAAU,GAAiB,EAAE,CAAC;IAEpC,KAAK,MAAM,WAAW,IAAI,cAAc,CAAC,YAAY,EAAE;QACrD,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,iBAAiB,EAAE;YACjE,aAAa;YACb,UAAU;YACV,mBAAmB;SACpB,CAAC,CAAC;QACH,MAAM,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAC1C,QAAQ,EAAE;gBACR,IAAI,EAAE,WAAW;gBACjB,GAAG,cAAc,CAAC,SAAS;aAC5B;YACD,UAAU;SACX,CAAC,CAAC;QAEH,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC5B;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AA9BD,sEA8BC"}
@@ -0,0 +1,166 @@
1
+ import { BlockhashWithExpiryBlockHeight, PublicKey, RpcSendTransactionOptions, Transaction } from '@metaplex-foundation/umi';
2
+ export type SvmNetwork = 'solana-mainnet' | 'solana-devnet';
3
+ export type TimeUnit = 'SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'TWO_WEEKS' | 'MONTH' | 'QUARTER' | 'YEAR';
4
+ /**
5
+ * Quote mint can be a friendly name ('SOL', 'USDC') or a raw mint address.
6
+ * The SDK resolves friendly names to the correct mint address per network.
7
+ */
8
+ export type QuoteMintInput = 'SOL' | 'USDC' | (string & {});
9
+ export type LaunchType = 'project';
10
+ export interface ExternalLinks {
11
+ /** Website URL */
12
+ website?: string;
13
+ /** Twitter/X handle (e.g. '@mytoken') or full URL */
14
+ twitter?: string;
15
+ /** Telegram handle (e.g. '@mytoken') or full URL */
16
+ telegram?: string;
17
+ }
18
+ export interface TokenMetadata {
19
+ /** Token name, 1-32 characters */
20
+ name: string;
21
+ /** Token ticker symbol, 1-10 characters */
22
+ symbol: string;
23
+ /** Token image URL hosted on Irys (must start with https://gateway.irys.xyz/) */
24
+ image: string;
25
+ /** Optional description, max 250 characters */
26
+ description?: string;
27
+ /** Optional social and web links */
28
+ externalLinks?: ExternalLinks;
29
+ }
30
+ export interface LaunchpoolConfig {
31
+ /**
32
+ * Number of tokens to sell via the launchpool.
33
+ * Must be a portion of the 1 billion total supply (e.g., 500_000_000).
34
+ */
35
+ tokenAllocation: number;
36
+ /**
37
+ * When the deposit period opens.
38
+ * The deposit period lasts exactly 48 hours from this time.
39
+ */
40
+ depositStartTime: Date | string;
41
+ /**
42
+ * Minimum amount of quote tokens to raise for the launch to succeed.
43
+ * Specified in whole units (e.g., 200 means 200 SOL, 25000 means 25000 USDC).
44
+ */
45
+ raiseGoal: number;
46
+ /**
47
+ * Percentage of raised funds allocated to Raydium LP, in basis points.
48
+ * Minimum 2000 (20%), maximum 10000 (100%).
49
+ * The remainder goes to the funds recipient as unlocked funds.
50
+ */
51
+ raydiumLiquidityBps: number;
52
+ /**
53
+ * Wallet address that receives the unlocked portion of raised funds.
54
+ */
55
+ fundsRecipient: PublicKey | string;
56
+ }
57
+ export interface LockedAllocation {
58
+ /** Human-readable name (e.g., 'Team', 'Advisors') for this vesting stream (max 64 chars) */
59
+ name: string;
60
+ /** Recipient wallet address */
61
+ recipient: PublicKey | string;
62
+ /** Total number of tokens in the vesting schedule */
63
+ tokenAmount: number;
64
+ /** When the vesting stream starts */
65
+ vestingStartTime: Date | string;
66
+ /** Duration of the full vesting period */
67
+ vestingDuration: {
68
+ value: number;
69
+ unit: TimeUnit;
70
+ };
71
+ /** How frequently tokens are released */
72
+ unlockSchedule: TimeUnit;
73
+ /** Optional cliff configuration */
74
+ cliff?: {
75
+ /** Duration until the cliff */
76
+ duration: {
77
+ value: number;
78
+ unit: TimeUnit;
79
+ };
80
+ /** Tokens released at cliff (in whole tokens). Defaults to linear vesting if not set. */
81
+ unlockAmount?: number;
82
+ };
83
+ }
84
+ export interface CreateLaunchInput {
85
+ /** The creator's wallet public key (will sign transactions) */
86
+ wallet: PublicKey | string;
87
+ /** Token metadata */
88
+ token: TokenMetadata;
89
+ /** Network, defaults to 'solana-mainnet' */
90
+ network?: SvmNetwork;
91
+ /**
92
+ * Quote token for the sale.
93
+ * Accepts 'SOL', 'USDC', or a raw mint address string.
94
+ * Defaults to 'SOL'.
95
+ */
96
+ quoteMint?: QuoteMintInput;
97
+ launchType: LaunchType;
98
+ launch: ProjectLaunchInput;
99
+ }
100
+ /**
101
+ * Simplified input for creating a project launch.
102
+ *
103
+ */
104
+ export interface ProjectLaunchInput {
105
+ /** Launchpool (primary sale mechanism) configuration */
106
+ launchpool: LaunchpoolConfig;
107
+ /** Optional: locked/vesting token allocations via Streamflow */
108
+ lockedAllocations?: LockedAllocation[];
109
+ }
110
+ export interface GenesisApiConfig {
111
+ /** Base URL of the Genesis API. Defaults to 'https://api.metaplex.com'. */
112
+ baseUrl?: string;
113
+ /** Custom fetch implementation. Defaults to globalThis.fetch. */
114
+ fetch?: typeof globalThis.fetch;
115
+ }
116
+ export interface RegisterLaunchInput {
117
+ /** The genesis account public key (returned by createLaunch) */
118
+ genesisAccount: PublicKey | string;
119
+ createLaunchInput: CreateLaunchInput;
120
+ }
121
+ export interface CreateLaunchResponse {
122
+ /** Deserialized Umi transactions ready to be signed and sent */
123
+ transactions: Transaction[];
124
+ /** Blockhash for transaction validity */
125
+ blockhash: BlockhashWithExpiryBlockHeight;
126
+ /** The mint address of the created token */
127
+ mintAddress: string;
128
+ /** The genesis account PDA address */
129
+ genesisAccount: string;
130
+ }
131
+ export interface RegisterLaunchResponse {
132
+ /** Whether this launch was already registered */
133
+ existing?: boolean;
134
+ /** Launch information */
135
+ launch: {
136
+ id: string;
137
+ link: string;
138
+ };
139
+ /** Token information */
140
+ token: {
141
+ id: string;
142
+ mintAddress: string;
143
+ };
144
+ }
145
+ export interface CreateAndRegisterLaunchResult {
146
+ /** Transaction signatures from signing and sending */
147
+ signatures: Uint8Array[];
148
+ /** The mint address of the created token */
149
+ mintAddress: string;
150
+ /** The genesis account PDA address */
151
+ genesisAccount: string;
152
+ /** Launch information from registration */
153
+ launch: {
154
+ id: string;
155
+ link: string;
156
+ };
157
+ /** Token information from registration */
158
+ token: {
159
+ id: string;
160
+ mintAddress: string;
161
+ };
162
+ }
163
+ export interface SignAndSendOptions extends RpcSendTransactionOptions {
164
+ /** custom tx sender which returns the signatures of the transaction */
165
+ txSender?: (txs: Transaction[]) => Promise<Uint8Array[]>;
166
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import { PublicKey } from '@metaplex-foundation/umi';
2
- import { BucketTimes, ClaimScheduleArgs, ConditionArgs } from './generated';
2
+ import { BucketTimes, ClaimScheduleArgs, ConditionArgs, LinearBpsScheduleV2Args } from './generated';
3
+ import { SchedulePoint } from './schedule';
3
4
  /**
4
5
  * Type guard to narrow a ConditionArgs to a specific variant.
5
6
  * @param kind - The discriminant to check for ('TimeAbsolute' or 'TimeRelative')
@@ -62,3 +63,41 @@ export declare function createClaimSchedule(params: {
62
63
  * ```
63
64
  */
64
65
  export declare function createNeverClaimSchedule(): ClaimScheduleArgs;
66
+ /**
67
+ * Creates a LinearBpsScheduleV2 with a TimeAbsolute start condition.
68
+ *
69
+ * @param params.startTime - Unix timestamp when the schedule begins
70
+ * @param params.duration - Duration of the schedule in seconds
71
+ * @param params.point1 - First point on the line (timeBps in [0,10000], bps)
72
+ * @param params.point2 - Second point on the line (timeBps in [0,10000], bps)
73
+ * @param params.maxBps - Upper bound for the evaluated value
74
+ */
75
+ export declare function createLinearBpsScheduleV2WithAbsoluteStart(params: {
76
+ startTime: bigint;
77
+ duration: bigint;
78
+ point1: SchedulePoint;
79
+ point2: SchedulePoint;
80
+ maxBps: number | bigint;
81
+ }): LinearBpsScheduleV2Args;
82
+ /**
83
+ * Creates a LinearBpsScheduleV2 with a TimeRelative start condition.
84
+ *
85
+ * @param params.referenceBucket - The bucket to reference
86
+ * @param params.bucketTime - Which time on the reference bucket
87
+ * @param params.timeOffset - Optional start offset in seconds relative to the reference
88
+ * bucket time. Passed to `createTimeRelativeCondition` which
89
+ * defaults to `0n` when `undefined`.
90
+ * @param params.duration - Duration of the schedule in seconds
91
+ * @param params.point1 - First point on the line
92
+ * @param params.point2 - Second point on the line
93
+ * @param params.maxBps - Upper bound for the evaluated value
94
+ */
95
+ export declare function createLinearBpsScheduleV2WithRelativeStart(params: {
96
+ referenceBucket: PublicKey;
97
+ bucketTime: BucketTimes;
98
+ timeOffset?: bigint;
99
+ duration: bigint;
100
+ point1: SchedulePoint;
101
+ point2: SchedulePoint;
102
+ maxBps: number | bigint;
103
+ }): LinearBpsScheduleV2Args;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createNeverClaimSchedule = exports.createClaimSchedule = exports.createNeverCondition = exports.createTimeRelativeCondition = exports.createTimeAbsoluteCondition = exports.isConditionArgs = void 0;
3
+ exports.createLinearBpsScheduleV2WithRelativeStart = exports.createLinearBpsScheduleV2WithAbsoluteStart = exports.createNeverClaimSchedule = exports.createClaimSchedule = exports.createNeverCondition = exports.createTimeRelativeCondition = exports.createTimeAbsoluteCondition = exports.isConditionArgs = void 0;
4
+ const schedule_1 = require("./schedule");
4
5
  /**
5
6
  * Type guard to narrow a ConditionArgs to a specific variant.
6
7
  * @param kind - The discriminant to check for ('TimeAbsolute' or 'TimeRelative')
@@ -109,4 +110,45 @@ function createNeverClaimSchedule() {
109
110
  };
110
111
  }
111
112
  exports.createNeverClaimSchedule = createNeverClaimSchedule;
113
+ // ---------------------------------------------------------------------------
114
+ // LinearBpsScheduleV2 Creators
115
+ // ---------------------------------------------------------------------------
116
+ /**
117
+ * Creates a LinearBpsScheduleV2 with a TimeAbsolute start condition.
118
+ *
119
+ * @param params.startTime - Unix timestamp when the schedule begins
120
+ * @param params.duration - Duration of the schedule in seconds
121
+ * @param params.point1 - First point on the line (timeBps in [0,10000], bps)
122
+ * @param params.point2 - Second point on the line (timeBps in [0,10000], bps)
123
+ * @param params.maxBps - Upper bound for the evaluated value
124
+ */
125
+ function createLinearBpsScheduleV2WithAbsoluteStart(params) {
126
+ return (0, schedule_1.createLinearBpsScheduleV2)(params.point1, params.point2, {
127
+ startCondition: createTimeAbsoluteCondition(params.startTime),
128
+ duration: params.duration,
129
+ maxBps: params.maxBps,
130
+ });
131
+ }
132
+ exports.createLinearBpsScheduleV2WithAbsoluteStart = createLinearBpsScheduleV2WithAbsoluteStart;
133
+ /**
134
+ * Creates a LinearBpsScheduleV2 with a TimeRelative start condition.
135
+ *
136
+ * @param params.referenceBucket - The bucket to reference
137
+ * @param params.bucketTime - Which time on the reference bucket
138
+ * @param params.timeOffset - Optional start offset in seconds relative to the reference
139
+ * bucket time. Passed to `createTimeRelativeCondition` which
140
+ * defaults to `0n` when `undefined`.
141
+ * @param params.duration - Duration of the schedule in seconds
142
+ * @param params.point1 - First point on the line
143
+ * @param params.point2 - Second point on the line
144
+ * @param params.maxBps - Upper bound for the evaluated value
145
+ */
146
+ function createLinearBpsScheduleV2WithRelativeStart(params) {
147
+ return (0, schedule_1.createLinearBpsScheduleV2)(params.point1, params.point2, {
148
+ startCondition: createTimeRelativeCondition(params.referenceBucket, params.bucketTime, params.timeOffset),
149
+ duration: params.duration,
150
+ maxBps: params.maxBps,
151
+ });
152
+ }
153
+ exports.createLinearBpsScheduleV2WithRelativeStart = createLinearBpsScheduleV2WithRelativeStart;
112
154
  //# sourceMappingURL=conditions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/conditions.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,SAAgB,eAAe,CAC7B,IAAO,EACP,KAAoB;IAEpB,OAAO,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;AAC/B,CAAC;AALD,0CAKC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;GAGG;AACH,SAAgB,2BAA2B,CAAC,IAAY;IACtD,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI;QACJ,kBAAkB,EAAE,IAAI;KACzB,CAAC;AACJ,CAAC;AAPD,kEAOC;AAED;;;;;;GAMG;AACH,SAAgB,2BAA2B,CACzC,eAA0B,EAC1B,UAAuB,EACvB,aAAqB,EAAE;IAEvB,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,UAAU;QACV,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,UAAU;QACV,MAAM,EAAE,eAAe;QACvB,kBAAkB,EAAE,IAAI;KACzB,CAAC;AACJ,CAAC;AAbD,kEAaC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO;QACL,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,kBAAkB,EAAE,IAAI;KACzB,CAAC;AACJ,CAAC;AAND,oDAMC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,SAAgB,mBAAmB,CAAC,MAMnC;IACC,OAAO;QACL,cAAc,EAAE,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS;QAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,cAAc,EAAE,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7D,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7B,CAAC;AACJ,CAAC;AAfD,kDAeC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,wBAAwB;IACtC,OAAO;QACL,cAAc,EAAE,oBAAoB,EAAE;QACtC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,cAAc,EAAE,oBAAoB,EAAE;QACtC,cAAc,EAAE,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7B,CAAC;AACJ,CAAC;AATD,4DASC"}
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/conditions.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ export type GenesisAccountV2AccountData = {
22
22
  totalAllocatedSupplyBaseToken: bigint;
23
23
  totalProceedsQuoteToken: bigint;
24
24
  fundingMode: number;
25
+ launchType: number;
25
26
  endPadding: Array<number>;
26
27
  bucketCount: number;
27
28
  };
@@ -38,6 +39,7 @@ export type GenesisAccountV2AccountDataArgs = {
38
39
  totalAllocatedSupplyBaseToken: number | bigint;
39
40
  totalProceedsQuoteToken: number | bigint;
40
41
  fundingMode: number;
42
+ launchType: number;
41
43
  endPadding: Array<number>;
42
44
  bucketCount: number;
43
45
  };
@@ -60,6 +62,7 @@ export declare function getGenesisAccountV2GpaBuilder(context: Pick<Context, 'rp
60
62
  totalAllocatedSupplyBaseToken: number | bigint;
61
63
  totalProceedsQuoteToken: number | bigint;
62
64
  fundingMode: number;
65
+ launchType: number;
63
66
  endPadding: Array<number>;
64
67
  bucketCount: number;
65
68
  }>;
@@ -25,7 +25,8 @@ function getGenesisAccountV2AccountDataSerializer() {
25
25
  ['totalAllocatedSupplyBaseToken', (0, serializers_1.u64)()],
26
26
  ['totalProceedsQuoteToken', (0, serializers_1.u64)()],
27
27
  ['fundingMode', (0, serializers_1.u8)()],
28
- ['endPadding', (0, serializers_1.array)((0, serializers_1.u8)(), { size: 3 })],
28
+ ['launchType', (0, serializers_1.u8)()],
29
+ ['endPadding', (0, serializers_1.array)((0, serializers_1.u8)(), { size: 2 })],
29
30
  ['bucketCount', (0, serializers_1.u32)()],
30
31
  ], { description: 'GenesisAccountV2AccountData' });
31
32
  }
@@ -76,7 +77,8 @@ function getGenesisAccountV2GpaBuilder(context) {
76
77
  totalAllocatedSupplyBaseToken: [112, (0, serializers_1.u64)()],
77
78
  totalProceedsQuoteToken: [120, (0, serializers_1.u64)()],
78
79
  fundingMode: [128, (0, serializers_1.u8)()],
79
- endPadding: [129, (0, serializers_1.array)((0, serializers_1.u8)(), { size: 3 })],
80
+ launchType: [129, (0, serializers_1.u8)()],
81
+ endPadding: [130, (0, serializers_1.array)((0, serializers_1.u8)(), { size: 2 })],
80
82
  bucketCount: [132, (0, serializers_1.u32)()],
81
83
  })
82
84
  .deserializeUsing((account) => deserializeGenesisAccountV2(account));