@zemyth/raise-sdk 0.1.1 → 0.1.3

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 (47) hide show
  1. package/README.md +11 -9
  2. package/dist/accounts/index.cjs +531 -3
  3. package/dist/accounts/index.cjs.map +1 -1
  4. package/dist/accounts/index.d.cts +307 -2
  5. package/dist/accounts/index.d.ts +307 -2
  6. package/dist/accounts/index.js +503 -4
  7. package/dist/accounts/index.js.map +1 -1
  8. package/dist/constants/index.cjs +41 -3
  9. package/dist/constants/index.cjs.map +1 -1
  10. package/dist/constants/index.d.cts +38 -3
  11. package/dist/constants/index.d.ts +38 -3
  12. package/dist/constants/index.js +40 -4
  13. package/dist/constants/index.js.map +1 -1
  14. package/dist/index.cjs +2297 -361
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +566 -7
  17. package/dist/index.d.ts +566 -7
  18. package/dist/index.js +2279 -379
  19. package/dist/index.js.map +1 -1
  20. package/dist/instructions/index.cjs +783 -40
  21. package/dist/instructions/index.cjs.map +1 -1
  22. package/dist/instructions/index.d.cts +492 -6
  23. package/dist/instructions/index.d.ts +492 -6
  24. package/dist/instructions/index.js +762 -42
  25. package/dist/instructions/index.js.map +1 -1
  26. package/dist/pdas/index.cjs +163 -1
  27. package/dist/pdas/index.cjs.map +1 -1
  28. package/dist/pdas/index.d.cts +131 -1
  29. package/dist/pdas/index.d.ts +131 -1
  30. package/dist/pdas/index.js +151 -2
  31. package/dist/pdas/index.js.map +1 -1
  32. package/dist/types/index.cjs +9 -0
  33. package/dist/types/index.cjs.map +1 -1
  34. package/dist/types/index.d.cts +586 -3
  35. package/dist/types/index.d.ts +586 -3
  36. package/dist/types/index.js +9 -1
  37. package/dist/types/index.js.map +1 -1
  38. package/package.json +5 -3
  39. package/src/__tests__/dynamic-tokenomics.test.ts +358 -0
  40. package/src/accounts/index.ts +852 -1
  41. package/src/client.ts +1130 -1
  42. package/src/constants/index.ts +48 -2
  43. package/src/index.ts +58 -0
  44. package/src/instructions/index.ts +1383 -40
  45. package/src/pdas/index.ts +346 -0
  46. package/src/types/index.ts +698 -2
  47. package/src/utils/index.ts +90 -0
@@ -24,6 +24,7 @@ declare function acceptAdmin(program: AnyProgram, newAuthority: PublicKey): Prom
24
24
  /**
25
25
  * TierConfig input type for initializeProject
26
26
  * Matches the on-chain TierConfig struct
27
+ * Note: voteMultiplier is auto-calculated on-chain using logarithmic formula
27
28
  */
28
29
  interface TierConfigInput {
29
30
  /** USDC amount per lot */
@@ -32,8 +33,6 @@ interface TierConfigInput {
32
33
  maxLots: number;
33
34
  /** Token allocation per $1 invested */
34
35
  tokenRatio: BN;
35
- /** Vote weight multiplier (basis points, 100 = 1.0x) */
36
- voteMultiplier: number;
37
36
  }
38
37
  /**
39
38
  * TokenomicsArgs input type for initializeProject (ZTM v2.0)
@@ -50,16 +49,22 @@ interface TokenomicsInput {
50
49
  lpTokenAllocationBps: number;
51
50
  /** LP USDC allocation in basis points (min 500 = 5% of raised USDC) */
52
51
  lpUsdcAllocationBps: number;
53
- /** Founder allocation in basis points (optional) */
52
+ /** Founder allocation in basis points (optional). Sub-allocations (treasury, advisors, marketing) draw from this pool. */
54
53
  founderAllocationBps?: number | null;
55
- /** Treasury allocation in basis points (optional) */
56
- treasuryAllocationBps?: number | null;
54
+ /** Zemyth platform fee in basis points (minimum 100 = 1%). Vests proportionally per milestone. */
55
+ zemythAllocationBps?: number | null;
57
56
  /** Founder wallet for vesting (required if founder_allocation_bps > 0) */
58
57
  founderWallet?: PublicKey | null;
59
58
  /** Vesting duration in months (required if founder_allocation_bps > 0) */
60
59
  vestingDurationMonths?: number | null;
61
60
  /** Cliff period in months (optional) */
62
61
  cliffMonths?: number | null;
62
+ /** Early Token Release: Founder milestone-based vesting BPS (optional, default: 4750 = 47.5% of founder allocation) */
63
+ founderMilestoneVestingBps?: number | null;
64
+ /** Early Token Release: Founder time-based vesting BPS (optional, default: 4750 = 47.5% of founder allocation) */
65
+ founderTimeVestingBps?: number | null;
66
+ /** Future round allocation in basis points (optional, 0 = none, >= 1000 = 10% minimum if enabled) */
67
+ futureRoundAllocationBps?: number | null;
63
68
  }
