@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.
- package/dist/accounts/index.cjs +6 -6
- package/dist/accounts/index.cjs.map +1 -1
- package/dist/accounts/index.js +6 -6
- package/dist/accounts/index.js.map +1 -1
- package/dist/constants/index.cjs +48 -9
- package/dist/constants/index.cjs.map +1 -1
- package/dist/constants/index.d.cts +125 -9
- package/dist/constants/index.d.ts +125 -9
- package/dist/constants/index.js +46 -10
- package/dist/constants/index.js.map +1 -1
- package/dist/index.cjs +65 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +64 -23
- package/dist/index.js.map +1 -1
- package/dist/instructions/index.cjs +10 -5
- package/dist/instructions/index.cjs.map +1 -1
- package/dist/instructions/index.d.cts +1 -1
- package/dist/instructions/index.d.ts +1 -1
- package/dist/instructions/index.js +11 -6
- package/dist/instructions/index.js.map +1 -1
- package/dist/pdas/index.cjs.map +1 -1
- package/dist/pdas/index.js.map +1 -1
- package/package.json +1 -1
- package/src/accounts/index.ts +3 -3
- package/src/client.ts +2 -2
- package/src/constants/index.ts +55 -9
- package/src/index.ts +3 -0
- package/src/instructions/index.ts +12 -7
|
@@ -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
|
-
/**
|
|
156
|
+
/** Voting period (14 days) */
|
|
47
157
|
readonly VOTING_PERIOD_SECONDS: 1209600;
|
|
48
|
-
/**
|
|
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
|
-
/**
|
|
59
|
-
readonly
|
|
60
|
-
/**
|
|
61
|
-
readonly
|
|
62
|
-
/**
|
|
63
|
-
readonly
|
|
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
|
-
/**
|
|
156
|
+
/** Voting period (14 days) */
|
|
47
157
|
readonly VOTING_PERIOD_SECONDS: 1209600;
|
|
48
|
-
/**
|
|
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
|
-
/**
|
|
59
|
-
readonly
|
|
60
|
-
/**
|
|
61
|
-
readonly
|
|
62
|
-
/**
|
|
63
|
-
readonly
|
|
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 };
|
package/dist/constants/index.js
CHANGED
|
@@ -38,10 +38,10 @@ var VALIDATION = {
|
|
|
38
38
|
/** Maximum pivot justification length */
|
|
39
39
|
MAX_PIVOT_JUSTIFICATION_LEN: 512
|
|
40
40
|
};
|
|
41
|
-
var
|
|
42
|
-
/**
|
|
41
|
+
var TIMING_PRODUCTION = {
|
|
42
|
+
/** Voting period (14 days) */
|
|
43
43
|
VOTING_PERIOD_SECONDS: 1209600,
|
|
44
|
-
/**
|
|
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
|
-
/**
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
|
|
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":";AAWO,IAAM,KAAA,GAAQ;AAAA,EACnB,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,UAAA,EAAY,YAAA;AAAA,EACZ,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,KAAA,EAAO,OAAA;AAAA,EACP,cAAA,EAAgB,gBAAA;AAAA,EAChB,UAAA,EAAY,YAAA;AAAA,EACZ,gBAAA,EAAkB,kBAAA;AAAA,EAClB,WAAA,EAAa,aAAA;AAAA,EACb,YAAA,EAAc,cAAA;AAAA,EACd,QAAA,EAAU,UAAA;AAAA,EACV,SAAA,EAAW,WAAA;AAAA,EACX,kBAAA,EAAoB,oBAAA;AAAA,EACpB,kBAAA,EAAoB,oBAAA;AAAA;AAAA,EAEpB,aAAA,EAAe,eAAA;AAAA,EACf,YAAA,EAAc,cAAA;AAAA,EACd,mBAAA,EAAqB;AACvB;AAMO,IAAM,UAAA,GAAa;AAAA;AAAA,EAExB,cAAA,EAAgB,CAAA;AAAA;AAAA,EAEhB,cAAA,EAAgB,EAAA;AAAA;AAAA,EAEhB,wBAAA,EAA0B,GAAA;AAAA;AAAA,EAE1B,0BAAA,EAA4B,GAAA;AAAA;AAAA,EAE5B,uBAAA,EAAyB,GAAA;AAAA;AAAA,EAEzB,yBAAA,EAA2B,GAAA;AAAA;AAAA,EAE3B,oBAAA,EAAsB,GAAA;AAAA;AAAA,EAEtB,2BAAA,EAA6B;AAC/B;AAMO,IAAM,MAAA,GAAS;AAAA;AAAA,EAEpB,qBAAA,EAAuB,OAAA;AAAA;AAAA,EAEvB,mBAAA,EAAqB,MAAA;AAAA;AAAA,EAErB,0BAAA,EAA4B,MAAA;AAAA;AAAA,EAE5B,2BAAA,EAA6B,MAAA;AAAA;AAAA,EAE7B,qBAAA,EAAuB,OAAA;AAAA;AAAA,EAEvB,+BAAA,EAAiC,MAAA;AAAA;AAAA,EAEjC,YAAA,EAAc,MAAA;AAAA;AAAA,EAEd,YAAA,EAAc,MAAA;AAAA;AAAA,EAEd,sBAAA,EAAwB;AAC1B;AAMO,IAAM,gBAAA,GAAmB;AAAA;AAAA,EAE9B,SAAA,EAAW,CAAA;AAAA;AAAA,EAEX,SAAA,EAAW,EAAA;AAAA;AAAA,EAEX,eAAA,EAAiB,SAAA;AAAA;AAAA,EAEjB,iBAAA,EAAmB,CAAA;AAAA;AAAA,EAEnB,oBAAA,EAAsB,EAAA;AAAA;AAAA,EAEtB,wBAAA,EAA0B;AAC5B;AAMO,IAAM,mBAAA,GAAsB;AAAA;AAAA,EAEjC,qBAAA,EAAuB,GAAA;AAAA;AAAA,EAEvB,kBAAA,EAAoB,GAAA;AAAA;AAAA,EAEpB,uBAAA,EAAyB,EAAA;AAAA;AAAA,EAEzB,4BAAA,EAA8B;AAChC;AAMO,IAAK,cAAA,qBAAAA,eAAAA,KAAL;AACL,EAAAA,gBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,gBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,gBAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,gBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,gBAAA,SAAA,CAAA,GAAU,SAAA;AALA,EAAA,OAAAA,eAAAA;AAAA,CAAA,EAAA,cAAA,IAAA,EAAA;AASL,IAAM,aAAA,GAAgB;AAAA,EAC3B,CAAC,wBAAwB,UAAA;AAAA;AAAA,EACzB,CAAC,wBAAwB,UAAA;AAAA;AAAA,EACzB,CAAC,oBAAsB,WAAA;AAAA;AAAA,EACvB,CAAC,4BAA0B,WAAA;AAAA;AAAA,EAC3B,CAAC,0BAAyB;AAAA;AAC5B;AAGO,IAAM,qBAAA,GAAwB;AAAA,EACnC,CAAC,wBAAwB,GAAA;AAAA;AAAA,EACzB,CAAC,wBAAwB,GAAA;AAAA;AAAA,EACzB,CAAC,oBAAsB,GAAA;AAAA;AAAA,EACvB,CAAC,4BAA0B,GAAA;AAAA;AAAA,EAC3B,CAAC,0BAAyB;AAAA;AAC5B;AAGO,IAAM,sBAAA,GAAyB;AAAA,EACpC,CAAC,wBAAwB,GAAA;AAAA,EACzB,CAAC,wBAAwB,GAAA;AAAA,EACzB,CAAC,oBAAsB,GAAA;AAAA,EACvB,CAAC,4BAA0B,GAAA;AAAA,EAC3B,CAAC,0BAAyB;AAC5B;AAGO,SAAS,kBAAkB,MAAA,EAAgC;AAChE,EAAA,IAAI,MAAA,IAAU,aAAA,CAAc,SAAA,eAAsB,EAAG,OAAO,SAAA;AAC5D,EAAA,IAAI,MAAA,IAAU,aAAA,CAAc,UAAA,gBAAuB,EAAG,OAAO,UAAA;AAC7D,EAAA,IAAI,MAAA,IAAU,aAAA,CAAc,MAAA,YAAmB,EAAG,OAAO,MAAA;AACzD,EAAA,IAAI,MAAA,IAAU,aAAA,CAAc,QAAA,cAAqB,EAAG,OAAO,QAAA;AAC3D,EAAA,OAAO,QAAA;AACT;AAGO,SAAS,kBAAkB,MAAA,EAAwB;AACxD,EAAA,MAAM,IAAA,GAAO,kBAAkB,MAAM,CAAA;AACrC,EAAA,OAAO,qBAAA,CAAsB,IAAI,CAAA,GAAI,GAAA;AACvC;AAGO,SAAS,mBAAmB,MAAA,EAAwB;AACzD,EAAA,MAAM,IAAA,GAAO,kBAAkB,MAAM,CAAA;AACrC,EAAA,OAAO,sBAAA,CAAuB,IAAI,CAAA,GAAI,GAAA;AACxC;AAMO,SAAS,aAAA,CAAc,OAAkC,MAAA,EAA+B;AAC7F,EAAA,KAAA,IAAS,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,CAAA,IAAK,GAAG,CAAA,EAAA,EAAK;AAC1C,IAAA,IAAI,MAAA,IAAU,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAQ;AAC7B,MAAA,OAAO,CAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAMO,IAAM,UAAA,GAAa;AAAA;AAAA,EAExB,sBAAA,EAAwB,EAAA;AAAA;AAAA,EAExB,8BAAA,EAAgC,CAAA;AAAA;AAAA,EAEhC,oCAAA,EAAsC;AACxC;AAMO,IAAM,GAAA,GAAM;AAAA;AAAA,EAEjB,MAAA,EAAQ,KAAA;AAAA;AAAA,EAER,WAAA,EAAa,2BAAA;AAAA;AAAA,EAEb,oBAAA,EAAsB;AACxB;AAMO,IAAM,IAAA,GAAO;AAAA;AAAA,EAElB,QAAA,EAAU,CAAA;AAAA;AAAA,EAEV,QAAA,EAAU,CAAC,IAAA,KAAyB,MAAA,CAAO,KAAK,KAAA,CAAM,IAAA,GAAO,EAAA,IAAM,CAAC,CAAC,CAAA;AAAA;AAAA,EAErE,YAAY,CAAC,QAAA,KAA6B,MAAA,CAAO,QAAQ,IAAI,EAAA,IAAM;AACrE;AAMO,IAAM,UAAA,GAAa;AAAA;AAAA,EAExB,2BAAA,EAA6B,GAAA;AAAA;AAAA,EAE7B,0BAAA,EAA4B,GAAA;AAAA;AAAA,EAE5B,2BAAA,EAA6B,GAAA;AAAA;AAAA,EAE7B,eAAA,EAAiB,GAAA;AAAA;AAAA,EAEjB,yBAAA,EAA2B,GAAA;AAAA;AAAA,EAE3B,6BAAA,EAA+B,GAAA;AAAA;AAAA,EAE/B,+BAAA,EAAiC,GAAA;AAAA;AAAA,EAEjC,oBAAA,EAAsB,CAAA;AAAA;AAAA,EAEtB,oBAAA,EAAsB;AACxB","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
|
|
50
|
-
/**
|
|
49
|
+
var TIMING_PRODUCTION = {
|
|
50
|
+
/** Voting period (14 days) */
|
|
51
51
|
VOTING_PERIOD_SECONDS: 1209600,
|
|
52
|
-
/**
|
|
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
|
-
/**
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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:
|
|
1187
|
-
payer:
|
|
1188
|
-
}).preInstructions([computeBudgetIx])
|
|
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;
|