@zemyth/raise-sdk 0.1.4 → 0.1.7

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.
@@ -42,10 +42,120 @@ declare const VALIDATION: {
42
42
  /** Maximum pivot justification length */
43
43
  readonly MAX_PIVOT_JUSTIFICATION_LEN: 512;
44
44
  };
45
+ /** Production timing constants (mainnet) */
46
+ declare const TIMING_PRODUCTION: {
47
+ /** Voting period (14 days) */
48
+ readonly VOTING_PERIOD_SECONDS: 1209600;
49
+ /** Hold period (7 days) */
50
+ readonly HOLD_PERIOD_SECONDS: 604800;
51
+ /** Inactivity timeout (90 days) */
52
+ readonly INACTIVITY_TIMEOUT_SECONDS: 7776000;
53
+ /** Abandonment timeout (90 days) */
54
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 7776000;
55
+ /** Refund window (14 days) */
56
+ readonly REFUND_WINDOW_SECONDS: 1209600;
57
+ /** Pivot withdrawal window (7 days) */
58
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800;
59
+ /** Early token cooling period (24 hours) */
60
+ readonly EARLY_TOKEN_COOLING_PERIOD: 86400;
61
+ /** Exit window period (7 days) */
62
+ readonly EXIT_WINDOW_PERIOD: 604800;
63
+ /** Wallet update timelock (7 days) */
64
+ readonly WALLET_UPDATE_TIMELOCK: 604800;
65
+ /** Minimum deadline duration (7 days) */
66
+ readonly MIN_DEADLINE_DURATION_SECONDS: 604800;
67
+ /** Maximum deadline duration (90 days) */
68
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
69
+ /** Deadline grace period (90 days) */
70
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 7776000;
71
+ };
72
+ /** Dev timing constants (localnet/devnet) - matches Solana program dev mode */
73
+ declare const TIMING_DEV: {
74
+ /** Voting period (60 seconds) */
75
+ readonly VOTING_PERIOD_SECONDS: 60;
76
+ /** Hold period (1 second) */
77
+ readonly HOLD_PERIOD_SECONDS: 1;
78
+ /** Inactivity timeout (10 seconds) */
79
+ readonly INACTIVITY_TIMEOUT_SECONDS: 10;
80
+ /** Abandonment timeout (60 seconds) */
81
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 60;
82
+ /** Refund window (2 minutes) */
83
+ readonly REFUND_WINDOW_SECONDS: 120;
84
+ /** Pivot withdrawal window (10 seconds) */
85
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10;
86
+ /** Early token cooling period (10 seconds) */
87
+ readonly EARLY_TOKEN_COOLING_PERIOD: 10;
88
+ /** Exit window period (20 seconds) */
89
+ readonly EXIT_WINDOW_PERIOD: 20;
90
+ /** Wallet update timelock (60 seconds) */
91
+ readonly WALLET_UPDATE_TIMELOCK: 60;
92
+ /** Minimum deadline duration (60 seconds) */
93
+ readonly MIN_DEADLINE_DURATION_SECONDS: 60;
94
+ /** Maximum deadline duration (90 days) */
95
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
96
+ /** Deadline grace period (5 seconds) */
97
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 5;
98
+ };
99
+ /**
100
+ * Get timing constants based on environment
101
+ * @param isDev - Whether to use dev mode constants (localnet/devnet)
102
+ */
103
+ declare function getTimingConstants(isDev?: boolean): {
104
+ /** Voting period (14 days) */
105
+ readonly VOTING_PERIOD_SECONDS: 1209600;
106
+ /** Hold period (7 days) */
107
+ readonly HOLD_PERIOD_SECONDS: 604800;
108
+ /** Inactivity timeout (90 days) */
109
+ readonly INACTIVITY_TIMEOUT_SECONDS: 7776000;
110
+ /** Abandonment timeout (90 days) */
111
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 7776000;
112
+ /** Refund window (14 days) */
113
+ readonly REFUND_WINDOW_SECONDS: 1209600;
114
+ /** Pivot withdrawal window (7 days) */
115
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800;
116
+ /** Early token cooling period (24 hours) */
117
+ readonly EARLY_TOKEN_COOLING_PERIOD: 86400;
118
+ /** Exit window period (7 days) */
119
+ readonly EXIT_WINDOW_PERIOD: 604800;
120
+ /** Wallet update timelock (7 days) */
121
+ readonly WALLET_UPDATE_TIMELOCK: 604800;
122
+ /** Minimum deadline duration (7 days) */
123
+ readonly MIN_DEADLINE_DURATION_SECONDS: 604800;
124
+ /** Maximum deadline duration (90 days) */
125
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
126
+ /** Deadline grace period (90 days) */
127
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 7776000;
128
+ } | {
129
+ /** Voting period (60 seconds) */
130
+ readonly VOTING_PERIOD_SECONDS: 60;
131
+ /** Hold period (1 second) */
132
+ readonly HOLD_PERIOD_SECONDS: 1;
133
+ /** Inactivity timeout (10 seconds) */
134
+ readonly INACTIVITY_TIMEOUT_SECONDS: 10;
135
+ /** Abandonment timeout (60 seconds) */
136
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 60;
137
+ /** Refund window (2 minutes) */
138
+ readonly REFUND_WINDOW_SECONDS: 120;
139
+ /** Pivot withdrawal window (10 seconds) */
140
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10;
141
+ /** Early token cooling period (10 seconds) */
142
+ readonly EARLY_TOKEN_COOLING_PERIOD: 10;
143
+ /** Exit window period (20 seconds) */
144
+ readonly EXIT_WINDOW_PERIOD: 20;
145
+ /** Wallet update timelock (60 seconds) */
146
+ readonly WALLET_UPDATE_TIMELOCK: 60;
147
+ /** Minimum deadline duration (60 seconds) */
148
+ readonly MIN_DEADLINE_DURATION_SECONDS: 60;
149
+ /** Maximum deadline duration (90 days) */
150
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
151
+ /** Deadline grace period (5 seconds) */
152
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 5;
153
+ };
154
+ /** @deprecated Use TIMING_PRODUCTION or TIMING_DEV instead */
45
155
  declare const TIMING: {
46
- /** Production voting period (14 days) */
156
+ /** Voting period (14 days) */
47
157
  readonly VOTING_PERIOD_SECONDS: 1209600;
48
- /** Production hold period (7 days) */
158
+ /** Hold period (7 days) */
49
159
  readonly HOLD_PERIOD_SECONDS: 604800;
50
160
  /** Inactivity timeout (90 days) */
51
161
  readonly INACTIVITY_TIMEOUT_SECONDS: 7776000;
@@ -55,12 +165,18 @@ declare const TIMING: {
55
165
  readonly REFUND_WINDOW_SECONDS: 1209600;
56
166
  /** Pivot withdrawal window (7 days) */
57
167
  readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800;
58
- /** Minimum TGE date (15 days from now) */
59
- readonly TGE_MIN_DAYS: 1296000;
60
- /** Maximum TGE date (90 days from now) */
61
- readonly TGE_MAX_DAYS: 7776000;
62
- /** Post-TGE holdback period (30 days) */
63
- readonly POST_TGE_HOLDBACK_DAYS: 2592000;
168
+ /** Early token cooling period (24 hours) */
169
+ readonly EARLY_TOKEN_COOLING_PERIOD: 86400;
170
+ /** Exit window period (7 days) */
171
+ readonly EXIT_WINDOW_PERIOD: 604800;
172
+ /** Wallet update timelock (7 days) */
173
+ readonly WALLET_UPDATE_TIMELOCK: 604800;
174
+ /** Minimum deadline duration (7 days) */
175
+ readonly MIN_DEADLINE_DURATION_SECONDS: 604800;
176
+ /** Maximum deadline duration (90 days) */
177
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
178
+ /** Deadline grace period (90 days) */
179
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 7776000;
64
180
  };
65
181
  declare const TIER_CONSTRAINTS: {
66
182
  /** Minimum number of tiers */
@@ -175,4 +291,4 @@ declare const TOKENOMICS: {
175
291
  readonly TOTAL_ALLOCATION_BPS: 10000;
176
292
  };
177
293
 
178
- export { GOVERNANCE, InvestmentTier, NFT, PROGRESSIVE_PRICING, SEEDS, TIER_CONSTRAINTS, TIER_MINIMUMS, TIER_TOKEN_MULTIPLIERS, TIER_VOTE_MULTIPLIERS, TIMING, TOKENOMICS, USDC, VALIDATION, findTierIndex, getTierFromAmount, getTokenMultiplier, getVoteMultiplier };
294
+ export { GOVERNANCE, InvestmentTier, NFT, PROGRESSIVE_PRICING, SEEDS, TIER_CONSTRAINTS, TIER_MINIMUMS, TIER_TOKEN_MULTIPLIERS, TIER_VOTE_MULTIPLIERS, TIMING, TIMING_DEV, TIMING_PRODUCTION, TOKENOMICS, USDC, VALIDATION, findTierIndex, getTierFromAmount, getTimingConstants, getTokenMultiplier, getVoteMultiplier };
@@ -42,10 +42,120 @@ declare const VALIDATION: {
42
42
  /** Maximum pivot justification length */
43
43
  readonly MAX_PIVOT_JUSTIFICATION_LEN: 512;
44
44
  };
45
+ /** Production timing constants (mainnet) */
46
+ declare const TIMING_PRODUCTION: {
47
+ /** Voting period (14 days) */
48
+ readonly VOTING_PERIOD_SECONDS: 1209600;
49
+ /** Hold period (7 days) */
50
+ readonly HOLD_PERIOD_SECONDS: 604800;
51
+ /** Inactivity timeout (90 days) */
52
+ readonly INACTIVITY_TIMEOUT_SECONDS: 7776000;
53
+ /** Abandonment timeout (90 days) */
54
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 7776000;
55
+ /** Refund window (14 days) */
56
+ readonly REFUND_WINDOW_SECONDS: 1209600;
57
+ /** Pivot withdrawal window (7 days) */
58
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800;
59
+ /** Early token cooling period (24 hours) */
60
+ readonly EARLY_TOKEN_COOLING_PERIOD: 86400;
61
+ /** Exit window period (7 days) */
62
+ readonly EXIT_WINDOW_PERIOD: 604800;
63
+ /** Wallet update timelock (7 days) */
64
+ readonly WALLET_UPDATE_TIMELOCK: 604800;
65
+ /** Minimum deadline duration (7 days) */
66
+ readonly MIN_DEADLINE_DURATION_SECONDS: 604800;
67
+ /** Maximum deadline duration (90 days) */
68
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
69
+ /** Deadline grace period (90 days) */
70
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 7776000;
71
+ };
72
+ /** Dev timing constants (localnet/devnet) - matches Solana program dev mode */
73
+ declare const TIMING_DEV: {
74
+ /** Voting period (60 seconds) */
75
+ readonly VOTING_PERIOD_SECONDS: 60;
76
+ /** Hold period (1 second) */
77
+ readonly HOLD_PERIOD_SECONDS: 1;
78
+ /** Inactivity timeout (10 seconds) */
79
+ readonly INACTIVITY_TIMEOUT_SECONDS: 10;
80
+ /** Abandonment timeout (60 seconds) */
81
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 60;
82
+ /** Refund window (2 minutes) */
83
+ readonly REFUND_WINDOW_SECONDS: 120;
84
+ /** Pivot withdrawal window (10 seconds) */
85
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10;
86
+ /** Early token cooling period (10 seconds) */
87
+ readonly EARLY_TOKEN_COOLING_PERIOD: 10;
88
+ /** Exit window period (20 seconds) */
89
+ readonly EXIT_WINDOW_PERIOD: 20;
90
+ /** Wallet update timelock (60 seconds) */
91
+ readonly WALLET_UPDATE_TIMELOCK: 60;
92
+ /** Minimum deadline duration (60 seconds) */
93
+ readonly MIN_DEADLINE_DURATION_SECONDS: 60;
94
+ /** Maximum deadline duration (90 days) */
95
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
96
+ /** Deadline grace period (5 seconds) */
97
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 5;
98
+ };
99
+ /**
100
+ * Get timing constants based on environment
101
+ * @param isDev - Whether to use dev mode constants (localnet/devnet)
102
+ */
103
+ declare function getTimingConstants(isDev?: boolean): {
104
+ /** Voting period (14 days) */
105
+ readonly VOTING_PERIOD_SECONDS: 1209600;
106
+ /** Hold period (7 days) */
107
+ readonly HOLD_PERIOD_SECONDS: 604800;
108
+ /** Inactivity timeout (90 days) */
109
+ readonly INACTIVITY_TIMEOUT_SECONDS: 7776000;
110
+ /** Abandonment timeout (90 days) */
111
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 7776000;
112
+ /** Refund window (14 days) */
113
+ readonly REFUND_WINDOW_SECONDS: 1209600;
114
+ /** Pivot withdrawal window (7 days) */
115
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800;
116
+ /** Early token cooling period (24 hours) */
117
+ readonly EARLY_TOKEN_COOLING_PERIOD: 86400;
118
+ /** Exit window period (7 days) */
119
+ readonly EXIT_WINDOW_PERIOD: 604800;
120
+ /** Wallet update timelock (7 days) */
121
+ readonly WALLET_UPDATE_TIMELOCK: 604800;
122
+ /** Minimum deadline duration (7 days) */
123
+ readonly MIN_DEADLINE_DURATION_SECONDS: 604800;
124
+ /** Maximum deadline duration (90 days) */
125
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
126
+ /** Deadline grace period (90 days) */
127
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 7776000;
128
+ } | {
129
+ /** Voting period (60 seconds) */
130
+ readonly VOTING_PERIOD_SECONDS: 60;
131
+ /** Hold period (1 second) */
132
+ readonly HOLD_PERIOD_SECONDS: 1;
133
+ /** Inactivity timeout (10 seconds) */
134
+ readonly INACTIVITY_TIMEOUT_SECONDS: 10;
135
+ /** Abandonment timeout (60 seconds) */
136
+ readonly ABANDONMENT_TIMEOUT_SECONDS: 60;
137
+ /** Refund window (2 minutes) */
138
+ readonly REFUND_WINDOW_SECONDS: 120;
139
+ /** Pivot withdrawal window (10 seconds) */
140
+ readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10;
141
+ /** Early token cooling period (10 seconds) */
142
+ readonly EARLY_TOKEN_COOLING_PERIOD: 10;
143
+ /** Exit window period (20 seconds) */
144
+ readonly EXIT_WINDOW_PERIOD: 20;
145
+ /** Wallet update timelock (60 seconds) */
146
+ readonly WALLET_UPDATE_TIMELOCK: 60;
147
+ /** Minimum deadline duration (60 seconds) */
148
+ readonly MIN_DEADLINE_DURATION_SECONDS: 60;
149
+ /** Maximum deadline duration (90 days) */
150
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
151
+ /** Deadline grace period (5 seconds) */
152
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 5;
153
+ };
154
+ /** @deprecated Use TIMING_PRODUCTION or TIMING_DEV instead */
45
155
  declare const TIMING: {
46
- /** Production voting period (14 days) */
156
+ /** Voting period (14 days) */
47
157
  readonly VOTING_PERIOD_SECONDS: 1209600;
48
- /** Production hold period (7 days) */
158
+ /** Hold period (7 days) */
49
159
  readonly HOLD_PERIOD_SECONDS: 604800;
50
160
  /** Inactivity timeout (90 days) */
51
161
  readonly INACTIVITY_TIMEOUT_SECONDS: 7776000;
@@ -55,12 +165,18 @@ declare const TIMING: {
55
165
  readonly REFUND_WINDOW_SECONDS: 1209600;
56
166
  /** Pivot withdrawal window (7 days) */
57
167
  readonly PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800;
58
- /** Minimum TGE date (15 days from now) */
59
- readonly TGE_MIN_DAYS: 1296000;
60
- /** Maximum TGE date (90 days from now) */
61
- readonly TGE_MAX_DAYS: 7776000;
62
- /** Post-TGE holdback period (30 days) */
63
- readonly POST_TGE_HOLDBACK_DAYS: 2592000;
168
+ /** Early token cooling period (24 hours) */
169
+ readonly EARLY_TOKEN_COOLING_PERIOD: 86400;
170
+ /** Exit window period (7 days) */
171
+ readonly EXIT_WINDOW_PERIOD: 604800;
172
+ /** Wallet update timelock (7 days) */
173
+ readonly WALLET_UPDATE_TIMELOCK: 604800;
174
+ /** Minimum deadline duration (7 days) */
175
+ readonly MIN_DEADLINE_DURATION_SECONDS: 604800;
176
+ /** Maximum deadline duration (90 days) */
177
+ readonly MAX_DEADLINE_DURATION_SECONDS: number;
178
+ /** Deadline grace period (90 days) */
179
+ readonly DEADLINE_GRACE_PERIOD_SECONDS: 7776000;
64
180
  };
65
181
  declare const TIER_CONSTRAINTS: {
66
182
  /** Minimum number of tiers */
@@ -175,4 +291,4 @@ declare const TOKENOMICS: {
175
291
  readonly TOTAL_ALLOCATION_BPS: 10000;
176
292
  };
177
293
 
178
- export { GOVERNANCE, InvestmentTier, NFT, PROGRESSIVE_PRICING, SEEDS, TIER_CONSTRAINTS, TIER_MINIMUMS, TIER_TOKEN_MULTIPLIERS, TIER_VOTE_MULTIPLIERS, TIMING, TOKENOMICS, USDC, VALIDATION, findTierIndex, getTierFromAmount, getTokenMultiplier, getVoteMultiplier };
294
+ export { GOVERNANCE, InvestmentTier, NFT, PROGRESSIVE_PRICING, SEEDS, TIER_CONSTRAINTS, TIER_MINIMUMS, TIER_TOKEN_MULTIPLIERS, TIER_VOTE_MULTIPLIERS, TIMING, TIMING_DEV, TIMING_PRODUCTION, TOKENOMICS, USDC, VALIDATION, findTierIndex, getTierFromAmount, getTimingConstants, getTokenMultiplier, getVoteMultiplier };
@@ -38,10 +38,10 @@ var VALIDATION = {
38
38
  /** Maximum pivot justification length */
39
39
  MAX_PIVOT_JUSTIFICATION_LEN: 512
40
40
  };
41
- var TIMING = {
42
- /** Production voting period (14 days) */
41
+ var TIMING_PRODUCTION = {
42
+ /** Voting period (14 days) */
43
43
  VOTING_PERIOD_SECONDS: 1209600,
44
- /** Production hold period (7 days) */
44
+ /** Hold period (7 days) */
45
45
  HOLD_PERIOD_SECONDS: 604800,
46
46
  /** Inactivity timeout (90 days) */
47
47
  INACTIVITY_TIMEOUT_SECONDS: 7776e3,
@@ -51,13 +51,49 @@ var TIMING = {
51
51
  REFUND_WINDOW_SECONDS: 1209600,
52
52
  /** Pivot withdrawal window (7 days) */
53
53
  PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604800,
54
- /** Minimum TGE date (15 days from now) */
55
- TGE_MIN_DAYS: 1296e3,
56
- /** Maximum TGE date (90 days from now) */
57
- TGE_MAX_DAYS: 7776e3,
58
- /** Post-TGE holdback period (30 days) */
59
- POST_TGE_HOLDBACK_DAYS: 2592e3
54
+ /** Early token cooling period (24 hours) */
55
+ EARLY_TOKEN_COOLING_PERIOD: 86400,
56
+ /** Exit window period (7 days) */
57
+ EXIT_WINDOW_PERIOD: 604800,
58
+ /** Wallet update timelock (7 days) */
59
+ WALLET_UPDATE_TIMELOCK: 604800,
60
+ /** Minimum deadline duration (7 days) */
61
+ MIN_DEADLINE_DURATION_SECONDS: 604800,
62
+ /** Maximum deadline duration (90 days) */
63
+ MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,
64
+ /** Deadline grace period (90 days) */
65
+ DEADLINE_GRACE_PERIOD_SECONDS: 7776e3
60
66
  };
67
+ var TIMING_DEV = {
68
+ /** Voting period (60 seconds) */
69
+ VOTING_PERIOD_SECONDS: 60,
70
+ /** Hold period (1 second) */
71
+ HOLD_PERIOD_SECONDS: 1,
72
+ /** Inactivity timeout (10 seconds) */
73
+ INACTIVITY_TIMEOUT_SECONDS: 10,
74
+ /** Abandonment timeout (60 seconds) */
75
+ ABANDONMENT_TIMEOUT_SECONDS: 60,
76
+ /** Refund window (2 minutes) */
77
+ REFUND_WINDOW_SECONDS: 120,
78
+ /** Pivot withdrawal window (10 seconds) */
79
+ PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10,
80
+ /** Early token cooling period (10 seconds) */
81
+ EARLY_TOKEN_COOLING_PERIOD: 10,
82
+ /** Exit window period (20 seconds) */
83
+ EXIT_WINDOW_PERIOD: 20,
84
+ /** Wallet update timelock (60 seconds) */
85
+ WALLET_UPDATE_TIMELOCK: 60,
86
+ /** Minimum deadline duration (60 seconds) */
87
+ MIN_DEADLINE_DURATION_SECONDS: 60,
88
+ /** Maximum deadline duration (90 days) */
89
+ MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,
90
+ /** Deadline grace period (5 seconds) */
91
+ DEADLINE_GRACE_PERIOD_SECONDS: 5
92
+ };
93
+ function getTimingConstants(isDev = false) {
94
+ return isDev ? TIMING_DEV : TIMING_PRODUCTION;
95
+ }
96
+ var TIMING = TIMING_PRODUCTION;
61
97
  var TIER_CONSTRAINTS = {
62
98
  /** Minimum number of tiers */
63
99
  MIN_TIERS: 1,
@@ -189,6 +225,6 @@ var TOKENOMICS = {
189
225
  TOTAL_ALLOCATION_BPS: 1e4
190
226
  };
191
227
 
192
- export { GOVERNANCE, InvestmentTier, NFT, PROGRESSIVE_PRICING, SEEDS, TIER_CONSTRAINTS, TIER_MINIMUMS, TIER_TOKEN_MULTIPLIERS, TIER_VOTE_MULTIPLIERS, TIMING, TOKENOMICS, USDC, VALIDATION, findTierIndex, getTierFromAmount, getTokenMultiplier, getVoteMultiplier };
228
+ export { GOVERNANCE, InvestmentTier, NFT, PROGRESSIVE_PRICING, SEEDS, TIER_CONSTRAINTS, TIER_MINIMUMS, TIER_TOKEN_MULTIPLIERS, TIER_VOTE_MULTIPLIERS, TIMING, TIMING_DEV, TIMING_PRODUCTION, TOKENOMICS, USDC, VALIDATION, findTierIndex, getTierFromAmount, getTimingConstants, getTokenMultiplier, getVoteMultiplier };
193
229
  //# sourceMappingURL=index.js.map
194
230
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/index.ts"],"names":["InvestmentTier"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Raise Constants\n *\n * Mirrors the on-chain program constants for client-side validation\n * and display purposes.\n */\n\n// =============================================================================\n// PDA Seeds\n// =============================================================================\n\nexport const SEEDS = {\n PROJECT: 'project',\n MILESTONE: 'milestone',\n INVESTMENT: 'investment',\n VOTE: 'vote',\n ESCROW: 'escrow',\n PIVOT: 'pivot',\n PIVOT_PROPOSAL: 'pivot_proposal',\n TGE_ESCROW: 'tge_escrow',\n TGE_ESCROW_VAULT: 'tge_escrow_vault',\n SCAM_REPORT: 'scam_report',\n ADMIN_CONFIG: 'admin-config',\n NFT_MINT: 'nft_mint',\n AUTHORITY: 'authority',\n FUTURE_ROUND_VAULT: 'future_round_vault',\n FUTURE_ROUND_STATE: 'future_round_state',\n // Multi-Round Fundraising seeds\n FUNDING_ROUND: 'funding_round',\n ROUND_ESCROW: 'round_escrow',\n INVESTOR_MS_VESTING: 'investor_ms_vesting',\n} as const;\n\n// =============================================================================\n// Validation Constants\n// =============================================================================\n\nexport const VALIDATION = {\n /** Minimum number of milestones per project */\n MIN_MILESTONES: 2,\n /** Maximum number of milestones per project */\n MAX_MILESTONES: 10,\n /** Milestone percentages must sum to this value */\n MILESTONE_PERCENTAGE_SUM: 100,\n /** Maximum funding buffer (110% of goal) */\n MAX_FUNDING_BUFFER_PERCENT: 110,\n /** Maximum metadata URI length */\n MAX_METADATA_URI_LENGTH: 200,\n /** Maximum pivot description length */\n MAX_PIVOT_DESCRIPTION_LEN: 256,\n /** Maximum pivot vision length */\n MAX_PIVOT_VISION_LEN: 512,\n /** Maximum pivot justification length */\n MAX_PIVOT_JUSTIFICATION_LEN: 512,\n} as const;\n\n// =============================================================================\n// Timing Constants (in seconds)\n// =============================================================================\n\nexport const TIMING = {\n /** Production voting period (14 days) */\n VOTING_PERIOD_SECONDS: 1_209_600,\n /** Production hold period (7 days) */\n HOLD_PERIOD_SECONDS: 604_800,\n /** Inactivity timeout (90 days) */\n INACTIVITY_TIMEOUT_SECONDS: 7_776_000,\n /** Abandonment timeout (90 days) */\n ABANDONMENT_TIMEOUT_SECONDS: 7_776_000,\n /** Refund window (14 days) */\n REFUND_WINDOW_SECONDS: 1_209_600,\n /** Pivot withdrawal window (7 days) */\n PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604_800,\n /** Minimum TGE date (15 days from now) */\n TGE_MIN_DAYS: 1_296_000,\n /** Maximum TGE date (90 days from now) */\n TGE_MAX_DAYS: 7_776_000,\n /** Post-TGE holdback period (30 days) */\n POST_TGE_HOLDBACK_DAYS: 2_592_000,\n} as const;\n\n// =============================================================================\n// Tier Configuration Constraints\n// =============================================================================\n\nexport const TIER_CONSTRAINTS = {\n /** Minimum number of tiers */\n MIN_TIERS: 1,\n /** Maximum number of tiers */\n MAX_TIERS: 10,\n /** Minimum tier amount (10 USDC in lamports) */\n MIN_TIER_AMOUNT: 10_000_000n,\n /** Minimum max_lots per tier */\n MIN_TIER_MAX_LOTS: 1,\n /** Minimum token ratio */\n MIN_TIER_TOKEN_RATIO: 1n,\n /** Minimum vote multiplier (100 = 1.0x) */\n MIN_TIER_VOTE_MULTIPLIER: 100,\n} as const;\n\n// =============================================================================\n// Progressive Pricing Constants (add-linear-progressive-pricing)\n// =============================================================================\n\nexport const PROGRESSIVE_PRICING = {\n /** Base price multiplier (10000 BPS = 1.0x) */\n PRICE_MULTIPLIER_BASE: 10000,\n /** Maximum price multiplier (20000 BPS = 2.0x) */\n MAX_MULTIPLIER_BPS: 20000,\n /** Percentage of ZEMYTH increment allocated to time-based component */\n TIME_ALLOCATION_PERCENT: 50,\n /** Percentage of ZEMYTH increment allocated to milestone spike component */\n MILESTONE_ALLOCATION_PERCENT: 50,\n} as const;\n\n// =============================================================================\n// Investment Tiers (Legacy - kept for backwards compatibility)\n// =============================================================================\n\nexport enum InvestmentTier {\n Bronze = 'Bronze',\n Silver = 'Silver',\n Gold = 'Gold',\n Platinum = 'Platinum',\n Diamond = 'Diamond',\n}\n\n/** Investment tier minimum amounts in USDC lamports (6 decimals) - LEGACY */\nexport const TIER_MINIMUMS = {\n [InvestmentTier.Bronze]: 100_000_000n, // 100 USDC\n [InvestmentTier.Silver]: 500_000_000n, // 500 USDC\n [InvestmentTier.Gold]: 1_000_000_000n, // 1,000 USDC\n [InvestmentTier.Platinum]: 5_000_000_000n, // 5,000 USDC\n [InvestmentTier.Diamond]: 10_000_000_000n, // 10,000 USDC\n} as const;\n\n/** Vote weight multipliers (scaled by 100) - LEGACY */\nexport const TIER_VOTE_MULTIPLIERS = {\n [InvestmentTier.Bronze]: 100, // 1.0x\n [InvestmentTier.Silver]: 120, // 1.2x\n [InvestmentTier.Gold]: 150, // 1.5x\n [InvestmentTier.Platinum]: 200, // 2.0x\n [InvestmentTier.Diamond]: 300, // 3.0x\n} as const;\n\n/** Token allocation multipliers (same as vote multipliers) - LEGACY */\nexport const TIER_TOKEN_MULTIPLIERS = {\n [InvestmentTier.Bronze]: 100,\n [InvestmentTier.Silver]: 120,\n [InvestmentTier.Gold]: 150,\n [InvestmentTier.Platinum]: 200,\n [InvestmentTier.Diamond]: 300,\n} as const;\n\n/** Get tier from investment amount (in lamports) - LEGACY, use project.tiers instead */\nexport function getTierFromAmount(amount: bigint): InvestmentTier {\n if (amount >= TIER_MINIMUMS[InvestmentTier.Diamond]) return InvestmentTier.Diamond;\n if (amount >= TIER_MINIMUMS[InvestmentTier.Platinum]) return InvestmentTier.Platinum;\n if (amount >= TIER_MINIMUMS[InvestmentTier.Gold]) return InvestmentTier.Gold;\n if (amount >= TIER_MINIMUMS[InvestmentTier.Silver]) return InvestmentTier.Silver;\n return InvestmentTier.Bronze;\n}\n\n/** Get vote multiplier for an investment amount - LEGACY */\nexport function getVoteMultiplier(amount: bigint): number {\n const tier = getTierFromAmount(amount);\n return TIER_VOTE_MULTIPLIERS[tier] / 100;\n}\n\n/** Get token multiplier for an investment amount - LEGACY */\nexport function getTokenMultiplier(amount: bigint): number {\n const tier = getTierFromAmount(amount);\n return TIER_TOKEN_MULTIPLIERS[tier] / 100;\n}\n\n/**\n * Find matching tier index for an investment amount (threshold-based)\n * Returns the highest tier where amount >= tier.amount\n */\nexport function findTierIndex(tiers: Array<{ amount: bigint }>, amount: bigint): number | null {\n for (let i = tiers.length - 1; i >= 0; i--) {\n if (amount >= tiers[i].amount) {\n return i;\n }\n }\n return null;\n}\n\n// =============================================================================\n// Voting and Governance\n// =============================================================================\n\nexport const GOVERNANCE = {\n /** Scam report threshold (30%) */\n SCAM_THRESHOLD_PERCENT: 30,\n /** Consecutive milestone failures before exit window eligible */\n CONSECUTIVE_FAILURES_THRESHOLD: 3,\n /** Milestone approval threshold (>50% weighted approval per whitepaper voting.md:100-101) */\n MILESTONE_APPROVAL_THRESHOLD_PERCENT: 50,\n} as const;\n\n// =============================================================================\n// NFT Constants\n// =============================================================================\n\nexport const NFT = {\n /** NFT symbol */\n SYMBOL: 'ZRI',\n /** NFT name prefix */\n NAME_PREFIX: 'Zemyth Raise Investment #',\n /** Royalty basis points (2%) */\n ROYALTY_BASIS_POINTS: 200,\n} as const;\n\n// =============================================================================\n// USDC Constants\n// =============================================================================\n\nexport const USDC = {\n /** USDC decimals */\n DECIMALS: 6,\n /** Convert USDC to lamports */\n toAmount: (usdc: number): bigint => BigInt(Math.floor(usdc * 10 ** 6)),\n /** Convert lamports to USDC */\n fromAmount: (lamports: bigint): number => Number(lamports) / 10 ** 6,\n} as const;\n\n// =============================================================================\n// Tokenomics Allocation Constants\n// =============================================================================\n\nexport const TOKENOMICS = {\n /** Minimum investor allocation (20%) */\n MIN_INVESTOR_ALLOCATION_BPS: 2000,\n /** Minimum founder allocation (5%) if > 0 */\n MIN_FOUNDER_ALLOCATION_BPS: 500,\n /** Minimum LP token allocation (5%) */\n MIN_LP_TOKEN_ALLOCATION_BPS: 500,\n /** Minimum LP USDC allocation (5%) */\n MIN_LP_USDC_BPS: 500,\n /** Minimum Zemyth allocation (1%) */\n MIN_ZEMYTH_ALLOCATION_BPS: 100,\n /** Default Zemyth allocation (1%) */\n DEFAULT_ZEMYTH_ALLOCATION_BPS: 100,\n /** Minimum future round allocation (10%) if > 0 */\n MIN_FUTURE_ROUND_ALLOCATION_BPS: 1000,\n /** Maximum token symbol length */\n MAX_TOKEN_SYMBOL_LEN: 8,\n /** Total allocation must sum to this (100% = 10000 bps) */\n TOTAL_ALLOCATION_BPS: 10000,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/constants/index.ts"],"names":["InvestmentTier"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Raise Constants\n *\n * Mirrors the on-chain program constants for client-side validation\n * and display purposes.\n */\n\n// =============================================================================\n// PDA Seeds\n// =============================================================================\n\nexport const SEEDS = {\n PROJECT: 'project',\n MILESTONE: 'milestone',\n INVESTMENT: 'investment',\n VOTE: 'vote',\n ESCROW: 'escrow',\n PIVOT: 'pivot',\n PIVOT_PROPOSAL: 'pivot_proposal',\n TGE_ESCROW: 'tge_escrow',\n TGE_ESCROW_VAULT: 'tge_escrow_vault',\n SCAM_REPORT: 'scam_report',\n ADMIN_CONFIG: 'admin-config',\n NFT_MINT: 'nft_mint',\n AUTHORITY: 'authority',\n FUTURE_ROUND_VAULT: 'future_round_vault',\n FUTURE_ROUND_STATE: 'future_round_state',\n // Multi-Round Fundraising seeds\n FUNDING_ROUND: 'funding_round',\n ROUND_ESCROW: 'round_escrow',\n INVESTOR_MS_VESTING: 'investor_ms_vesting',\n} as const;\n\n// =============================================================================\n// Validation Constants\n// =============================================================================\n\nexport const VALIDATION = {\n /** Minimum number of milestones per project */\n MIN_MILESTONES: 2,\n /** Maximum number of milestones per project */\n MAX_MILESTONES: 10,\n /** Milestone percentages must sum to this value */\n MILESTONE_PERCENTAGE_SUM: 100,\n /** Maximum funding buffer (110% of goal) */\n MAX_FUNDING_BUFFER_PERCENT: 110,\n /** Maximum metadata URI length */\n MAX_METADATA_URI_LENGTH: 200,\n /** Maximum pivot description length */\n MAX_PIVOT_DESCRIPTION_LEN: 256,\n /** Maximum pivot vision length */\n MAX_PIVOT_VISION_LEN: 512,\n /** Maximum pivot justification length */\n MAX_PIVOT_JUSTIFICATION_LEN: 512,\n} as const;\n\n// =============================================================================\n// Timing Constants (in seconds)\n// =============================================================================\n\n/** Production timing constants (mainnet) */\nexport const TIMING_PRODUCTION = {\n /** Voting period (14 days) */\n VOTING_PERIOD_SECONDS: 1_209_600,\n /** Hold period (7 days) */\n HOLD_PERIOD_SECONDS: 604_800,\n /** Inactivity timeout (90 days) */\n INACTIVITY_TIMEOUT_SECONDS: 7_776_000,\n /** Abandonment timeout (90 days) */\n ABANDONMENT_TIMEOUT_SECONDS: 7_776_000,\n /** Refund window (14 days) */\n REFUND_WINDOW_SECONDS: 1_209_600,\n /** Pivot withdrawal window (7 days) */\n PIVOT_WITHDRAWAL_WINDOW_SECONDS: 604_800,\n /** Early token cooling period (24 hours) */\n EARLY_TOKEN_COOLING_PERIOD: 86_400,\n /** Exit window period (7 days) */\n EXIT_WINDOW_PERIOD: 604_800,\n /** Wallet update timelock (7 days) */\n WALLET_UPDATE_TIMELOCK: 604_800,\n /** Minimum deadline duration (7 days) */\n MIN_DEADLINE_DURATION_SECONDS: 604_800,\n /** Maximum deadline duration (90 days) */\n MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,\n /** Deadline grace period (90 days) */\n DEADLINE_GRACE_PERIOD_SECONDS: 7_776_000,\n} as const;\n\n/** Dev timing constants (localnet/devnet) - matches Solana program dev mode */\nexport const TIMING_DEV = {\n /** Voting period (60 seconds) */\n VOTING_PERIOD_SECONDS: 60,\n /** Hold period (1 second) */\n HOLD_PERIOD_SECONDS: 1,\n /** Inactivity timeout (10 seconds) */\n INACTIVITY_TIMEOUT_SECONDS: 10,\n /** Abandonment timeout (60 seconds) */\n ABANDONMENT_TIMEOUT_SECONDS: 60,\n /** Refund window (2 minutes) */\n REFUND_WINDOW_SECONDS: 120,\n /** Pivot withdrawal window (10 seconds) */\n PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10,\n /** Early token cooling period (10 seconds) */\n EARLY_TOKEN_COOLING_PERIOD: 10,\n /** Exit window period (20 seconds) */\n EXIT_WINDOW_PERIOD: 20,\n /** Wallet update timelock (60 seconds) */\n WALLET_UPDATE_TIMELOCK: 60,\n /** Minimum deadline duration (60 seconds) */\n MIN_DEADLINE_DURATION_SECONDS: 60,\n /** Maximum deadline duration (90 days) */\n MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,\n /** Deadline grace period (5 seconds) */\n DEADLINE_GRACE_PERIOD_SECONDS: 5,\n} as const;\n\n/**\n * Get timing constants based on environment\n * @param isDev - Whether to use dev mode constants (localnet/devnet)\n */\nexport function getTimingConstants(isDev: boolean = false) {\n return isDev ? TIMING_DEV : TIMING_PRODUCTION;\n}\n\n/** @deprecated Use TIMING_PRODUCTION or TIMING_DEV instead */\nexport const TIMING = TIMING_PRODUCTION;\n\n// =============================================================================\n// Tier Configuration Constraints\n// =============================================================================\n\nexport const TIER_CONSTRAINTS = {\n /** Minimum number of tiers */\n MIN_TIERS: 1,\n /** Maximum number of tiers */\n MAX_TIERS: 10,\n /** Minimum tier amount (10 USDC in lamports) */\n MIN_TIER_AMOUNT: 10_000_000n,\n /** Minimum max_lots per tier */\n MIN_TIER_MAX_LOTS: 1,\n /** Minimum token ratio */\n MIN_TIER_TOKEN_RATIO: 1n,\n /** Minimum vote multiplier (100 = 1.0x) */\n MIN_TIER_VOTE_MULTIPLIER: 100,\n} as const;\n\n// =============================================================================\n// Progressive Pricing Constants (add-linear-progressive-pricing)\n// =============================================================================\n\nexport const PROGRESSIVE_PRICING = {\n /** Base price multiplier (10000 BPS = 1.0x) */\n PRICE_MULTIPLIER_BASE: 10000,\n /** Maximum price multiplier (20000 BPS = 2.0x) */\n MAX_MULTIPLIER_BPS: 20000,\n /** Percentage of ZEMYTH increment allocated to time-based component */\n TIME_ALLOCATION_PERCENT: 50,\n /** Percentage of ZEMYTH increment allocated to milestone spike component */\n MILESTONE_ALLOCATION_PERCENT: 50,\n} as const;\n\n// =============================================================================\n// Investment Tiers (Legacy - kept for backwards compatibility)\n// =============================================================================\n\nexport enum InvestmentTier {\n Bronze = 'Bronze',\n Silver = 'Silver',\n Gold = 'Gold',\n Platinum = 'Platinum',\n Diamond = 'Diamond',\n}\n\n/** Investment tier minimum amounts in USDC lamports (6 decimals) - LEGACY */\nexport const TIER_MINIMUMS = {\n [InvestmentTier.Bronze]: 100_000_000n, // 100 USDC\n [InvestmentTier.Silver]: 500_000_000n, // 500 USDC\n [InvestmentTier.Gold]: 1_000_000_000n, // 1,000 USDC\n [InvestmentTier.Platinum]: 5_000_000_000n, // 5,000 USDC\n [InvestmentTier.Diamond]: 10_000_000_000n, // 10,000 USDC\n} as const;\n\n/** Vote weight multipliers (scaled by 100) - LEGACY */\nexport const TIER_VOTE_MULTIPLIERS = {\n [InvestmentTier.Bronze]: 100, // 1.0x\n [InvestmentTier.Silver]: 120, // 1.2x\n [InvestmentTier.Gold]: 150, // 1.5x\n [InvestmentTier.Platinum]: 200, // 2.0x\n [InvestmentTier.Diamond]: 300, // 3.0x\n} as const;\n\n/** Token allocation multipliers (same as vote multipliers) - LEGACY */\nexport const TIER_TOKEN_MULTIPLIERS = {\n [InvestmentTier.Bronze]: 100,\n [InvestmentTier.Silver]: 120,\n [InvestmentTier.Gold]: 150,\n [InvestmentTier.Platinum]: 200,\n [InvestmentTier.Diamond]: 300,\n} as const;\n\n/** Get tier from investment amount (in lamports) - LEGACY, use project.tiers instead */\nexport function getTierFromAmount(amount: bigint): InvestmentTier {\n if (amount >= TIER_MINIMUMS[InvestmentTier.Diamond]) return InvestmentTier.Diamond;\n if (amount >= TIER_MINIMUMS[InvestmentTier.Platinum]) return InvestmentTier.Platinum;\n if (amount >= TIER_MINIMUMS[InvestmentTier.Gold]) return InvestmentTier.Gold;\n if (amount >= TIER_MINIMUMS[InvestmentTier.Silver]) return InvestmentTier.Silver;\n return InvestmentTier.Bronze;\n}\n\n/** Get vote multiplier for an investment amount - LEGACY */\nexport function getVoteMultiplier(amount: bigint): number {\n const tier = getTierFromAmount(amount);\n return TIER_VOTE_MULTIPLIERS[tier] / 100;\n}\n\n/** Get token multiplier for an investment amount - LEGACY */\nexport function getTokenMultiplier(amount: bigint): number {\n const tier = getTierFromAmount(amount);\n return TIER_TOKEN_MULTIPLIERS[tier] / 100;\n}\n\n/**\n * Find matching tier index for an investment amount (threshold-based)\n * Returns the highest tier where amount >= tier.amount\n */\nexport function findTierIndex(tiers: Array<{ amount: bigint }>, amount: bigint): number | null {\n for (let i = tiers.length - 1; i >= 0; i--) {\n if (amount >= tiers[i].amount) {\n return i;\n }\n }\n return null;\n}\n\n// =============================================================================\n// Voting and Governance\n// =============================================================================\n\nexport const GOVERNANCE = {\n /** Scam report threshold (30%) */\n SCAM_THRESHOLD_PERCENT: 30,\n /** Consecutive milestone failures before exit window eligible */\n CONSECUTIVE_FAILURES_THRESHOLD: 3,\n /** Milestone approval threshold (>50% weighted approval per whitepaper voting.md:100-101) */\n MILESTONE_APPROVAL_THRESHOLD_PERCENT: 50,\n} as const;\n\n// =============================================================================\n// NFT Constants\n// =============================================================================\n\nexport const NFT = {\n /** NFT symbol */\n SYMBOL: 'ZRI',\n /** NFT name prefix */\n NAME_PREFIX: 'Zemyth Raise Investment #',\n /** Royalty basis points (2%) */\n ROYALTY_BASIS_POINTS: 200,\n} as const;\n\n// =============================================================================\n// USDC Constants\n// =============================================================================\n\nexport const USDC = {\n /** USDC decimals */\n DECIMALS: 6,\n /** Convert USDC to lamports */\n toAmount: (usdc: number): bigint => BigInt(Math.floor(usdc * 10 ** 6)),\n /** Convert lamports to USDC */\n fromAmount: (lamports: bigint): number => Number(lamports) / 10 ** 6,\n} as const;\n\n// =============================================================================\n// Tokenomics Allocation Constants\n// =============================================================================\n\nexport const TOKENOMICS = {\n /** Minimum investor allocation (20%) */\n MIN_INVESTOR_ALLOCATION_BPS: 2000,\n /** Minimum founder allocation (5%) if > 0 */\n MIN_FOUNDER_ALLOCATION_BPS: 500,\n /** Minimum LP token allocation (5%) */\n MIN_LP_TOKEN_ALLOCATION_BPS: 500,\n /** Minimum LP USDC allocation (5%) */\n MIN_LP_USDC_BPS: 500,\n /** Minimum Zemyth allocation (1%) */\n MIN_ZEMYTH_ALLOCATION_BPS: 100,\n /** Default Zemyth allocation (1%) */\n DEFAULT_ZEMYTH_ALLOCATION_BPS: 100,\n /** Minimum future round allocation (10%) if > 0 */\n MIN_FUTURE_ROUND_ALLOCATION_BPS: 1000,\n /** Maximum token symbol length */\n MAX_TOKEN_SYMBOL_LEN: 8,\n /** Total allocation must sum to this (100% = 10000 bps) */\n TOTAL_ALLOCATION_BPS: 10000,\n} as const;\n"]}
package/dist/index.cjs CHANGED
@@ -46,10 +46,10 @@ var VALIDATION = {
46
46
  /** Maximum pivot justification length */
47
47
  MAX_PIVOT_JUSTIFICATION_LEN: 512
48
48
  };
49
- var TIMING = {
50
- /** Production voting period (14 days) */
49
+ var TIMING_PRODUCTION = {
50
+ /** Voting period (14 days) */
51
51
  VOTING_PERIOD_SECONDS: 1209600,
52
- /** Production hold period (7 days) */
52
+ /** Hold period (7 days) */
53
53
  HOLD_PERIOD_SECONDS: 604800,
54
54
  /** Inactivity timeout (90 days) */
55
55
  INACTIVITY_TIMEOUT_SECONDS: 7776e3,
@@ -59,13 +59,49 @@ var TIMING = {
59
59
  REFUND_WINDOW_SECONDS: 1209600,
60
60
  /** Pivot withdrawal window (7 days) */
61
61
  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
62
+ /** Early token cooling period (24 hours) */
63
+ EARLY_TOKEN_COOLING_PERIOD: 86400,
64
+ /** Exit window period (7 days) */
65
+ EXIT_WINDOW_PERIOD: 604800,
66
+ /** Wallet update timelock (7 days) */
67
+ WALLET_UPDATE_TIMELOCK: 604800,
68
+ /** Minimum deadline duration (7 days) */
69
+ MIN_DEADLINE_DURATION_SECONDS: 604800,
70
+ /** Maximum deadline duration (90 days) */
71
+ MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,
72
+ /** Deadline grace period (90 days) */
73
+ DEADLINE_GRACE_PERIOD_SECONDS: 7776e3
68
74
  };
75
+ var TIMING_DEV = {
76
+ /** Voting period (60 seconds) */
77
+ VOTING_PERIOD_SECONDS: 60,
78
+ /** Hold period (1 second) */
79
+ HOLD_PERIOD_SECONDS: 1,
80
+ /** Inactivity timeout (10 seconds) */
81
+ INACTIVITY_TIMEOUT_SECONDS: 10,
82
+ /** Abandonment timeout (60 seconds) */
83
+ ABANDONMENT_TIMEOUT_SECONDS: 60,
84
+ /** Refund window (2 minutes) */
85
+ REFUND_WINDOW_SECONDS: 120,
86
+ /** Pivot withdrawal window (10 seconds) */
87
+ PIVOT_WITHDRAWAL_WINDOW_SECONDS: 10,
88
+ /** Early token cooling period (10 seconds) */
89
+ EARLY_TOKEN_COOLING_PERIOD: 10,
90
+ /** Exit window period (20 seconds) */
91
+ EXIT_WINDOW_PERIOD: 20,
92
+ /** Wallet update timelock (60 seconds) */
93
+ WALLET_UPDATE_TIMELOCK: 60,
94
+ /** Minimum deadline duration (60 seconds) */
95
+ MIN_DEADLINE_DURATION_SECONDS: 60,
96
+ /** Maximum deadline duration (90 days) */
97
+ MAX_DEADLINE_DURATION_SECONDS: 90 * 24 * 60 * 60,
98
+ /** Deadline grace period (5 seconds) */
99
+ DEADLINE_GRACE_PERIOD_SECONDS: 5
100
+ };
101
+ function getTimingConstants(isDev = false) {
102
+ return isDev ? TIMING_DEV : TIMING_PRODUCTION;
103
+ }
104
+ var TIMING = TIMING_PRODUCTION;
69
105
  var TIER_CONSTRAINTS = {
70
106
  /** Minimum number of tiers */
71
107
  MIN_TIERS: 1,
@@ -563,8 +599,8 @@ async function fetchAllMilestones(program, projectId) {
563
599
  const milestones = await getAccountNamespace(program).milestone.all([
564
600
  {
565
601
  memcmp: {
566
- offset: 8,
567
- // Skip discriminator
602
+ offset: 10,
603
+ // Skip discriminator (8) + version enum (1) + bump (1)
568
604
  bytes: projectPda.toBase58()
569
605
  }
570
606
  }
@@ -591,8 +627,8 @@ async function fetchAllInvestments(program, projectId) {
591
627
  const investments = await getAccountNamespace(program).investment.all([
592
628
  {
593
629
  memcmp: {
594
- offset: 8,
595
- // Skip discriminator
630
+ offset: 10,
631
+ // Skip discriminator (8) + version enum (1) + bump (1)
596
632
  bytes: projectPda.toBase58()
597
633
  }
598
634
  }
@@ -621,8 +657,8 @@ async function fetchAllVotes(program, projectId, milestoneIndex) {
621
657
  const votes = await getAccountNamespace(program).vote.all([
622
658
  {
623
659
  memcmp: {
624
- offset: 8,
625
- // Skip discriminator
660
+ offset: 10,
661
+ // Skip discriminator (8) + version enum (1) + bump (1)
626
662
  bytes: milestonePda.toBase58()
627
663
  }
628
664
  }
@@ -1153,7 +1189,8 @@ async function submitForApproval(program, projectId, founder) {
1153
1189
  founder
1154
1190
  }).rpc();
1155
1191
  }
1156
- async function approveProject(program, args, adminKeypair) {
1192
+ async function approveProject(program, args, admin) {
1193
+ const adminPubkey = admin instanceof web3_js.Keypair ? admin.publicKey : admin;
1157
1194
  const projectPda = getProjectPDA(args.projectId, program.programId);
1158
1195
  const tokenomicsPda = getTokenomicsPDA(projectPda, program.programId);
1159
1196
  const tokenVaultPda = getTokenVaultPDA(projectPda, program.programId);
@@ -1169,7 +1206,7 @@ async function approveProject(program, args, adminKeypair) {
1169
1206
  const computeBudgetIx = web3_js.ComputeBudgetProgram.setComputeUnitLimit({
1170
1207
  units: 4e5
1171
1208
  });
1172
- return getMethods(program).approveProject().accountsPartial({
1209
+ let builder = getMethods(program).approveProject().accountsPartial({
1173
1210
  project: projectPda,
1174
1211
  tokenomics: tokenomicsPda,
1175
1212
  tokenVault: tokenVaultPda,
@@ -1183,9 +1220,13 @@ async function approveProject(program, args, adminKeypair) {
1183
1220
  futureRoundTokenVault: futureRoundTokenVaultPda,
1184
1221
  futureRoundVault: futureRoundVaultPda,
1185
1222
  usdcMint: args.usdcMint,
1186
- authority: adminKeypair.publicKey,
1187
- payer: adminKeypair.publicKey
1188
- }).preInstructions([computeBudgetIx]).signers([adminKeypair]).rpc();
1223
+ authority: adminPubkey,
1224
+ payer: adminPubkey
1225
+ }).preInstructions([computeBudgetIx]);
1226
+ if (admin instanceof web3_js.Keypair) {
1227
+ builder = builder.signers([admin]);
1228
+ }
1229
+ return builder.rpc();
1189
1230
  }
1190
1231
  async function createMilestone(program, args, founder) {
1191
1232
  const projectPda = getProjectPDA(args.projectId, program.programId);
@@ -2444,7 +2485,7 @@ var RaiseClient = class _RaiseClient {
2444
2485
  return approveProject(
2445
2486
  this.program,
2446
2487
  args,
2447
- adminKeypair
2488
+ adminKeypair ?? this.walletPublicKey
2448
2489
  );
2449
2490
  }
2450
2491
  // ===========================================================================
@@ -3868,6 +3909,8 @@ exports.TIER_MINIMUMS = TIER_MINIMUMS;
3868
3909
  exports.TIER_TOKEN_MULTIPLIERS = TIER_TOKEN_MULTIPLIERS;
3869
3910
  exports.TIER_VOTE_MULTIPLIERS = TIER_VOTE_MULTIPLIERS;
3870
3911
  exports.TIMING = TIMING;
3912
+ exports.TIMING_DEV = TIMING_DEV;
3913
+ exports.TIMING_PRODUCTION = TIMING_PRODUCTION;
3871
3914
  exports.TOKENOMICS = TOKENOMICS;
3872
3915
  exports.USDC = USDC;
3873
3916
  exports.VALIDATION = VALIDATION;
@@ -3969,6 +4012,7 @@ exports.getRoundNftMintPDA = getRoundNftMintPDA;
3969
4012
  exports.getScamReportPDA = getScamReportPDA;
3970
4013
  exports.getTgeEscrowPDA = getTgeEscrowPDA;
3971
4014
  exports.getTierFromAmount = getTierFromAmount;
4015
+ exports.getTimingConstants = getTimingConstants;
3972
4016
  exports.getTokenMintPDA = getTokenMintPDA;
3973
4017
  exports.getTokenMultiplier = getTokenMultiplier;
3974
4018
  exports.getTokenVaultPDA = getTokenVaultPDA;