64
69
  /**
65
70
  * Helper to convert string symbol to 8-byte array
@@ -102,6 +107,11 @@ declare function validateDeadline(deadline: BN, isDev?: boolean): {
102
107
  * @param milestone1Deadline - Unix timestamp for M1 deadline (required)
103
108
  * Must be >= current_time + MIN_DEADLINE_DURATION_SECONDS (7 days prod, 60s dev)
104
109
  * Must be <= current_time + MAX_DEADLINE_DURATION_SECONDS (1 year)
110
+ * @param priceMultipliers - Optional price multipliers in BPS for each milestone
111
+ * - If not provided (default): Uses DYNAMIC mode - multipliers calculated automatically
112
+ * via ZEMYTH formula when founder claims milestone funds and sets next deadline
113
+ * - If provided: Uses STATIC mode - pre-configured multipliers array (legacy behavior)
114
+ * multipliers[i] = price after milestone i passes (10000 = 1.0x, 15000 = 1.5x)
105
115
  */
106
116
  declare function initializeProject(program: AnyProgram, args: {
107
117
  projectId: BN;
@@ -113,6 +123,8 @@ declare function initializeProject(program: AnyProgram, args: {
113
123
  tokenomics: TokenomicsInput;
114
124
  /** Milestone 1 deadline - Unix timestamp (required) */
115
125
  milestone1Deadline: BN;
126
+ /** Price multipliers: Optional pre-configured BPS array (defaults to dynamic ZEMYTH formula) */
127
+ priceMultipliers?: number[];
116
128
  }, founder: PublicKey): Promise<string>;
117
129
  /**
118
130
  * Submit project for approval
@@ -129,12 +141,19 @@ declare function approveProject(program: AnyProgram, args: {
129
141
  }, adminKeypair: Keypair): Promise<string>;
130
142
  /**
131
143
  * Create a milestone for a project
144
+ *
145
+ * @param vestingDurationMonths - Vesting duration in months (6-24), null for default (12)
146
+ * @param cliffMonths - Cliff duration in months (0-3), null for default (0)
147
+ * @param instantReleaseBps - Instant release basis points (500-5000), null for default (500 = 5%)
132
148
  */
133
149
  declare function createMilestone(program: AnyProgram, args: {
134
150
  projectId: BN;
135
151
  milestoneIndex: number;
136
152
  percentage: number;
137
153
  description: string;
154
+ vestingDurationMonths?: number | null;
155
+ cliffMonths?: number | null;
156
+ instantReleaseBps?: number | null;
138
157
  }, founder: PublicKey): Promise<string>;
139
158
  /**
140
159
  * Submit milestone for review
@@ -448,5 +467,472 @@ declare function claimMissedUnlock(program: AnyProgram, args: {
448
467
  /** Claimer's token account to receive tokens */
449
468
  claimerTokenAccount: PublicKey;
450
469
  }, claimer: PublicKey): Promise<string>;
