proof-of-take-sdk 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/getters/index.d.ts +0 -1
- package/dist/getters/index.js +0 -1
- package/dist/idl/proof_of_take.json +54 -458
- package/dist/instructions/claimReferralPenaltyForWindow.d.ts +2 -1
- package/dist/instructions/claimReferralPenaltyForWindow.js +4 -4
- package/dist/instructions/claimWindowRewards.d.ts +2 -1
- package/dist/instructions/claimWindowRewards.js +2 -2
- package/dist/instructions/confirmedPostOnX.d.ts +3 -1
- package/dist/instructions/confirmedPostOnX.js +4 -10
- package/dist/instructions/createMiztake.d.ts +3 -2
- package/dist/instructions/createMiztake.js +5 -5
- package/dist/instructions/joinSeason.d.ts +3 -3
- package/dist/instructions/joinSeason.js +9 -20
- package/dist/instructions/viewSeasonMembershipStatus.d.ts +2 -2
- package/dist/instructions/viewSeasonMembershipStatus.js +3 -3
- package/dist/instructions/withdrawSeasonDeposit.d.ts +3 -1
- package/dist/instructions/withdrawSeasonDeposit.js +3 -7
- package/dist/types/proof_of_take.d.ts +43 -447
- package/dist/types.d.ts +0 -3
- package/dist/utils/accountUpdates.d.ts +6 -6
- package/dist/utils/accountUpdates.js +7 -10
- package/dist/utils/constants.d.ts +0 -1
- package/dist/utils/constants.js +1 -2
- package/dist/utils/pdaManager.d.ts +6 -6
- package/dist/utils/pdaManager.js +11 -11
- package/dist/utils/pdas.d.ts +21 -12
- package/dist/utils/pdas.js +36 -20
- package/dist/utils/tierPenalty.d.ts +8 -0
- package/dist/utils/tierPenalty.js +30 -0
- package/package.json +1 -1
- package/dist/getters/getTokenVault.d.ts +0 -30
- package/dist/getters/getTokenVault.js +0 -56
|
@@ -66,11 +66,11 @@ export declare function updateMiztakeStatisticsForCreation(statistics: MiztakeSt
|
|
|
66
66
|
* @param user - User's public key
|
|
67
67
|
* @param seasonNumber - Season number
|
|
68
68
|
* @param windowNumber - Window number
|
|
69
|
-
* @param
|
|
69
|
+
* @param tier - Tier number (1..=5)
|
|
70
70
|
* @param miztakeId - The miztake ID to associate
|
|
71
71
|
* @returns Initialized/Updated UserWindowParticipation object
|
|
72
72
|
*/
|
|
73
|
-
export declare function initializeUserWindowParticipation(user: PublicKey, seasonNumber: BN, windowNumber: BN,
|
|
73
|
+
export declare function initializeUserWindowParticipation(user: PublicKey, seasonNumber: BN, windowNumber: BN, tier: number, miztakeId: BN): UserWindowParticipation;
|
|
74
74
|
/**
|
|
75
75
|
* Initialize RewardWindow
|
|
76
76
|
* Mirrors the logic from season_helpers::initialize_window
|
|
@@ -97,7 +97,7 @@ export declare function updateMiztakeForSeasonUse(miztake: Miztake, seasonNumber
|
|
|
97
97
|
* Mirrors the initialization from join_season.rs (lines 84-96)
|
|
98
98
|
*
|
|
99
99
|
* @param user - User's public key
|
|
100
|
-
* @param
|
|
100
|
+
* @param tier - Tier number (1..=5)
|
|
101
101
|
* @param seasonNumber - Season number
|
|
102
102
|
* @param depositTier - Tier chosen at join time
|
|
103
103
|
* @param depositAmount - Active deposit amount (participates in rewards/penalties)
|
|
@@ -106,7 +106,7 @@ export declare function updateMiztakeForSeasonUse(miztake: Miztake, seasonNumber
|
|
|
106
106
|
* @param joinedWindowNumber - Window number when joined
|
|
107
107
|
* @returns Initialized SeasonMembership object
|
|
108
108
|
*/
|
|
109
|
-
export declare function initializeSeasonMembership(user: PublicKey,
|
|
109
|
+
export declare function initializeSeasonMembership(user: PublicKey, seasonNumber: BN, depositTier: SeasonDepositTier, referrer: PublicKey, depositAmount: BN, depositEscrowedAmount: BN, joinedAt: BN, joinedWindowNumber: BN, bump: number): SeasonMembership;
|
|
110
110
|
/**
|
|
111
111
|
* Update Season after a user joins
|
|
112
112
|
* Mirrors the update from join_season.rs (lines 98-104)
|
|
@@ -197,7 +197,7 @@ export declare function updateMembershipForClaim(membership: SeasonMembership, r
|
|
|
197
197
|
* @param referredUser - The user who missed the window
|
|
198
198
|
* @param seasonNumber - Season number
|
|
199
199
|
* @param windowNumber - Window number
|
|
200
|
-
* @param
|
|
200
|
+
* @param tier - Tier number (1..=5)
|
|
201
201
|
* @param claimant - Referrer (or root admin if no referrer)
|
|
202
202
|
* @param perWindowPenalty - Tier penalty per window (base units)
|
|
203
203
|
* @param claimedAt - Unix timestamp in seconds (i64 on-chain, represented as BN in SDK)
|
|
@@ -206,7 +206,7 @@ export declare function initializeReferralPenaltyClaim(params: {
|
|
|
206
206
|
referredUser: PublicKey;
|
|
207
207
|
seasonNumber: BN;
|
|
208
208
|
windowNumber: BN;
|
|
209
|
-
|
|
209
|
+
tier: number;
|
|
210
210
|
claimant: PublicKey;
|
|
211
211
|
perWindowPenalty: BN;
|
|
212
212
|
claimedAt?: BN;
|
|
@@ -135,17 +135,16 @@ function updateMiztakeStatisticsForCreation(statistics) {
|
|
|
135
135
|
* @param user - User's public key
|
|
136
136
|
* @param seasonNumber - Season number
|
|
137
137
|
* @param windowNumber - Window number
|
|
138
|
-
* @param
|
|
138
|
+
* @param tier - Tier number (1..=5)
|
|
139
139
|
* @param miztakeId - The miztake ID to associate
|
|
140
140
|
* @returns Initialized/Updated UserWindowParticipation object
|
|
141
141
|
*/
|
|
142
|
-
function initializeUserWindowParticipation(user, seasonNumber, windowNumber,
|
|
143
|
-
const [, bump] = (0, pdas_1.getUserWindowParticipationPda)(user,
|
|
142
|
+
function initializeUserWindowParticipation(user, seasonNumber, windowNumber, tier, miztakeId) {
|
|
143
|
+
const [, bump] = (0, pdas_1.getUserWindowParticipationPda)(seasonNumber, user, tier, windowNumber);
|
|
144
144
|
return {
|
|
145
145
|
user,
|
|
146
146
|
seasonNumber,
|
|
147
147
|
windowNumber,
|
|
148
|
-
seasonMembershipId,
|
|
149
148
|
postedSuccessfully: false,
|
|
150
149
|
claimedReward: false,
|
|
151
150
|
rewardAmount: new anchor_1.BN(0),
|
|
@@ -203,7 +202,7 @@ function updateMiztakeForSeasonUse(miztake, seasonNumber, windowNumber) {
|
|
|
203
202
|
* Mirrors the initialization from join_season.rs (lines 84-96)
|
|
204
203
|
*
|
|
205
204
|
* @param user - User's public key
|
|
206
|
-
* @param
|
|
205
|
+
* @param tier - Tier number (1..=5)
|
|
207
206
|
* @param seasonNumber - Season number
|
|
208
207
|
* @param depositTier - Tier chosen at join time
|
|
209
208
|
* @param depositAmount - Active deposit amount (participates in rewards/penalties)
|
|
@@ -212,9 +211,8 @@ function updateMiztakeForSeasonUse(miztake, seasonNumber, windowNumber) {
|
|
|
212
211
|
* @param joinedWindowNumber - Window number when joined
|
|
213
212
|
* @returns Initialized SeasonMembership object
|
|
214
213
|
*/
|
|
215
|
-
function initializeSeasonMembership(user,
|
|
214
|
+
function initializeSeasonMembership(user, seasonNumber, depositTier, referrer, depositAmount, depositEscrowedAmount, joinedAt, joinedWindowNumber, bump) {
|
|
216
215
|
return {
|
|
217
|
-
id: seasonMembershipId,
|
|
218
216
|
owner: user,
|
|
219
217
|
referrer,
|
|
220
218
|
seasonNumber,
|
|
@@ -481,20 +479,19 @@ function updateMembershipForClaim(membership, rewardAmount) {
|
|
|
481
479
|
* @param referredUser - The user who missed the window
|
|
482
480
|
* @param seasonNumber - Season number
|
|
483
481
|
* @param windowNumber - Window number
|
|
484
|
-
* @param
|
|
482
|
+
* @param tier - Tier number (1..=5)
|
|
485
483
|
* @param claimant - Referrer (or root admin if no referrer)
|
|
486
484
|
* @param perWindowPenalty - Tier penalty per window (base units)
|
|
487
485
|
* @param claimedAt - Unix timestamp in seconds (i64 on-chain, represented as BN in SDK)
|
|
488
486
|
*/
|
|
489
487
|
function initializeReferralPenaltyClaim(params) {
|
|
490
|
-
const [, bump] = (0, pdas_1.getReferralPenaltyClaimPda)(params.
|
|
488
|
+
const [, bump] = (0, pdas_1.getReferralPenaltyClaimPda)(params.seasonNumber, params.referredUser, params.tier, params.windowNumber);
|
|
491
489
|
const claimedAt = getCurrentTimestamp(params.claimedAt);
|
|
492
490
|
const amount = params.perWindowPenalty.muln(20).divn(100);
|
|
493
491
|
return {
|
|
494
492
|
referredUser: params.referredUser,
|
|
495
493
|
seasonNumber: params.seasonNumber,
|
|
496
494
|
windowNumber: params.windowNumber,
|
|
497
|
-
seasonMembershipId: params.seasonMembershipId,
|
|
498
495
|
claimant: params.claimant,
|
|
499
496
|
amount,
|
|
500
497
|
claimedAt,
|
|
@@ -7,7 +7,6 @@ export declare const ADMIN_PUBLIC_KEY: PublicKey;
|
|
|
7
7
|
export declare const MIZD_TOKEN_MINT: PublicKey;
|
|
8
8
|
export declare const DEFAULT_FEE_RECIPIENT: PublicKey;
|
|
9
9
|
export declare const MIZTAKE_STATISTICS_SEED = "miztake_statistics";
|
|
10
|
-
export declare const TOKEN_VAULT_SEED = "token_vault";
|
|
11
10
|
export declare const USER_STATS_SEED = "user_stats";
|
|
12
11
|
export declare const MIZTAKE_SEED = "miztake";
|
|
13
12
|
export declare const REFERRAL_PENALTY_CLAIM_SEED = "referral_penalty_claim";
|
package/dist/utils/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MIN_HASH_LENGTH = exports.MAX_USERNAME_LENGTH = exports.MAX_MAX_CLAIMABLE = exports.MIN_MAX_CLAIMABLE = exports.MAX_FEE = exports.MIN_FEE = exports.DEFAULT_MAX_CLAIMABLE = exports.DEFAULT_MIZTAKE_FEE = exports.REFERRAL_PENALTY_CLAIM_SEED = exports.MIZTAKE_SEED = exports.USER_STATS_SEED = exports.
|
|
3
|
+
exports.MIN_HASH_LENGTH = exports.MAX_USERNAME_LENGTH = exports.MAX_MAX_CLAIMABLE = exports.MIN_MAX_CLAIMABLE = exports.MAX_FEE = exports.MIN_FEE = exports.DEFAULT_MAX_CLAIMABLE = exports.DEFAULT_MIZTAKE_FEE = exports.REFERRAL_PENALTY_CLAIM_SEED = exports.MIZTAKE_SEED = exports.USER_STATS_SEED = exports.MIZTAKE_STATISTICS_SEED = exports.DEFAULT_FEE_RECIPIENT = exports.MIZD_TOKEN_MINT = exports.ADMIN_PUBLIC_KEY = exports.PROGRAM_ID = void 0;
|
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
|
5
5
|
/**
|
|
6
6
|
* Proof of Miztake Program Constants
|
|
@@ -15,7 +15,6 @@ exports.MIZD_TOKEN_MINT = new web3_js_1.PublicKey("mizdS9fDNUKWZcXBeRhJoJQHJJmsT
|
|
|
15
15
|
exports.DEFAULT_FEE_RECIPIENT = new web3_js_1.PublicKey("Dkhu2VgGPfvXPVuohG2fPfryRacWMpNBJXvRGF1dhzUh");
|
|
16
16
|
// Seeds for PDAs
|
|
17
17
|
exports.MIZTAKE_STATISTICS_SEED = "miztake_statistics";
|
|
18
|
-
exports.TOKEN_VAULT_SEED = "token_vault";
|
|
19
18
|
exports.USER_STATS_SEED = "user_stats";
|
|
20
19
|
exports.MIZTAKE_SEED = "miztake";
|
|
21
20
|
exports.REFERRAL_PENALTY_CLAIM_SEED = "referral_penalty_claim";
|
|
@@ -13,8 +13,8 @@ export declare class PDAManager {
|
|
|
13
13
|
telegramId: BN;
|
|
14
14
|
seasonNumber: BN;
|
|
15
15
|
windowNumber: BN;
|
|
16
|
-
seasonMembershipId: BN;
|
|
17
16
|
user: PublicKey;
|
|
17
|
+
tier: number;
|
|
18
18
|
}): {
|
|
19
19
|
miztake: PublicKey;
|
|
20
20
|
userStats: PublicKey;
|
|
@@ -31,7 +31,7 @@ export declare class PDAManager {
|
|
|
31
31
|
static deriveJoinSeasonPdas(params: {
|
|
32
32
|
user: PublicKey;
|
|
33
33
|
seasonNumber: BN;
|
|
34
|
-
|
|
34
|
+
tier: number;
|
|
35
35
|
}): {
|
|
36
36
|
seasonSettings: PublicKey;
|
|
37
37
|
season: PublicKey;
|
|
@@ -46,7 +46,7 @@ export declare class PDAManager {
|
|
|
46
46
|
user: PublicKey;
|
|
47
47
|
seasonNumber: BN;
|
|
48
48
|
windowNumber: BN;
|
|
49
|
-
|
|
49
|
+
tier: number;
|
|
50
50
|
/** SHA-256 hex string (64 chars) */
|
|
51
51
|
miztakeShaHash: string;
|
|
52
52
|
}): {
|
|
@@ -64,7 +64,7 @@ export declare class PDAManager {
|
|
|
64
64
|
user: PublicKey;
|
|
65
65
|
seasonNumber: BN;
|
|
66
66
|
windowNumber: BN;
|
|
67
|
-
|
|
67
|
+
tier: number;
|
|
68
68
|
}): {
|
|
69
69
|
seasonSettings: PublicKey;
|
|
70
70
|
season: PublicKey;
|
|
@@ -79,7 +79,7 @@ export declare class PDAManager {
|
|
|
79
79
|
static deriveWithdrawDepositPdas(params: {
|
|
80
80
|
user: PublicKey;
|
|
81
81
|
seasonNumber: BN;
|
|
82
|
-
|
|
82
|
+
tier: number;
|
|
83
83
|
}): {
|
|
84
84
|
seasonSettings: PublicKey;
|
|
85
85
|
season: PublicKey;
|
|
@@ -94,7 +94,7 @@ export declare class PDAManager {
|
|
|
94
94
|
referredUser: PublicKey;
|
|
95
95
|
seasonNumber: BN;
|
|
96
96
|
windowNumber: BN;
|
|
97
|
-
|
|
97
|
+
tier: number;
|
|
98
98
|
}): {
|
|
99
99
|
seasonSettings: PublicKey;
|
|
100
100
|
season: PublicKey;
|
package/dist/utils/pdaManager.js
CHANGED
|
@@ -17,9 +17,9 @@ class PDAManager {
|
|
|
17
17
|
miztakeStatistics: (0, pdas_1.getMiztakeStatisticsPda)()[0],
|
|
18
18
|
seasonSettings: (0, pdas_1.getSeasonSettingsPda)()[0],
|
|
19
19
|
season: (0, pdas_1.getSeasonPda)(params.seasonNumber)[0],
|
|
20
|
-
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.user, params.
|
|
20
|
+
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.seasonNumber, params.user, params.tier)[0],
|
|
21
21
|
rewardWindow: (0, pdas_1.getRewardWindowPda)(params.seasonNumber, params.windowNumber)[0],
|
|
22
|
-
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.
|
|
22
|
+
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.seasonNumber, params.user, params.tier, params.windowNumber)[0],
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
@@ -29,7 +29,7 @@ class PDAManager {
|
|
|
29
29
|
return {
|
|
30
30
|
seasonSettings: (0, pdas_1.getSeasonSettingsPda)()[0],
|
|
31
31
|
season: (0, pdas_1.getSeasonPda)(params.seasonNumber)[0],
|
|
32
|
-
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.user, params.
|
|
32
|
+
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.seasonNumber, params.user, params.tier)[0],
|
|
33
33
|
seasonDepositVault: (0, pdas_1.getSeasonDepositVaultPda)()[0],
|
|
34
34
|
seasonEscrowVault: (0, pdas_1.getSeasonEscrowVaultPda)()[0],
|
|
35
35
|
};
|
|
@@ -40,10 +40,10 @@ class PDAManager {
|
|
|
40
40
|
static deriveConfirmedPostPdas(params) {
|
|
41
41
|
return {
|
|
42
42
|
seasonSettings: (0, pdas_1.getSeasonSettingsPda)()[0],
|
|
43
|
-
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.user, params.
|
|
43
|
+
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.seasonNumber, params.user, params.tier)[0],
|
|
44
44
|
season: (0, pdas_1.getSeasonPda)(params.seasonNumber)[0],
|
|
45
45
|
rewardWindow: (0, pdas_1.getRewardWindowPda)(params.seasonNumber, params.windowNumber)[0],
|
|
46
|
-
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.
|
|
46
|
+
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.seasonNumber, params.user, params.tier, params.windowNumber)[0],
|
|
47
47
|
miztake: (0, pdas_1.getMiztakePda)(params.miztakeShaHash)[0],
|
|
48
48
|
};
|
|
49
49
|
}
|
|
@@ -55,8 +55,8 @@ class PDAManager {
|
|
|
55
55
|
seasonSettings: (0, pdas_1.getSeasonSettingsPda)()[0],
|
|
56
56
|
season: (0, pdas_1.getSeasonPda)(params.seasonNumber)[0],
|
|
57
57
|
rewardWindow: (0, pdas_1.getRewardWindowPda)(params.seasonNumber, params.windowNumber)[0],
|
|
58
|
-
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.
|
|
59
|
-
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.user, params.
|
|
58
|
+
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.seasonNumber, params.user, params.tier, params.windowNumber)[0],
|
|
59
|
+
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.seasonNumber, params.user, params.tier)[0],
|
|
60
60
|
seasonDepositVault: (0, pdas_1.getSeasonDepositVaultPda)()[0],
|
|
61
61
|
};
|
|
62
62
|
}
|
|
@@ -67,7 +67,7 @@ class PDAManager {
|
|
|
67
67
|
return {
|
|
68
68
|
seasonSettings: (0, pdas_1.getSeasonSettingsPda)()[0],
|
|
69
69
|
season: (0, pdas_1.getSeasonPda)(params.seasonNumber)[0],
|
|
70
|
-
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.user, params.
|
|
70
|
+
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.seasonNumber, params.user, params.tier)[0],
|
|
71
71
|
seasonDepositVault: (0, pdas_1.getSeasonDepositVaultPda)()[0],
|
|
72
72
|
seasonEscrowVault: (0, pdas_1.getSeasonEscrowVaultPda)()[0],
|
|
73
73
|
};
|
|
@@ -79,9 +79,9 @@ class PDAManager {
|
|
|
79
79
|
return {
|
|
80
80
|
seasonSettings: (0, pdas_1.getSeasonSettingsPda)()[0],
|
|
81
81
|
season: (0, pdas_1.getSeasonPda)(params.seasonNumber)[0],
|
|
82
|
-
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.referredUser, params.
|
|
83
|
-
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.
|
|
84
|
-
referralPenaltyClaim: (0, pdas_1.getReferralPenaltyClaimPda)(params.
|
|
82
|
+
seasonMembership: (0, pdas_1.getSeasonMembershipPda)(params.seasonNumber, params.referredUser, params.tier)[0],
|
|
83
|
+
userWindowParticipation: (0, pdas_1.getUserWindowParticipationPda)(params.seasonNumber, params.referredUser, params.tier, params.windowNumber)[0],
|
|
84
|
+
referralPenaltyClaim: (0, pdas_1.getReferralPenaltyClaimPda)(params.seasonNumber, params.referredUser, params.tier, params.windowNumber)[0],
|
|
85
85
|
seasonDepositVault: (0, pdas_1.getSeasonDepositVaultPda)()[0],
|
|
86
86
|
};
|
|
87
87
|
}
|
package/dist/utils/pdas.d.ts
CHANGED
|
@@ -7,10 +7,6 @@ import { BN } from "@coral-xyz/anchor";
|
|
|
7
7
|
* Derive the MiztakeStatistics PDA
|
|
8
8
|
*/
|
|
9
9
|
export declare function getMiztakeStatisticsPda(): [PublicKey, number];
|
|
10
|
-
/**
|
|
11
|
-
* Derive the Token Vault PDA
|
|
12
|
-
*/
|
|
13
|
-
export declare function getTokenVaultPda(): [PublicKey, number];
|
|
14
10
|
/**
|
|
15
11
|
* Derive the UserStats PDA for a given telegram ID
|
|
16
12
|
* @param telegramId - The user's Telegram ID
|
|
@@ -32,10 +28,17 @@ export declare function getSeasonSettingsPda(): [PublicKey, number];
|
|
|
32
28
|
export declare function getSeasonPda(seasonNumber: BN): [PublicKey, number];
|
|
33
29
|
/**
|
|
34
30
|
* Derive the SeasonMembership PDA
|
|
31
|
+
* PDA model:
|
|
32
|
+
* seeds = ["season_membership", season_number_le_u64, user_pubkey_bytes, tier_u8]
|
|
33
|
+
*
|
|
34
|
+
* Tier mapping (u8):
|
|
35
|
+
* 1 = copper, 2 = silver, 3 = gold, 4 = platinum, 5 = mithril
|
|
36
|
+
*
|
|
37
|
+
* @param seasonNumber - The season number
|
|
35
38
|
* @param user - The user's public key
|
|
36
|
-
* @param
|
|
39
|
+
* @param tier - Tier number (1..=5)
|
|
37
40
|
*/
|
|
38
|
-
export declare function getSeasonMembershipPda(user: PublicKey,
|
|
41
|
+
export declare function getSeasonMembershipPda(seasonNumber: BN, user: PublicKey, tier: number): [PublicKey, number];
|
|
39
42
|
/**
|
|
40
43
|
* Derive the RewardWindow PDA
|
|
41
44
|
* @param seasonNumber - The season number
|
|
@@ -44,12 +47,15 @@ export declare function getSeasonMembershipPda(user: PublicKey, seasonMembership
|
|
|
44
47
|
export declare function getRewardWindowPda(seasonNumber: BN, windowNumber: BN): [PublicKey, number];
|
|
45
48
|
/**
|
|
46
49
|
* Derive the UserWindowParticipation PDA
|
|
47
|
-
*
|
|
50
|
+
* PDA model:
|
|
51
|
+
* seeds = ["user_window", season_number_le_u64, user_pubkey_bytes, tier_u8, window_number_le_u64]
|
|
52
|
+
*
|
|
48
53
|
* @param seasonNumber - The season number
|
|
54
|
+
* @param user - The user's public key
|
|
55
|
+
* @param tier - Tier number (1..=5)
|
|
49
56
|
* @param windowNumber - The window number
|
|
50
|
-
* @param seasonMembershipId - The membership ID
|
|
51
57
|
*/
|
|
52
|
-
export declare function getUserWindowParticipationPda(
|
|
58
|
+
export declare function getUserWindowParticipationPda(seasonNumber: BN, user: PublicKey, tier: number, windowNumber: BN): [PublicKey, number];
|
|
53
59
|
/**
|
|
54
60
|
* Derive the Season Deposit Vault PDA
|
|
55
61
|
*/
|
|
@@ -60,9 +66,12 @@ export declare function getSeasonDepositVaultPda(): [PublicKey, number];
|
|
|
60
66
|
export declare function getSeasonEscrowVaultPda(): [PublicKey, number];
|
|
61
67
|
/**
|
|
62
68
|
* Derive the ReferralPenaltyClaim PDA
|
|
63
|
-
*
|
|
69
|
+
* PDA model:
|
|
70
|
+
* seeds = ["referral_penalty_claim", season_number_le_u64, referred_user_pubkey_bytes, tier_u8, window_number_le_u64]
|
|
71
|
+
*
|
|
64
72
|
* @param seasonNumber - The season number
|
|
73
|
+
* @param referredUser - The referred user's public key (the user who missed)
|
|
74
|
+
* @param tier - Tier number (1..=5)
|
|
65
75
|
* @param windowNumber - The window number
|
|
66
|
-
* @param seasonMembershipId - The referred user's membership id
|
|
67
76
|
*/
|
|
68
|
-
export declare function getReferralPenaltyClaimPda(
|
|
77
|
+
export declare function getReferralPenaltyClaimPda(seasonNumber: BN, referredUser: PublicKey, tier: number, windowNumber: BN): [PublicKey, number];
|
package/dist/utils/pdas.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getMiztakeStatisticsPda = getMiztakeStatisticsPda;
|
|
4
|
-
exports.getTokenVaultPda = getTokenVaultPda;
|
|
5
4
|
exports.getUserStatsPda = getUserStatsPda;
|
|
6
5
|
exports.getMiztakePda = getMiztakePda;
|
|
7
6
|
exports.getSeasonSettingsPda = getSeasonSettingsPda;
|
|
@@ -24,12 +23,6 @@ const conversions_1 = require("./conversions");
|
|
|
24
23
|
function getMiztakeStatisticsPda() {
|
|
25
24
|
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.MIZTAKE_STATISTICS_SEED)], constants_1.PROGRAM_ID);
|
|
26
25
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Derive the Token Vault PDA
|
|
29
|
-
*/
|
|
30
|
-
function getTokenVaultPda() {
|
|
31
|
-
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_VAULT_SEED)], constants_1.PROGRAM_ID);
|
|
32
|
-
}
|
|
33
26
|
/**
|
|
34
27
|
* Derive the UserStats PDA for a given telegram ID
|
|
35
28
|
* @param telegramId - The user's Telegram ID
|
|
@@ -60,14 +53,25 @@ function getSeasonPda(seasonNumber) {
|
|
|
60
53
|
}
|
|
61
54
|
/**
|
|
62
55
|
* Derive the SeasonMembership PDA
|
|
56
|
+
* PDA model:
|
|
57
|
+
* seeds = ["season_membership", season_number_le_u64, user_pubkey_bytes, tier_u8]
|
|
58
|
+
*
|
|
59
|
+
* Tier mapping (u8):
|
|
60
|
+
* 1 = copper, 2 = silver, 3 = gold, 4 = platinum, 5 = mithril
|
|
61
|
+
*
|
|
62
|
+
* @param seasonNumber - The season number
|
|
63
63
|
* @param user - The user's public key
|
|
64
|
-
* @param
|
|
64
|
+
* @param tier - Tier number (1..=5)
|
|
65
65
|
*/
|
|
66
|
-
function getSeasonMembershipPda(user,
|
|
66
|
+
function getSeasonMembershipPda(seasonNumber, user, tier) {
|
|
67
|
+
if (!Number.isInteger(tier) || tier < 1 || tier > 5) {
|
|
68
|
+
throw new Error("Invalid tier: must be an integer between 1 and 5");
|
|
69
|
+
}
|
|
67
70
|
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
68
71
|
Buffer.from("season_membership"),
|
|
72
|
+
seasonNumber.toArrayLike(Buffer, "le", 8),
|
|
69
73
|
user.toBuffer(),
|
|
70
|
-
|
|
74
|
+
Buffer.from([tier]),
|
|
71
75
|
], constants_1.PROGRAM_ID);
|
|
72
76
|
}
|
|
73
77
|
/**
|
|
@@ -84,18 +88,24 @@ function getRewardWindowPda(seasonNumber, windowNumber) {
|
|
|
84
88
|
}
|
|
85
89
|
/**
|
|
86
90
|
* Derive the UserWindowParticipation PDA
|
|
87
|
-
*
|
|
91
|
+
* PDA model:
|
|
92
|
+
* seeds = ["user_window", season_number_le_u64, user_pubkey_bytes, tier_u8, window_number_le_u64]
|
|
93
|
+
*
|
|
88
94
|
* @param seasonNumber - The season number
|
|
95
|
+
* @param user - The user's public key
|
|
96
|
+
* @param tier - Tier number (1..=5)
|
|
89
97
|
* @param windowNumber - The window number
|
|
90
|
-
* @param seasonMembershipId - The membership ID
|
|
91
98
|
*/
|
|
92
|
-
function getUserWindowParticipationPda(user,
|
|
99
|
+
function getUserWindowParticipationPda(seasonNumber, user, tier, windowNumber) {
|
|
100
|
+
if (!Number.isInteger(tier) || tier < 1 || tier > 5) {
|
|
101
|
+
throw new Error("Invalid tier: must be an integer between 1 and 5");
|
|
102
|
+
}
|
|
93
103
|
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
94
104
|
Buffer.from("user_window"),
|
|
95
|
-
user.toBuffer(),
|
|
96
105
|
seasonNumber.toArrayLike(Buffer, "le", 8),
|
|
106
|
+
user.toBuffer(),
|
|
107
|
+
Buffer.from([tier]),
|
|
97
108
|
windowNumber.toArrayLike(Buffer, "le", 8),
|
|
98
|
-
seasonMembershipId.toArrayLike(Buffer, "le", 8),
|
|
99
109
|
], constants_1.PROGRAM_ID);
|
|
100
110
|
}
|
|
101
111
|
/**
|
|
@@ -112,17 +122,23 @@ function getSeasonEscrowVaultPda() {
|
|
|
112
122
|
}
|
|
113
123
|
/**
|
|
114
124
|
* Derive the ReferralPenaltyClaim PDA
|
|
115
|
-
*
|
|
125
|
+
* PDA model:
|
|
126
|
+
* seeds = ["referral_penalty_claim", season_number_le_u64, referred_user_pubkey_bytes, tier_u8, window_number_le_u64]
|
|
127
|
+
*
|
|
116
128
|
* @param seasonNumber - The season number
|
|
129
|
+
* @param referredUser - The referred user's public key (the user who missed)
|
|
130
|
+
* @param tier - Tier number (1..=5)
|
|
117
131
|
* @param windowNumber - The window number
|
|
118
|
-
* @param seasonMembershipId - The referred user's membership id
|
|
119
132
|
*/
|
|
120
|
-
function getReferralPenaltyClaimPda(referredUser,
|
|
133
|
+
function getReferralPenaltyClaimPda(seasonNumber, referredUser, tier, windowNumber) {
|
|
134
|
+
if (!Number.isInteger(tier) || tier < 1 || tier > 5) {
|
|
135
|
+
throw new Error("Invalid tier: must be an integer between 1 and 5");
|
|
136
|
+
}
|
|
121
137
|
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
122
138
|
Buffer.from(constants_1.REFERRAL_PENALTY_CLAIM_SEED),
|
|
123
|
-
referredUser.toBuffer(),
|
|
124
139
|
seasonNumber.toArrayLike(Buffer, "le", 8),
|
|
140
|
+
referredUser.toBuffer(),
|
|
141
|
+
Buffer.from([tier]),
|
|
125
142
|
windowNumber.toArrayLike(Buffer, "le", 8),
|
|
126
|
-
seasonMembershipId.toArrayLike(Buffer, "le", 8),
|
|
127
143
|
], constants_1.PROGRAM_ID);
|
|
128
144
|
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { BN } from "@coral-xyz/anchor";
|
|
2
2
|
import { SeasonDepositTier } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Validate and normalize a tier number (1..=5).
|
|
5
|
+
*/
|
|
6
|
+
export declare function assertValidTierNumber(tier: number): number;
|
|
7
|
+
/**
|
|
8
|
+
* Convert numeric tier (1..=5) to the Anchor enum representation.
|
|
9
|
+
*/
|
|
10
|
+
export declare function tierNumberToDepositTier(tier: number): SeasonDepositTier;
|
|
3
11
|
/**
|
|
4
12
|
* Tier-based per-window penalty amount (base units, 7 decimals).
|
|
5
13
|
*
|
|
@@ -1,7 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertValidTierNumber = assertValidTierNumber;
|
|
4
|
+
exports.tierNumberToDepositTier = tierNumberToDepositTier;
|
|
3
5
|
exports.getTierPenaltyPerWindow = getTierPenaltyPerWindow;
|
|
4
6
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
7
|
+
/**
|
|
8
|
+
* Validate and normalize a tier number (1..=5).
|
|
9
|
+
*/
|
|
10
|
+
function assertValidTierNumber(tier) {
|
|
11
|
+
if (!Number.isInteger(tier) || tier < 1 || tier > 5) {
|
|
12
|
+
throw new Error("Invalid tier: must be an integer between 1 and 5");
|
|
13
|
+
}
|
|
14
|
+
return tier;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convert numeric tier (1..=5) to the Anchor enum representation.
|
|
18
|
+
*/
|
|
19
|
+
function tierNumberToDepositTier(tier) {
|
|
20
|
+
switch (assertValidTierNumber(tier)) {
|
|
21
|
+
case 1:
|
|
22
|
+
return { copper: {} };
|
|
23
|
+
case 2:
|
|
24
|
+
return { silver: {} };
|
|
25
|
+
case 3:
|
|
26
|
+
return { gold: {} };
|
|
27
|
+
case 4:
|
|
28
|
+
return { platinum: {} };
|
|
29
|
+
case 5:
|
|
30
|
+
return { mithril: {} };
|
|
31
|
+
}
|
|
32
|
+
// unreachable
|
|
33
|
+
throw new Error("Invalid tier");
|
|
34
|
+
}
|
|
5
35
|
/**
|
|
6
36
|
* Tier-based per-window penalty amount (base units, 7 decimals).
|
|
7
37
|
*
|
package/package.json
CHANGED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Connection } from "@solana/web3.js";
|
|
2
|
-
import { BN } from "@coral-xyz/anchor";
|
|
3
|
-
/**
|
|
4
|
-
* Get the token vault account information
|
|
5
|
-
*
|
|
6
|
-
* @param connection - Solana connection
|
|
7
|
-
* @returns Token vault account data
|
|
8
|
-
*/
|
|
9
|
-
export declare function getTokenVault(connection: Connection): Promise<{
|
|
10
|
-
address: import("@solana/web3.js").PublicKey;
|
|
11
|
-
data: {
|
|
12
|
-
mint: import("@solana/web3.js").PublicKey;
|
|
13
|
-
owner: import("@solana/web3.js").PublicKey;
|
|
14
|
-
amount: any;
|
|
15
|
-
delegate: import("@solana/web3.js").PublicKey;
|
|
16
|
-
delegatedAmount: bigint;
|
|
17
|
-
isInitialized: boolean;
|
|
18
|
-
isFrozen: boolean;
|
|
19
|
-
isNative: boolean;
|
|
20
|
-
closeAuthority: import("@solana/web3.js").PublicKey;
|
|
21
|
-
};
|
|
22
|
-
}>;
|
|
23
|
-
/**
|
|
24
|
-
* Check if token vault is initialized
|
|
25
|
-
*/
|
|
26
|
-
export declare function isVaultInitialized(connection: Connection): Promise<boolean>;
|
|
27
|
-
/**
|
|
28
|
-
* Get vault balance (amount of MIZD tokens in vault)
|
|
29
|
-
*/
|
|
30
|
-
export declare function getVaultTokenBalance(connection: Connection): Promise<BN>;
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTokenVault = getTokenVault;
|
|
4
|
-
exports.isVaultInitialized = isVaultInitialized;
|
|
5
|
-
exports.getVaultTokenBalance = getVaultTokenBalance;
|
|
6
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
7
|
-
const anchor_1 = require("@coral-xyz/anchor");
|
|
8
|
-
const pdas_1 = require("../utils/pdas");
|
|
9
|
-
/**
|
|
10
|
-
* Get the token vault account information
|
|
11
|
-
*
|
|
12
|
-
* @param connection - Solana connection
|
|
13
|
-
* @returns Token vault account data
|
|
14
|
-
*/
|
|
15
|
-
async function getTokenVault(connection) {
|
|
16
|
-
const [vaultPda] = (0, pdas_1.getTokenVaultPda)();
|
|
17
|
-
try {
|
|
18
|
-
const vaultAccount = await (0, spl_token_1.getAccount)(connection, vaultPda);
|
|
19
|
-
return {
|
|
20
|
-
address: vaultPda,
|
|
21
|
-
data: {
|
|
22
|
-
mint: vaultAccount.mint,
|
|
23
|
-
owner: vaultAccount.owner,
|
|
24
|
-
amount: new anchor_1.BN(vaultAccount.amount.toString()),
|
|
25
|
-
delegate: vaultAccount.delegate,
|
|
26
|
-
delegatedAmount: vaultAccount.delegatedAmount,
|
|
27
|
-
isInitialized: vaultAccount.isInitialized,
|
|
28
|
-
isFrozen: vaultAccount.isFrozen,
|
|
29
|
-
isNative: vaultAccount.isNative,
|
|
30
|
-
closeAuthority: vaultAccount.closeAuthority,
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
catch (error) {
|
|
35
|
-
throw new Error(`Token vault not found or not initialized: ${error}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Check if token vault is initialized
|
|
40
|
-
*/
|
|
41
|
-
async function isVaultInitialized(connection) {
|
|
42
|
-
try {
|
|
43
|
-
await getTokenVault(connection);
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Get vault balance (amount of MIZD tokens in vault)
|
|
52
|
-
*/
|
|
53
|
-
async function getVaultTokenBalance(connection) {
|
|
54
|
-
const vault = await getTokenVault(connection);
|
|
55
|
-
return vault.data.amount;
|
|
56
|
-
}
|