@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.
@@ -138,7 +138,7 @@ declare function approveProject(program: AnyProgram, args: {
138
138
  projectId: BN;
139
139
  /** USDC mint address (for creating lp_usdc_vault) */
140
140
  usdcMint: PublicKey;
141
- }, adminKeypair: Keypair): Promise<string>;
141
+ }, admin: PublicKey | Keypair): Promise<string>;
142
142
  /**
143
143
  * Create a milestone for a project
144
144
  *
@@ -138,7 +138,7 @@ declare function approveProject(program: AnyProgram, args: {
138
138
  projectId: BN;
139
139
  /** USDC mint address (for creating lp_usdc_vault) */
140
140
  usdcMint: PublicKey;
141
- }, adminKeypair: Keypair): Promise<string>;
141
+ }, admin: PublicKey | Keypair): Promise<string>;
142
142
  /**
143
143
  * Create a milestone for a project
144
144
  *
@@ -1,5 +1,5 @@
1
1
  import { BN } from '@coral-xyz/anchor';
2
- import { PublicKey, ComputeBudgetProgram, SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY, SYSVAR_RENT_PUBKEY, SYSVAR_CLOCK_PUBKEY } from '@solana/web3.js';
2
+ import { PublicKey, Keypair, ComputeBudgetProgram, SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY, SYSVAR_RENT_PUBKEY, SYSVAR_CLOCK_PUBKEY } from '@solana/web3.js';
3
3
  import { getAssociatedTokenAddressSync, TOKEN_PROGRAM_ID, ASSOCIATED_TOKEN_PROGRAM_ID } from '@solana/spl-token';
4
4
 
5
5
  // src/instructions/index.ts
@@ -11,6 +11,7 @@ var SEEDS = {
11
11
  INVESTMENT: "investment",
12
12
  VOTE: "vote",
13
13
  ESCROW: "escrow",
14
+ ESCROW_TOKEN: "escrow_token",
14
15
  PIVOT: "pivot",
15
16
  TGE_ESCROW: "tge_escrow",
16
17
  ADMIN_CONFIG: "admin-config",
@@ -47,6 +48,13 @@ function getEscrowPDA(projectId, programId) {
47
48
  );
48
49
  return pda;
49
50
  }
51
+ function getEscrowTokenAccountPDA(projectPda, programId) {
52
+ const [pda] = PublicKey.findProgramAddressSync(
53
+ [Buffer.from(SEEDS.ESCROW_TOKEN), projectPda.toBuffer()],
54
+ programId
55
+ );
56
+ return pda;
57
+ }
50
58
  function getMilestonePDA(projectPda, milestoneIndex, programId) {
51
59
  const [pda] = PublicKey.findProgramAddressSync(
52
60
  [
@@ -445,7 +453,8 @@ async function submitForApproval(program, projectId, founder) {
445
453
  founder
446
454
  }).rpc();
447
455
  }
448
- async function approveProject(program, args, adminKeypair) {
456
+ async function approveProject(program, args, admin) {
457
+ const adminPubkey = admin instanceof Keypair ? admin.publicKey : admin;
449
458
  const projectPda = getProjectPDA(args.projectId, program.programId);
450
459
  const tokenomicsPda = getTokenomicsPDA(projectPda, program.programId);
451
460
  const tokenVaultPda = getTokenVaultPDA(projectPda, program.programId);
@@ -458,10 +467,12 @@ async function approveProject(program, args, adminKeypair) {
458
467
  const lpUsdcVaultPda = getLpUsdcVaultPDA(projectPda, program.programId);
459
468
  const futureRoundTokenVaultPda = getFutureRoundTokenVaultPDA(projectPda, program.programId);
460
469
  const futureRoundVaultPda = getFutureRoundVaultPDA(projectPda, program.programId);
470
+ const escrowPda = getEscrowPDA(args.projectId, program.programId);
471
+ const escrowTokenAccountPda = getEscrowTokenAccountPDA(projectPda, program.programId);
461
472
  const computeBudgetIx = ComputeBudgetProgram.setComputeUnitLimit({
462
473
  units: 4e5
463
474
  });
464
- return getMethods(program).approveProject().accountsPartial({
475
+ let builder = getMethods(program).approveProject().accountsPartial({
465
476
  project: projectPda,
466
477
  tokenomics: tokenomicsPda,
467
478
  tokenVault: tokenVaultPda,
@@ -475,9 +486,15 @@ async function approveProject(program, args, adminKeypair) {
475
486
  futureRoundTokenVault: futureRoundTokenVaultPda,
476
487
  futureRoundVault: futureRoundVaultPda,
477
488
  usdcMint: args.usdcMint,
478
- authority: adminKeypair.publicKey,
479
- payer: adminKeypair.publicKey
480
- }).preInstructions([computeBudgetIx]).signers([adminKeypair]).rpc();
489
+ escrowPda,
490
+ escrowTokenAccount: escrowTokenAccountPda,
491
+ authority: adminPubkey,
492
+ payer: adminPubkey
493
+ }).preInstructions([computeBudgetIx]);
494
+ if (admin instanceof Keypair) {
495
+ builder = builder.signers([admin]);
496
+ }
497
+ return builder.rpc();
481
498
  }
482
499
  async function createMilestone(program, args, founder) {
483
500
  const projectPda = getProjectPDA(args.projectId, program.programId);
@@ -544,7 +561,8 @@ async function claimMilestoneFunds(program, args, founder) {
544
561
  const tokenVaultPda = getTokenVaultPDA(projectPda, program.programId);
545
562
  const tokenomicsPda = getTokenomicsPDA(projectPda, program.programId);
546
563
  const lpUsdcVaultPda = getLpUsdcVaultPDA(projectPda, program.programId);
547
- const nextMilestonePda = args.nextMilestonePda ?? (args.nextMilestoneDeadline.gt(new BN(0)) ? getMilestonePDA(projectPda, args.milestoneIndex + 1, program.programId) : null);
564
+ const isFinal = args.nextMilestoneDeadline.eq(new BN(0));
565
+ const nextMilestonePda = args.nextMilestonePda ?? (!isFinal ? getMilestonePDA(projectPda, args.milestoneIndex + 1, program.programId) : null);
548
566
  return getMethods(program).claimMilestoneFunds({ nextMilestoneDeadline: args.nextMilestoneDeadline }).accountsPartial({
549
567
  milestone: milestonePda,
550
568
  project: projectPda,
@@ -556,6 +574,7 @@ async function claimMilestoneFunds(program, args, founder) {
556
574
  tokenomics: tokenomicsPda,
557
575
  lpUsdcVault: lpUsdcVaultPda,
558
576
  nextMilestone: nextMilestonePda,
577
+ // null for final → Anchor uses programId sentinel
559
578
  systemProgram: SystemProgram.programId,
560
579
  tokenProgram: TOKEN_PROGRAM_ID
561
580
  }).rpc();