@zemyth/raise-sdk 0.1.6 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -13,6 +13,7 @@ var SEEDS = {
13
13
  INVESTMENT: "investment",
14
14
  VOTE: "vote",
15
15
  ESCROW: "escrow",
16
+ ESCROW_TOKEN: "escrow_token",
16
17
  PIVOT: "pivot",
17
18
  PIVOT_PROPOSAL: "pivot_proposal",
18
19
  TGE_ESCROW: "tge_escrow",
@@ -46,10 +47,10 @@ var VALIDATION = {
46
47
  /** Maximum pivot justification length */
47
48
  MAX_PIVOT_JUSTIFICATION_LEN: 512
48
49
  };
49
- var TIMING = {
50
- /** Production voting period (14 days) */
50
+ var TIMING_PRODUCTION = {
51
+ /** Voting period (14 days) */
51
52
  VOTING_PERIOD_SECONDS: 1209600,
52
- /** Production hold period (7 days) */
53
+ /** Hold period (7 days) */
53
54
  HOLD_PERIOD_SECONDS: 604800,
54
55
  /** Inactivity timeout (90 days) */
55
56
  INACTIVITY_TIMEOUT_SECONDS: 7776e3,
@@ -59,13 +60,49 @@ var TIMING = {
59
60
  REFUND_WINDOW_SECONDS: 1209600,
60
61
  /** Pivot withdrawal window (7 days) */
61
62
  PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800,
62
- /** Minimum TGE date (15 days from now) */
63
- TGE_MIN_DAYS: 1296e3,
64
- /** Maximum TGE date (90 days from now) */
65
- TGE_MAX_DAYS: 7776e3,
66
- /** Post-TGE holdback period (30 days) */
67
- POST_TGE_HOLDBACK_DAYS: 2592e3
63
+ /** Early token cooling period (24 hours) */
64
+ EARLY_TOKEN_COOLING_PERIOD: 86400,
65
+ /** Exit window period (7 days) */
66
+ EXIT_WINDOW_PERIOD: 604800,
67
+ /** Wallet update timelock (7 days) */
68
+ WALLET_UPDATE_TIMELOCK: 604800,
69
+ /** Minimum deadline duration (7 days) */
70
+ MIN_DEADLINE_DURATION_SECONDS: 604800,
71
+ /** Maximum deadline duration (90 days) */
72
+ MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,
73
+ /** Deadline grace period (90 days) */
74
+ DEADLINE_GRACE_PERIOD_SECONDS: 7776e3
68
75
  };
76
+ var TIMING_DEV = {
77
+ /** Voting period (60 seconds) */
78
+ VOTING_PERIOD_SECONDS: 60,
79
+ /** Hold period (1 second) */
80
+ HOLD_PERIOD_SECONDS: 1,
81
+ /** Inactivity timeout (10 seconds) */
82
+ INACTIVITY_TIMEOUT_SECONDS: 10,
83
+ /** Abandonment timeout (60 seconds) */
84
+ ABANDONMENT_TIMEOUT_SECONDS: 60,
85
+ /** Refund window (2 minutes) */
86
+ REFUND_WINDOW_SECONDS: 120,
87
+ /** Pivot withdrawal window (10 seconds) */
88
+ PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10,
89
+ /** Early token cooling period (10 seconds) */
90
+ EARLY_TOKEN_COOLING_PERIOD: 10,
91
+ /** Exit window period (20 seconds) */
92
+ EXIT_WINDOW_PERIOD: 20,
93
+ /** Wallet update timelock (60 seconds) */
94
+ WALLET_UPDATE_TIMELOCK: 60,
95
+ /** Minimum deadline duration (60 seconds) */
96
+ MIN_DEADLINE_DURATION_SECONDS: 60,
97
+ /** Maximum deadline duration (90 days) */
98
+ MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,
99
+ /** Deadline grace period (5 seconds) */
100
+ DEADLINE_GRACE_PERIOD_SECONDS: 5
101
+ };
102
+ function getTimingConstants(isDev = false) {
103
+ return isDev ? TIMING_DEV : TIMING_PRODUCTION;
104
+ }
105
+ var TIMING = TIMING_PRODUCTION;
69
106
  var TIER_CONSTRAINTS = {
70
107
  /** Minimum number of tiers */
71
108
  MIN_TIERS: 1,
@@ -210,6 +247,13 @@ function getEscrowPDA(projectId, programId) {
210
247
  );
211
248
  return pda;
212
249
  }
250
+ function getEscrowTokenAccountPDA(projectPda, programId) {
251
+ const [pda] = web3_js.PublicKey.findProgramAddressSync(
252
+ [Buffer.from(SEEDS.ESCROW_TOKEN), projectPda.toBuffer()],
253
+ programId
254
+ );
255
+ return pda;
256
+ }
213
257
  function getMilestonePDA(projectPda, milestoneIndex, programId) {
214
258
  const [pda] = web3_js.PublicKey.findProgramAddressSync(
215
259
  [
@@ -1153,7 +1197,8 @@ async function submitForApproval(program, projectId, founder) {
1153
1197
  founder
1154
1198
  }).rpc();
1155
1199
  }
1156
- async function approveProject(program, args, adminKeypair) {
1200
+ async function approveProject(program, args, admin) {
1201
+ const adminPubkey = admin instanceof web3_js.Keypair ? admin.publicKey : admin;
1157
1202
  const projectPda = getProjectPDA(args.projectId, program.programId);
1158
1203
  const tokenomicsPda = getTokenomicsPDA(projectPda, program.programId);
1159
1204
  const tokenVaultPda = getTokenVaultPDA(projectPda, program.programId);
@@ -1166,10 +1211,12 @@ async function approveProject(program, args, adminKeypair) {
1166
1211
  const lpUsdcVaultPda = getLpUsdcVaultPDA(projectPda, program.programId);
1167
1212
  const futureRoundTokenVaultPda = getFutureRoundTokenVaultPDA(projectPda, program.programId);
1168
1213
  const futureRoundVaultPda = getFutureRoundVaultPDA(projectPda, program.programId);
1214
+ const escrowPda = getEscrowPDA(args.projectId, program.programId);
1215
+ const escrowTokenAccountPda = getEscrowTokenAccountPDA(projectPda, program.programId);
1169
1216
  const computeBudgetIx = web3_js.ComputeBudgetProgram.setComputeUnitLimit({
1170
1217
  units: 4e5
1171
1218
  });
1172
- return getMethods(program).approveProject().accountsPartial({
1219
+ let builder = getMethods(program).approveProject().accountsPartial({
1173
1220
  project: projectPda,
1174
1221
  tokenomics: tokenomicsPda,
1175
1222
  tokenVault: tokenVaultPda,
@@ -1183,9 +1230,15 @@ async function approveProject(program, args, adminKeypair) {
1183
1230
  futureRoundTokenVault: futureRoundTokenVaultPda,
1184
1231
  futureRoundVault: futureRoundVaultPda,
1185
1232
  usdcMint: args.usdcMint,
1186
- authority: adminKeypair.publicKey,
1187
- payer: adminKeypair.publicKey
1188
- }).preInstructions([computeBudgetIx]).signers([adminKeypair]).rpc();
1233
+ escrowPda,
1234
+ escrowTokenAccount: escrowTokenAccountPda,
1235
+ authority: adminPubkey,
1236
+ payer: adminPubkey
1237
+ }).preInstructions([computeBudgetIx]);
1238
+ if (admin instanceof web3_js.Keypair) {
1239
+ builder = builder.signers([admin]);
1240
+ }
1241
+ return builder.rpc();
1189
1242
  }
1190
1243
  async function createMilestone(program, args, founder) {
1191
1244
  const projectPda = getProjectPDA(args.projectId, program.programId);
@@ -1252,7 +1305,8 @@ async function claimMilestoneFunds(program, args, founder) {
1252
1305
  const tokenVaultPda = getTokenVaultPDA(projectPda, program.programId);
1253
1306
  const tokenomicsPda = getTokenomicsPDA(projectPda, program.programId);
1254
1307
  const lpUsdcVaultPda = getLpUsdcVaultPDA(projectPda, program.programId);
1255
- const nextMilestonePda = args.nextMilestonePda ?? (args.nextMilestoneDeadline.gt(new anchor.BN(0)) ? getMilestonePDA(projectPda, args.milestoneIndex + 1, program.programId) : null);
1308
+ const isFinal = args.nextMilestoneDeadline.eq(new anchor.BN(0));
1309
+ const nextMilestonePda = args.nextMilestonePda ?? (!isFinal ? getMilestonePDA(projectPda, args.milestoneIndex + 1, program.programId) : null);
1256
1310
  return getMethods(program).claimMilestoneFunds({ nextMilestoneDeadline: args.nextMilestoneDeadline }).accountsPartial({
1257
1311
  milestone: milestonePda,
1258
1312
  project: projectPda,
@@ -1264,6 +1318,7 @@ async function claimMilestoneFunds(program, args, founder) {
1264
1318
  tokenomics: tokenomicsPda,
1265
1319
  lpUsdcVault: lpUsdcVaultPda,
1266
1320
  nextMilestone: nextMilestonePda,
1321
+ // null for final → Anchor uses programId sentinel
1267
1322
  systemProgram: web3_js.SystemProgram.programId,
1268
1323
  tokenProgram: splToken.TOKEN_PROGRAM_ID
1269
1324
  }).rpc();
@@ -2303,6 +2358,9 @@ var RaiseClient = class _RaiseClient {
2303
2358
  getEscrowPDA(projectId) {
2304
2359
  return getEscrowPDA(projectId, this.programId);
2305
2360
  }
2361
+ getEscrowTokenAccountPDA(projectPda) {
2362
+ return getEscrowTokenAccountPDA(projectPda, this.programId);
2363
+ }
2306
2364
  getMilestonePDA(projectPda, milestoneIndex) {
2307
2365
  return getMilestonePDA(projectPda, milestoneIndex, this.programId);
2308
2366
  }
@@ -2444,7 +2502,7 @@ var RaiseClient = class _RaiseClient {
2444
2502
  return approveProject(
2445
2503
  this.program,
2446
2504
  args,
2447
- adminKeypair
2505
+ adminKeypair ?? this.walletPublicKey
2448
2506
  );
2449
2507
  }
2450
2508
  // ===========================================================================
@@ -3868,6 +3926,8 @@ exports.TIER_MINIMUMS = TIER_MINIMUMS;
3868
3926
  exports.TIER_TOKEN_MULTIPLIERS = TIER_TOKEN_MULTIPLIERS;
3869
3927
  exports.TIER_VOTE_MULTIPLIERS = TIER_VOTE_MULTIPLIERS;
3870
3928
  exports.TIMING = TIMING;
3929
+ exports.TIMING_DEV = TIMING_DEV;
3930
+ exports.TIMING_PRODUCTION = TIMING_PRODUCTION;
3871
3931
  exports.TOKENOMICS = TOKENOMICS;
3872
3932
  exports.USDC = USDC;
3873
3933
  exports.VALIDATION = VALIDATION;
@@ -3946,6 +4006,7 @@ exports.getAdminConfigPDA = getAdminConfigPDA;
3946
4006
  exports.getCurrentTimestamp = getCurrentTimestamp;
3947
4007
  exports.getErrorMessage = getErrorMessage;
3948
4008
  exports.getEscrowPDA = getEscrowPDA;
4009
+ exports.getEscrowTokenAccountPDA = getEscrowTokenAccountPDA;
3949
4010
  exports.getFounderVaultPDA = getFounderVaultPDA;
3950
4011
  exports.getFounderVestingPDA = getFounderVestingPDA;
3951
4012
  exports.getFundingRoundPDA = getFundingRoundPDA;
@@ -3969,6 +4030,7 @@ exports.getRoundNftMintPDA = getRoundNftMintPDA;
3969
4030
  exports.getScamReportPDA = getScamReportPDA;
3970
4031
  exports.getTgeEscrowPDA = getTgeEscrowPDA;
3971
4032
  exports.getTierFromAmount = getTierFromAmount;
4033
+ exports.getTimingConstants = getTimingConstants;
3972
4034
  exports.getTokenMintPDA = getTokenMintPDA;
3973
4035
  exports.getTokenMultiplier = getTokenMultiplier;
3974
4036
  exports.getTokenVaultPDA = getTokenVaultPDA;