470
+ /**
471
+ * Add a sub-allocation from the reserve pool (Draft state only)
472
+ *
473
+ * Allows founders to add named allocations (advisors, marketing, etc.)
474
+ * from their reserve pool before submitting for approval.
475
+ *
476
+ * @param name - Sub-allocation name (1-32 ASCII chars)
477
+ * @param bps - Basis points from reserve pool
478
+ * @param recipient - Token destination wallet
479
+ * @param vestingMonths - Vesting duration (0 = immediate)
480
+ * @param cliffMonths - Cliff period before vesting starts
481
+ */
482
+ declare function addSubAllocation(program: AnyProgram, args: {
483
+ projectId: BN;
484
+ name: string;
485
+ bps: number;
486
+ recipient: PublicKey;
487
+ vestingMonths: number;
488
+ cliffMonths: number;
489
+ }, founder: PublicKey): Promise<string>;
490
+ /**
491
+ * Propose an allocation change via governance (post-Draft states)
492
+ *
493
+ * Creates a 7-day voting period for investors to approve/reject
494
+ * a new sub-allocation from the reserve pool.
495
+ */
496
+ declare function proposeAllocationChange(program: AnyProgram, args: {
497
+ projectId: BN;
498
+ name: string;
499
+ bps: number;
500
+ recipient: PublicKey;
501
+ vestingMonths: number;
502
+ cliffMonths: number;
503
+ }, founder: PublicKey): Promise<string>;
504
+ /**
505
+ * Vote on an allocation change proposal
506
+ *
507
+ * Investors can vote for/against using their Investment NFT.
508
+ * Must meet 7-day hold period for voting eligibility.
509
+ * One vote per NFT (prevents double voting).
510
+ */
511
+ declare function voteAllocationChange(program: AnyProgram, args: {
512
+ projectId: BN;
513
+ proposalIndex: number;
514
+ nftMint: PublicKey;
515
+ voteFor: boolean;
516
+ }, voter: PublicKey): Promise<string>;
517
+ /**
518
+ * Execute an approved allocation change proposal
519
+ *
520
+ * Permissionless - anyone can call after voting ends.
521
+ * Proposal must have passed (>51% approval).
522
+ * Adds the sub-allocation to tokenomics.
523
+ */
524
+ declare function executeAllocationChange(program: AnyProgram, args: {
525
+ projectId: BN;
526
+ proposalIndex: number;
527
+ }, executor: PublicKey): Promise<string>;
528
+ /**
529
+ * Claim early tokens as an investor (5% of token allocation)
530
+ *
531
+ * Early Token Release: Investors can claim 5% of their token allocation
532
+ * 24 hours after investing. These tokens are fully liquid immediately.
533
+ *
534
+ * Prerequisites:
535
+ * - 24h cooling period must have passed since investment
536
+ * - Investment must not have already claimed early tokens
537
+ * - Investment must have active voting rights (not withdrawn from pivot)
538
+ *
539
+ * @param nftMint - The NFT mint that proves investment ownership
540
+ * @param investorTokenAccount - Investor's token account to receive claimed tokens
541
+ */
542
+ declare function claimEarlyTokens(program: AnyProgram, args: {
543
+ projectId: BN;
544
+ /** NFT mint that proves investment ownership */
545
+ nftMint: PublicKey;
546
+ /** Investor's token account to receive claimed tokens */
547
+ investorTokenAccount: PublicKey;
548
+ }, investor: PublicKey): Promise<string>;
549
+ /**
550
+ * Claim early tokens as a founder (5% of founder allocation)
551
+ *
552
+ * Early Token Release: Founders can claim 5% of their token allocation
553
+ * when the project becomes Funded. These tokens are fully liquid immediately.
554
+ *
555
+ * Prerequisites:
556
+ * - Project must be in Funded, InProgress, or Completed state
557
+ * - Founder must not have already claimed early tokens
558
+ * - Founder allocation must be configured in tokenomics
559
+ *
560
+ * @param founderTokenAccount - Founder's token account to receive claimed tokens
561
+ */
562
+ declare function claimFounderEarlyTokens(program: AnyProgram, args: {
563
+ projectId: BN;
564
+ /** Founder's token account to receive claimed tokens */
565
+ founderTokenAccount: PublicKey;
566
+ }, founder: PublicKey): Promise<string>;
567
+ /**
568
+ * Claim founder milestone-based tokens for a specific milestone
569
+ *
570
+ * Early Token Release: Founders can claim their milestone-based portion
571
+ * (default 47.5% of founder allocation) when milestones are unlocked.
572
+ * Amount per milestone = milestone_tokens * milestone_percentage / 100
573
+ *
574
+ * Prerequisites:
575
+ * - Milestone must be in Unlocked state
576
+ * - Founder must not have already claimed tokens for this milestone
577
+ * - Founder milestone vesting must be configured in tokenomics
578
+ *
579
+ * @param milestoneIndex - The milestone index to claim tokens from
580
+ * @param founderTokenAccount - Founder's token account to receive claimed tokens
581
+ */
582
+ declare function claimFounderMilestoneTokens(program: AnyProgram, args: {
583
+ projectId: BN;
584
+ /** Milestone index to claim tokens from */
585
+ milestoneIndex: number;
586
+ /** Founder's token account to receive claimed tokens */
587
+ founderTokenAccount: PublicKey;
588
+ }, founder: PublicKey): Promise<string>;
589
+ /**
590
+ * Initialize sub-allocation vesting after MAE (Market Access Event)
591
+ *
592
+ * Creates SubAllocationVesting PDA for a specific sub-allocation ID.
593
+ * Project must be in Completed state with MAE completed.
594
+ * Permissionless - anyone can pay to initialize.
595
+ *
596
+ * @param subAllocationId - Sub-allocation ID to initialize vesting for (0-9)
597
+ */
598
+ declare function initializeSubAllocationVesting(program: AnyProgram, args: {
599
+ projectId: BN;
600
+ /** Sub-allocation ID to initialize vesting for */
601
+ subAllocationId: number;
602
+ }, payer: PublicKey): Promise<string>;
603
+ /**
604
+ * Claim vested tokens from a sub-allocation
605
+ *
606
+ * Only the designated recipient wallet can claim tokens.
607
+ * Project must be Completed and MAE must be completed.
608
+ * Calculates claimable amount based on cliff + linear vesting schedule.
609
+ *
610
+ * @param subAllocationId - Sub-allocation ID to claim from (0-9)
611
+ * @param recipientTokenAccount - Recipient's token account to receive claimed tokens
612
+ */
613
+ declare function claimSubAllocationTokens(program: AnyProgram, args: {
614
+ projectId: BN;
615
+ /** Sub-allocation ID to claim from */
616
+ subAllocationId: number;
617
+ /** Recipient's token account to receive claimed tokens */
618
+ recipientTokenAccount: PublicKey;
619
+ }, recipient: PublicKey): Promise<string>;
620
+ /**
621
+ * Claim instant tokens for a passed milestone (investor)
622
+ *
623
+ * Per-milestone vesting: Investors claim the instant portion (e.g., 5-50%)
624
+ * immediately when a milestone passes. Creates vesting PDA on first claim.
625
+ *
626
+ * Prerequisites:
627
+ * - Milestone must be in Passed or Unlocked state
628
+ * - Milestone must use per-milestone vesting (instant_release_bps < 10000)
629
+ * - Investor must hold the NFT proving ownership
630
+ *
631
+ * @param milestoneIndex - The milestone index to claim tokens from
632
+ * @param nftMint - The NFT mint proving investment ownership
633
+ * @param investorTokenAccount - Investor's token account to receive claimed tokens
634
+ */
635
+ declare function claimMilestoneInstantTokens(program: AnyProgram, args: {
636
+ projectId: BN;
637
+ /** Milestone index to claim instant tokens from */
638
+ milestoneIndex: number;
639
+ /** NFT mint that proves investment ownership */
640
+ nftMint: PublicKey;
641
+ /** Investor's token account to receive claimed tokens */
642
+ investorTokenAccount: PublicKey;
643
+ }, investor: PublicKey): Promise<string>;
644
+ /**
645
+ * Claim vested tokens for a milestone after cliff period (investor)
646
+ *
647
+ * Per-milestone vesting: Investors claim vested tokens linearly after
648
+ * the cliff period passes. Must have already claimed instant tokens
649
+ * to initialize the vesting PDA.
650
+ *
651
+ * Prerequisites:
652
+ * - Vesting PDA must exist (created by claimMilestoneInstantTokens)
653
+ * - Cliff period must have passed
654
+ * - Investor must hold the NFT proving ownership
655
+ *
656
+ * @param milestoneIndex - The milestone index to claim vested tokens from
657
+ * @param nftMint - The NFT mint proving investment ownership
658
+ * @param investorTokenAccount - Investor's token account to receive claimed tokens
659
+ */
660
+ declare function claimMilestoneVestedTokens(program: AnyProgram, args: {
661
+ projectId: BN;
662
+ /** Milestone index to claim vested tokens from */
663
+ milestoneIndex: number;
664
+ /** NFT mint that proves investment ownership */
665
+ nftMint: PublicKey;
666
+ /** Investor's token account to receive claimed tokens */
667
+ investorTokenAccount: PublicKey;
668
+ }, investor: PublicKey): Promise<string>;
669
+ /**
670
+ * Claim instant tokens for a passed milestone (founder)
671
+ *
672
+ * Per-milestone vesting: Founders claim the instant portion (e.g., 5-50%)
673
+ * of their milestone-based allocation when a milestone passes.
674
+ * Creates vesting PDA on first claim.
675
+ *
676
+ * Prerequisites:
677
+ * - Milestone must be in Passed or Unlocked state
678
+ * - Milestone must use per-milestone vesting (instant_release_bps < 10000)
679
+ * - Founder must have milestone-based allocation configured
680
+ * - Caller must be the project founder
681
+ *
682
+ * @param milestoneIndex - The milestone index to claim tokens from
683
+ * @param founderTokenAccount - Founder's token account to receive claimed tokens
684
+ */
685
+ declare function claimFounderMsInstantTokens(program: AnyProgram, args: {
686
+ projectId: BN;
687
+ /** Milestone index to claim instant tokens from */
688
+ milestoneIndex: number;
689
+ /** Founder's token account to receive claimed tokens */
690
+ founderTokenAccount: PublicKey;
691
+ }, founder: PublicKey): Promise<string>;
692
+ /**
693
+ * Claim vested tokens for a milestone after cliff period (founder)
694
+ *
695
+ * Per-milestone vesting: Founders claim vested tokens linearly after
696
+ * the cliff period passes. Must have already claimed instant tokens
697
+ * to initialize the vesting PDA.
698
+ *
699
+ * Prerequisites:
700
+ * - Vesting PDA must exist (created by claimFounderMsInstantTokens)
701
+ * - Cliff period must have passed
702
+ * - Caller must be the project founder
703
+ *
704
+ * @param milestoneIndex - The milestone index to claim vested tokens from
705
+ * @param founderTokenAccount - Founder's token account to receive claimed tokens
706
+ */
707
+ declare function claimFounderMsVestedTokens(program: AnyProgram, args: {
708
+ projectId: BN;
709
+ /** Milestone index to claim vested tokens from */
710
+ milestoneIndex: number;
711
+ /** Founder's token account to receive claimed tokens */
712
+ founderTokenAccount: PublicKey;
713
+ }, founder: PublicKey): Promise<string>;
714
+ /**
715
+ * TierConfig input type for openFundingRound
716
+ */
717
+ interface RoundTierConfigInput {
718
+ /** USDC amount per lot */
719
+ amount: BN;
720
+ /** Maximum lots available */
721
+ maxLots: number;
722
+ /** Token allocation per $1 invested */
723
+ tokenRatio: BN;
724
+ }
725
+ /**
726
+ * Milestone configuration for new funding round
727
+ */
728
+ interface RoundMilestoneConfigInput {
729
+ /** Percentage of funding_goal (1-100) */
730
+ percentage: number;
731
+ /** Milestone description (max 32 chars) */
732
+ description: string;
733
+ /** Vesting duration in months (6-24, 0 = instant unlock) */
734
+ vestingDurationMonths?: number | null;
735
+ /** Cliff duration in months (0-3) */
736
+ cliffMonths?: number | null;
737
+ /** Instant release basis points (500-5000) */
738
+ instantReleaseBps?: number | null;
739
+ }
740
+ /**
741
+ * Open a new funding round (R2, R3, R4...)
742
+ *
743
+ * Multi-Round Fundraising: Creates FundingRound PDA, round escrow,
744
+ * and milestone PDAs for the new round. Tokens come from FutureRoundVault.
745
+ *
746
+ * Prerequisites:
747
+ * - Project must be InProgress or Completed state
748
+ * - At least 1 milestone must have passed (for InProgress projects)
749
+ * - No other round currently Open
750
+ * - Current round must be fully funded before opening next
751
+ * - Must have future_round_allocation configured in tokenomics
752
+ *
753
+ * @param roundAllocationBps - BPS from future_round_allocation to use (e.g., 1000 = 10%)
754
+ * @param fundingGoal - USDC funding goal for this round
755
+ * @param tiers - Tier configuration (1-10 tiers)
756
+ * @param milestones - Milestone configuration (2-10 milestones, sum to 100%)
757
+ * @param previousFundingRoundPda - Previous round PDA (required for R3+)
758
+ */
759
+ declare function openFundingRound(program: AnyProgram, args: {
760
+ projectId: BN;
761
+ /** BPS from future_round_allocation to use (e.g., 1000 = 10%) */
762
+ roundAllocationBps: number;
763
+ /** USDC funding goal for this round */
764
+ fundingGoal: BN;
765
+ /** Tier configuration (1-10 tiers) */
766
+ tiers: RoundTierConfigInput[];
767
+ /** Milestone configuration (2-10 milestones) */
768
+ milestones: RoundMilestoneConfigInput[];
769
+ /** USDC mint address */
770
+ usdcMint: PublicKey;
771
+ /** Previous funding round PDA (required for R3+, optional for R2) */
772
+ previousFundingRoundPda?: PublicKey | null;
773
+ }, founder: PublicKey): Promise<string>;
774
+ /**
775
+ * Invest in a funding round (R2, R3, R4...)
776
+ *
777
+ * Multi-Round Fundraising: Creates investment NFT and deposits USDC
778
+ * to the round-specific escrow. Tokens come from FutureRoundVault.
779
+ *
780
+ * @param roundNumber - Round number to invest in (2, 3, 4...)
781
+ * @param amount - USDC amount to invest
782
+ * @param investorTokenAccount - Investor's USDC token account
783
+ * @param investmentCount - Current investment count from FundingRound
784
+ */
785
+ declare function investInRound(program: AnyProgram, args: {
786
+ projectId: BN;
787
+ /** Round number to invest in */
788
+ roundNumber: number;
789
+ /** USDC amount to invest */
790
+ amount: BN;
791
+ /** Investor's USDC token account */
792
+ investorTokenAccount: PublicKey;
793
+ /** Current investment count from FundingRound */
794
+ investmentCount: number;
795
+ }, investor: PublicKey): Promise<string>;
796
+ /**
797
+ * Cancel round investment within 24-hour cooling-off period
798
+ *
799
+ * Multi-Round Fundraising: Returns USDC from round escrow,
800
+ * closes investment account.
801
+ */
802
+ declare function cancelRoundInvestment(program: AnyProgram, args: {
803
+ projectId: BN;
804
+ /** Round number of the investment */
805
+ roundNumber: number;
806
+ /** NFT mint of the investment */
807
+ nftMint: PublicKey;
808
+ /** Investor's NFT token account */
809
+ investorNftAccount: PublicKey;
810
+ /** Investor's USDC token account for refund */
811
+ investorUsdcAccount: PublicKey;
812
+ }, investor: PublicKey): Promise<string>;
813
+ /**
814
+ * Submit round milestone for investor review
815
+ *
816
+ * Multi-Round Fundraising: Transitions milestone to UnderReview,
817
+ * sets voting deadline.
818
+ */
819
+ declare function submitRoundMilestone(program: AnyProgram, args: {
820
+ projectId: BN;
821
+ /** Round number */
822
+ roundNumber: number;
823
+ /** Milestone index to submit */
824
+ milestoneIndex: number;
825
+ }, founder: PublicKey): Promise<string>;
826
+ /**
827
+ * Vote on a round milestone (unified voting - ANY investor can vote)
828
+ *
829
+ * Multi-Round Fundraising: R1, R2, R3... investors can all vote
830
+ * on any round's milestones. Investment can be from any round.
831
+ *
832
+ * @param roundNumber - Round number of the milestone being voted on
833
+ * @param milestoneIndex - Milestone index to vote on
834
+ * @param nftMint - Voter's NFT mint (can be from any round)
835
+ * @param choice - Vote choice (good or bad)
836
+ * @param investmentRoundNumber - Round number of the voter's investment
837
+ */
838
+ declare function voteOnRoundMilestone(program: AnyProgram, args: {
839
+ projectId: BN;
840
+ /** Round number of the milestone being voted on */
841
+ roundNumber: number;
842
+ /** Milestone index to vote on */
843
+ milestoneIndex: number;
844
+ /** Voter's NFT mint (can be from any round) */
845
+ nftMint: PublicKey | string;
846
+ /** Vote choice */
847
+ choice: {
848
+ good: object;
849
+ } | {
850
+ bad: object;
851
+ };
852
+ /** Round number of the voter's investment (for PDA derivation) */
853
+ investmentRoundNumber: number;
854
+ }, voter: PublicKey): Promise<string>;
855
+ /**
856
+ * Finalize voting on a round milestone
857
+ *
858
+ * Multi-Round Fundraising: Processes vote results, transitions
859
+ * milestone to Passed or Failed state.
860
+ */
861
+ declare function finalizeRoundVoting(program: AnyProgram, args: {
862
+ projectId: BN;
863
+ /** Round number */
864
+ roundNumber: number;
865
+ /** Milestone index to finalize */
866
+ milestoneIndex: number;
867
+ }): Promise<string>;
868
+ /**
869
+ * Claim milestone funds from a round (founder)
870
+ *
871
+ * Multi-Round Fundraising: Transfers USDC from round escrow
872
+ * to founder's account.
873
+ *
874
+ * @param nextMilestoneDeadline - Deadline for next milestone (required for non-final)
875
+ * Set to BN(0) for final milestone claims
876
+ */
877
+ declare function claimRoundMilestoneFunds(program: AnyProgram, args: {
878
+ projectId: BN;
879
+ /** Round number */
880
+ roundNumber: number;
881
+ /** Milestone index to claim */
882
+ milestoneIndex: number;
883
+ /** Founder's USDC token account */
884
+ founderUsdcAccount: PublicKey;
885
+ /** Deadline for next milestone - required for non-final milestones, use BN(0) for final */
886
+ nextMilestoneDeadline: BN;
887
+ }, founder: PublicKey): Promise<string>;
888
+ /**
889
+ * Claim instant tokens for a round milestone (investor)
890
+ *
891
+ * Multi-Round Fundraising: R2+ investors claim instant portion
892
+ * when milestone passes. Tokens come from FutureRoundVault.
893
+ */
894
+ declare function claimRoundInstantTokens(program: AnyProgram, args: {
895
+ projectId: BN;
896
+ /** Round number of the investment */
897
+ roundNumber: number;
898
+ /** Milestone index to claim tokens from */
899
+ milestoneIndex: number;
900
+ /** NFT mint proving investment ownership */
901
+ nftMint: PublicKey;
902
+ /** Investor's token account to receive claimed tokens */
903
+ investorTokenAccount: PublicKey;
904
+ }, investor: PublicKey): Promise<string>;
905
+ /**
906
+ * Claim vested tokens for a round milestone (investor)
907
+ *
908
+ * Multi-Round Fundraising: R2+ investors claim vested portion
909
+ * after cliff period. Tokens come from FutureRoundVault.
910
+ */
911
+ declare function claimRoundVestedTokens(program: AnyProgram, args: {
912
+ projectId: BN;
913
+ /** Round number of the investment */
914
+ roundNumber: number;
915
+ /** Milestone index to claim tokens from */
916
+ milestoneIndex: number;
917
+ /** NFT mint proving investment ownership */
918
+ nftMint: PublicKey;
919
+ /** Investor's token account to receive claimed tokens */
920
+ investorTokenAccount: PublicKey;
921
+ }, investor: PublicKey): Promise<string>;
922
+ /**
923
+ * Claim early tokens for a round investment (5% after 24h)
924
+ *
925
+ * Multi-Round Fundraising: R2+ investors claim 5% of token allocation
926
+ * 24 hours after investing. Tokens come from FutureRoundVault.
927
+ */
928
+ declare function claimRoundEarlyTokens(program: AnyProgram, args: {
929
+ projectId: BN;
930
+ /** Round number of the investment */
931
+ roundNumber: number;
932
+ /** NFT mint proving investment ownership */
933
+ nftMint: PublicKey;
934
+ /** Investor's token account to receive claimed tokens */
935
+ investorTokenAccount: PublicKey;
936
+ }, investor: PublicKey): Promise<string>;
451
937
 
