@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.
- package/README.md +11 -9
- package/dist/accounts/index.cjs +531 -3
- package/dist/accounts/index.cjs.map +1 -1
- package/dist/accounts/index.d.cts +307 -2
- package/dist/accounts/index.d.ts +307 -2
- package/dist/accounts/index.js +503 -4
- package/dist/accounts/index.js.map +1 -1
- package/dist/constants/index.cjs +41 -3
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts +38 -3
- package/dist/constants/index.d.ts +38 -3
- package/dist/constants/index.js +40 -4
- package/dist/constants/index.js.map +1 -1
- package/dist/index.cjs +2297 -361
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +566 -7
- package/dist/index.d.ts +566 -7
- package/dist/index.js +2279 -379
- package/dist/index.js.map +1 -1
- package/dist/instructions/index.cjs +783 -40
- package/dist/instructions/index.cjs.map +1 -1
- package/dist/instructions/index.d.cts +492 -6
- package/dist/instructions/index.d.ts +492 -6
- package/dist/instructions/index.js +762 -42
- package/dist/instructions/index.js.map +1 -1
- package/dist/pdas/index.cjs +163 -1
- package/dist/pdas/index.cjs.map +1 -1
- package/dist/pdas/index.d.cts +131 -1
- package/dist/pdas/index.d.ts +131 -1
- package/dist/pdas/index.js +151 -2
- package/dist/pdas/index.js.map +1 -1
- package/dist/types/index.cjs +9 -0
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.cts +586 -3
- package/dist/types/index.d.ts +586 -3
- package/dist/types/index.js +9 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +5 -3
- package/src/__tests__/dynamic-tokenomics.test.ts +358 -0
- package/src/accounts/index.ts +852 -1
- package/src/client.ts +1130 -1
- package/src/constants/index.ts +48 -2
- package/src/index.ts +58 -0
- package/src/instructions/index.ts +1383 -40
- package/src/pdas/index.ts +346 -0
- package/src/types/index.ts +698 -2
- 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
|
-
/**
|
|
56
|
-
|
|
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 };
|