452
- export { MAX_DEADLINE_DURATION_SECONDS, MIN_DEADLINE_DURATION_SECONDS_DEV, MIN_DEADLINE_DURATION_SECONDS_PROD, type TokenomicsInput, acceptAdmin, approvePivot, approveProject, calculateDeadline, cancelInvestment, checkAbandonment, claimExitWindowRefund, claimInvestorTokens, claimMilestoneFunds, claimMissedUnlock, claimRefund, claimTokens, claimVestedTokens, completeDistribution, createMilestone, depositTokens, distributeTokens, extendMilestoneDeadline, finalizePivot, finalizeVoting, forceCompleteDistribution, initializeAdmin, initializeFounderVesting, initializeProject, invest, minDeadline, proposePivot, releaseHoldback, reportScam, resubmitMilestone, setMilestoneDeadline, setTgeDate, submitForApproval, submitMilestone, symbolToBytes, transferAdmin, validateDeadline, voteOnMilestone, withdrawFromPivot };
938
+ export { MAX_DEADLINE_DURATION_SECONDS, MIN_DEADLINE_DURATION_SECONDS_DEV, MIN_DEADLINE_DURATION_SECONDS_PROD, type TokenomicsInput, acceptAdmin, addSubAllocation, approvePivot, approveProject, calculateDeadline, cancelInvestment, cancelRoundInvestment, checkAbandonment, claimEarlyTokens, claimExitWindowRefund, claimFounderEarlyTokens, claimFounderMilestoneTokens, claimFounderMsInstantTokens, claimFounderMsVestedTokens, claimInvestorTokens, claimMilestoneFunds, claimMilestoneInstantTokens, claimMilestoneVestedTokens, claimMissedUnlock, claimRefund, claimRoundEarlyTokens, claimRoundInstantTokens, claimRoundMilestoneFunds, claimRoundVestedTokens, claimSubAllocationTokens, claimTokens, claimVestedTokens, completeDistribution, createMilestone, depositTokens, distributeTokens, executeAllocationChange, extendMilestoneDeadline, finalizePivot, finalizeRoundVoting, finalizeVoting, forceCompleteDistribution, initializeAdmin, initializeFounderVesting, initializeProject, initializeSubAllocationVesting, invest, investInRound, minDeadline, openFundingRound, proposeAllocationChange, proposePivot, releaseHoldback, reportScam, resubmitMilestone, setMilestoneDeadline, setTgeDate, submitForApproval, submitMilestone, submitRoundMilestone, symbolToBytes, transferAdmin, validateDeadline, voteAllocationChange, voteOnMilestone, voteOnRoundMilestone, withdrawFromPivot };