@soltracer/nft-staking 0.1.0 → 0.2.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/INTEGRATION.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  SDK client for the solTracer NFT Staking program. Supports Legacy, pNFT, Core, and cNFT staking with escrow or wallet-lock modes, primary and secondary rewards, trait bonuses, lock tiers, and permanent burn mechanics.
4
4
 
5
+ The SDK auto-resolves pool state (rewardMint, stakingMode, collectionMint) and all PDA/ATA derivations internally — callers only need to provide the minimum required parameters.
6
+
5
7
  ## Installation
6
8
 
7
9
  ```bash
@@ -15,36 +17,42 @@ import { NftStakingClient } from "@soltracer/nft-staking";
15
17
  import { AnchorProvider } from "@coral-xyz/anchor";
16
18
 
17
19
  const provider = AnchorProvider.env();
18
- const client = NftStakingClient.create(provider);
20
+ const client = NftStakingClient.create(provider, { projectId: 1 });
19
21
 
20
22
  // Fetch a staking pool
21
- const pool = await client.fetchStakePool(projectId, poolId);
23
+ const pool = await client.fetchStakePool(undefined, poolId);
24
+
25
+ // Stake an NFT (stakingMode auto-resolved from pool)
26
+ const ix = await client.stakeNft(poolId, nftMint);
27
+
28
+ // Unstake (rewardMint + stakingMode auto-resolved)
29
+ const ix = await client.unstakeNft(poolId, nftMint);
22
30
 
23
- // Stake an NFT
24
- const ix = await client.stakeNft(projectId, poolId, nftMint, 0, null, fee);
31
+ // Claim rewards (rewardMint auto-resolved)
32
+ const ix = await client.claimRewards(poolId);
25
33
  ```
26
34
 
27
35
  ## Client Setup
28
36
 
29
37
  ```ts
30
- // From bundled IDL (recommended)
38
+ // With project ID bound (recommended — eliminates projectId from every call)
39
+ const client = NftStakingClient.create(provider, { projectId: 1 });
40
+
41
+ // Without project ID (must pass it per-call, or set later)
31
42
  const client = NftStakingClient.create(provider);
43
+ client.setProjectId(1); // set later, chainable
32
44
 
33
45
  // From custom IDL
34
- const client = NftStakingClient.fromIdl(customIdl, provider);
46
+ const client = NftStakingClient.fromIdl(customIdl, provider, { projectId: 1 });
35
47
  ```
36
48
 
37
49
  ## Fee Parameters
38
50
 
39
- Many instructions require a `FeeParams` object for platform fee CPI:
51
+ Optional referral account for fee distribution. Fee PDA accounts (feeConfig, treasury, priceFeed) are resolved automatically.
40
52
 
41
53
  ```ts
42
54
  interface FeeParams {
43
- feeConfig: PublicKey;
44
- treasury: PublicKey;
45
- referralAccount?: string;
46
- solUsdPriceFeed: PublicKey;
47
- adminProgram: PublicKey;
55
+ referralAccount?: string; // base58 pubkey
48
56
  }
49
57
  ```
50
58
 
@@ -53,9 +61,10 @@ interface FeeParams {
53
61
  ### Pool & Config
54
62
 
55
63
  ```ts
56
- const config = await client.fetchStakeConfig(projectId);
57
- const pool = await client.fetchStakePool(projectId, poolId);
58
- const pools = await client.fetchAllPools(projectId);
64
+ const config = await client.fetchStakeConfig(); // uses bound projectId
65
+ const config = await client.fetchStakeConfig(2); // explicit projectId
66
+ const pool = await client.fetchStakePool(undefined, poolId);
67
+ const pools = await client.fetchAllPools();
59
68
  ```
60
69
 
61
70
  ### Stake Entries
@@ -64,7 +73,7 @@ const pools = await client.fetchAllPools(projectId);
64
73
  const entry = await client.fetchStakeEntry(poolId, nftMint);
65
74
  const entries = await client.fetchStakeEntriesByOwner(poolId, owner);
66
75
  const batch = await client.fetchStakeEntriesForMints(poolId, [mint1, mint2]);
67
- const all = await client.fetchAllStakeEntriesByPool(projectId, poolId);
76
+ const all = await client.fetchAllStakeEntriesByPool(poolId);
68
77
  const cross = await client.fetchStakeEntriesAcrossPools([poolId1, poolId2], [mint1, mint2]);
69
78
  ```
70
79
 
@@ -72,7 +81,7 @@ const cross = await client.fetchStakeEntriesAcrossPools([poolId1, poolId2], [min
72
81
 
73
82
  ```ts
74
83
  const staker = await client.fetchStakerAccount(poolId, wallet);
75
- const stakers = await client.fetchAllStakersByPool(projectId, poolId);
84
+ const stakers = await client.fetchAllStakersByPool(poolId);
76
85
  ```
77
86
 
78
87
  ### Secondary Rewards
@@ -87,144 +96,142 @@ const stakerSecondary = await client.fetchStakerSecondaryRewards(poolId, wallet)
87
96
  ### Initialize & Create Pools
88
97
 
89
98
  ```ts
90
- // Initialize staking config for a project
91
- const ix = await client.initializeStakeConfig(projectId);
99
+ const ix = await client.initializeStakeConfig();
92
100
 
93
- // Create a staking pool
94
101
  const ix = await client.createStakePool(
95
- projectId,
96
102
  0, // stakingMode: 0 = Escrow, 1 = WalletLock
97
103
  {
98
104
  rewardType: 0, // 0 = Token, 1 = Points
99
105
  rewardMint: mintPubkey,
100
106
  baseRate: 100,
101
- rateInterval: 86400, // daily
107
+ rateInterval: 86400,
102
108
  traitBonusMode: 0,
103
109
  quantityThresholds: [],
104
110
  },
105
111
  [{ lockDuration: 0, rewardRate: 100, earlyUnstakePenaltyBps: 0 }],
106
112
  collectionMint,
107
- rewardEndAt, // optional unix timestamp
108
- maxStaked // optional max NFTs
113
+ { rewardEndAt: 0, maxStaked: 0 } // optional
109
114
  );
110
115
  ```
111
116
 
112
117
  ### Update Pool
113
118
 
114
119
  ```ts
115
- const ix = await client.updateStakePool(
116
- projectId, poolId,
117
- rewardConfig, // or null to keep existing
118
- lockConfigs, // or null to keep existing
119
- isActive, // or null to keep existing
120
- traitAuthority, canBurn, merkleRoot, gateType, rewardEndAt, maxStaked
121
- );
120
+ const ix = await client.updateStakePool(poolId, {
121
+ rewardConfig: { ... }, // or omit to keep existing
122
+ lockConfigs: [...], // or omit to keep existing
123
+ isActive: true,
124
+ canBurn: false,
125
+ merkleRoot: null,
126
+ gateType: null,
127
+ rewardEndAt: 1735689600, // accepts number (not BN)
128
+ maxStaked: 1000,
129
+ });
122
130
  ```
123
131
 
124
132
  ### Fund & Withdraw Reward Vault
125
133
 
134
+ RewardMint is auto-resolved from pool state:
135
+
126
136
  ```ts
127
- const fund = await client.fundRewardVault(projectId, poolId, amount, rewardMint);
128
- const withdraw = await client.withdrawRewardVault(projectId, poolId, amount, rewardMint);
137
+ const fund = await client.fundRewardVault(poolId, amount);
138
+ const withdraw = await client.withdrawRewardVault(poolId, amount);
139
+
140
+ // Or explicit rewardMint if needed:
141
+ const fund = await client.fundRewardVault(poolId, amount, { rewardMint: mintPk });
129
142
  ```
130
143
 
131
144
  ### Close Pool
132
145
 
133
146
  ```ts
134
- const ix = await client.closeStakePool(projectId, poolId);
147
+ const ix = await client.closeStakePool(poolId);
135
148
  ```
136
149
 
137
150
  ### Secondary Rewards Management
138
151
 
139
152
  ```ts
140
- const add = await client.addPoolSecondaryReward(projectId, poolId, rewardMint, baseRate, lockTierRates);
141
- const remove = await client.removePoolSecondaryReward(projectId, poolId, rewardIndex);
142
- const fund = await client.fundSecondaryVault(projectId, poolId, rewardIndex, amount, rewardMint);
143
- const withdraw = await client.withdrawSecondaryVault(projectId, poolId, rewardIndex, amount, rewardMint);
153
+ const add = await client.addPoolSecondaryReward(poolId, rewardMint, baseRate, lockTierRates);
154
+ const remove = await client.removePoolSecondaryReward(poolId, rewardIndex);
155
+ const fund = await client.fundSecondaryVault(poolId, rewardIndex, amount, rewardMint);
156
+ const withdraw = await client.withdrawSecondaryVault(poolId, rewardIndex, amount, rewardMint);
144
157
  ```
145
158
 
146
159
  ## User Instructions
147
160
 
148
161
  ### Staking Legacy/pNFT
149
162
 
163
+ StakingMode is auto-resolved from pool:
164
+
150
165
  ```ts
151
- const stake = await client.stakeNft(projectId, poolId, nftMint, stakingMode, lockTierIndex, fee, gateProof);
152
- const unstake = await client.unstakeNft(projectId, poolId, nftMint, rewardMint, stakingMode, fee);
166
+ const stake = await client.stakeNft(poolId, nftMint, { lockTierIndex: 0, fee, gateProof });
167
+ const unstake = await client.unstakeNft(poolId, nftMint, { fee });
153
168
  ```
154
169
 
155
170
  ### Staking Core NFTs
156
171
 
172
+ Collection is auto-resolved from pool:
173
+
157
174
  ```ts
158
- const stake = await client.stakeCoreNft(projectId, poolId, nftAsset, collection, lockTierIndex, fee, gateProof);
159
- const unstake = await client.unstakeCoreNft(projectId, poolId, nftAsset, collection, rewardMint, fee);
175
+ const stake = await client.stakeCoreNft(poolId, nftAsset, { lockTierIndex: 0, fee });
176
+ const unstake = await client.unstakeCoreNft(poolId, nftAsset, { fee });
160
177
  ```
161
178
 
162
179
  ### Staking cNFTs
163
180
 
164
181
  ```ts
165
- const stake = await client.stakeCnft(
166
- projectId, poolId, nftAssetId, merkleTree,
167
- cnftRoot, cnftDataHash, cnftCreatorHash, cnftNonce, cnftIndex,
168
- proofNodes, fee, gateProof
169
- );
170
- const unstake = await client.unstakeCnft(
171
- projectId, poolId, nftAssetId, merkleTree, rewardMint,
172
- cnftRoot, cnftDataHash, cnftCreatorHash, cnftNonce, cnftIndex,
173
- proofNodes, fee
174
- );
182
+ const cnftParams = {
183
+ nftAssetId, merkleTree, cnftRoot, cnftDataHash,
184
+ cnftCreatorHash, cnftNonce, cnftIndex, proofNodes,
185
+ };
186
+ const stake = await client.stakeCnft(poolId, cnftParams, { fee, gateProof });
187
+ const unstake = await client.unstakeCnft(poolId, cnftParams, { fee });
175
188
  ```
176
189
 
177
190
  ### Claiming Rewards
178
191
 
192
+ RewardMint is auto-resolved from pool:
193
+
179
194
  ```ts
180
- const claim = await client.claimRewards(projectId, poolId, rewardMint, traitBonusRate, fee);
195
+ const claim = await client.claimRewards(poolId, { traitBonusRate, fee });
181
196
  ```
182
197
 
183
198
  ### Secondary Reward Claims
184
199
 
185
200
  ```ts
186
- const init = await client.initStakerSecondary(projectId, poolId);
187
- const claim = await client.claimSecondaryRewards(projectId, poolId, secondaryRewards, fee);
201
+ const init = await client.initStakerSecondary(poolId);
202
+ const claim = await client.claimSecondaryRewards(poolId, [{ mint: mintPk }], { fee });
188
203
  ```
189
204
 
190
205
  ### Burn Permanently-Locked Assets
191
206
 
207
+ StakingMode/collection auto-resolved from pool:
208
+
192
209
  ```ts
193
- const burnNft = await client.burnStakedNft(projectId, poolId, nftMint, stakingMode, fee);
194
- const burnCore = await client.burnStakedCoreNft(projectId, poolId, nftAsset, collection, fee);
210
+ const burnNft = await client.burnStakedNft(poolId, nftMint, { fee });
211
+ const burnCore = await client.burnStakedCoreNft(poolId, nftAsset, { fee });
195
212
  ```
196
213
 
197
214
  ### Spend Points
198
215
 
199
216
  ```ts
200
- const spend = await client.spendPoints(projectId, poolId, amount, fee);
217
+ const spend = await client.spendPoints(poolId, amount, { fee });
201
218
  ```
202
219
 
203
- ## Integration Example
220
+ ## What the SDK Resolves Internally
204
221
 
205
- ```ts
206
- import { NftStakingClient } from "@soltracer/nft-staking";
207
- import { NFT_STAKING_PROGRAM_ID, getFeeConfigPda, getTreasuryPda } from "@soltracer/core";
208
- import { AnchorProvider } from "@coral-xyz/anchor";
209
- import { PublicKey, Transaction } from "@solana/web3.js";
210
-
211
- const provider = AnchorProvider.env();
212
- const client = NftStakingClient.create(provider);
213
-
214
- const [feeConfig] = getFeeConfigPda(NFT_STAKING_PROGRAM_ID);
215
- const [treasury] = getTreasuryPda();
216
-
217
- const fee = {
218
- feeConfig,
219
- treasury,
220
- solUsdPriceFeed: new PublicKey("..."),
221
- adminProgram: new PublicKey("H5ApgCLSTnvdFTmZCf9t2kEiz1nzji7iEivBPoPbDfS4"),
222
- };
223
-
224
- const stakeIx = await client.stakeNft(1, 0, nftMint, 0, null, fee);
225
- const tx = new Transaction().add(stakeIx);
226
- await provider.sendAndConfirm(tx);
227
- ```
222
+ | Parameter | Auto-resolved from |
223
+ |---|---|
224
+ | `rewardMint` | Pool `rewardConfig.rewardMint` |
225
+ | `stakingMode` | Pool `stakingMode` |
226
+ | `collectionMint` | Pool `collectionMint` |
227
+ | `projectId` | Client instance (set via `create()` or `setProjectId()`) |
228
+ | Fee accounts | PDA derivation from program ID |
229
+ | Token program | Mint account owner detection (SPL vs Token-2022) |
230
+ | ATAs | Derived from wallet + mint + token program |
231
+ | All PDAs | Anchor seed derivation |
232
+ | Decimal normalization | Mint account data byte 44 |
233
+
234
+ Pool data is cached for 30s to minimize redundant RPC calls.
228
235
 
229
236
  ## Exports
230
237
 
package/dist/client.d.ts CHANGED
@@ -12,9 +12,25 @@ export declare class NftStakingClient {
12
12
  readonly provider: AnchorProvider;
13
13
  private tokenProgramCache;
14
14
  private mintDecimalsCache;
15
- constructor(program: Program<NftStaking>, provider: AnchorProvider);
16
- static create(provider: AnchorProvider): NftStakingClient;
17
- static fromIdl(idl: NftStaking, provider: AnchorProvider): NftStakingClient;
15
+ private poolCache;
16
+ private static readonly POOL_CACHE_TTL;
17
+ /** Project ID bound to this client. Set via `create()` options or `setProjectId()`. */
18
+ projectId: number | undefined;
19
+ constructor(program: Program<NftStaking>, provider: AnchorProvider, projectId?: number);
20
+ static create(provider: AnchorProvider, opts?: {
21
+ projectId?: number;
22
+ }): NftStakingClient;
23
+ static fromIdl(idl: NftStaking, provider: AnchorProvider, opts?: {
24
+ projectId?: number;
25
+ }): NftStakingClient;
26
+ /** Set the project ID for this client instance. Returns `this` for chaining. */
27
+ setProjectId(projectId: number): this;
28
+ /** Resolve projectId: use explicit param if given, else fall back to instance-level. Throws if neither is set. */
29
+ private resolveProjectId;
30
+ /** Fetch pool data with caching. Used internally to auto-resolve rewardMint, stakingMode, collectionMint. */
31
+ private getPoolData;
32
+ /** Invalidate cached pool data (call after pool mutations). */
33
+ invalidatePoolCache(poolId?: number): void;
18
34
  /** Detect whether a mint is Token-2022 or SPL Token (cached). */
19
35
  private resolveTokenProgram;
20
36
  /** Fetch the decimal precision of a token mint (cached). */
@@ -25,12 +41,12 @@ export declare class NftStakingClient {
25
41
  private static readonly PYTH_SOL_USD_FEED;
26
42
  /** Resolve fee PDA accounts for fee CPI. */
27
43
  private resolveFeeAccounts;
28
- fetchStakeConfig(projectId: number): Promise<StakePoolConfig | null>;
29
- fetchStakePool(projectId: number, poolId: number): Promise<StakePool | null>;
44
+ fetchStakeConfig(projectId?: number): Promise<StakePoolConfig | null>;
45
+ fetchStakePool(projectId: number | undefined, poolId: number): Promise<StakePool | null>;
30
46
  fetchStakeEntry(poolId: number, nftMint: PublicKey): Promise<StakeEntry | null>;
31
47
  fetchStakerAccount(poolId: number, wallet: PublicKey, rewardDecimals?: number): Promise<StakerAccount | null>;
32
48
  /** Fetch all stake pools for a project by scanning pool IDs 0..totalPools-1. */
33
- fetchAllPools(projectId: number): Promise<StakePool[]>;
49
+ fetchAllPools(projectId?: number): Promise<StakePool[]>;
34
50
  /** Fetch all active stake entries for a wallet in a specific pool via gPA. */
35
51
  fetchStakeEntriesByOwner(_poolId: number, owner: PublicKey): Promise<StakeEntry[]>;
36
52
  /**
@@ -39,17 +55,17 @@ export declare class NftStakingClient {
39
55
  */
40
56
  fetchStakeEntriesForMints(poolId: number, nftMints: PublicKey[]): Promise<StakeEntry[]>;
41
57
  /** Fetch all stake entries for a pool via gPA with memcmp on pool pubkey. */
42
- fetchAllStakeEntriesByPool(projectId: number, poolId: number): Promise<StakeEntry[]>;
58
+ fetchAllStakeEntriesByPool(poolId: number, projectId?: number): Promise<StakeEntry[]>;
43
59
  /**
44
60
  * Fetch active stake entries for given mints across multiple pools.
45
61
  * Uses PDA derivation + fetchMultiple (reliable in browser).
46
62
  */
47
63
  fetchStakeEntriesAcrossPools(poolIds: number[], nftMints: PublicKey[]): Promise<StakeEntry[]>;
48
64
  /** Fetch all staker accounts for a pool via gPA with memcmp on pool pubkey. */
49
- fetchAllStakersByPool(projectId: number, poolId: number): Promise<StakerAccount[]>;
50
- closeLegacyCollection(projectId: number, collectionMint: PublicKey): Promise<TransactionInstruction>;
51
- initializeStakeConfig(projectId: number): Promise<TransactionInstruction>;
52
- createStakePool(projectId: number, stakingMode: number, rewardConfig: {
65
+ fetchAllStakersByPool(poolId: number, projectId?: number): Promise<StakerAccount[]>;
66
+ closeLegacyCollection(collectionMint: PublicKey, projectId?: number): Promise<TransactionInstruction>;
67
+ initializeStakeConfig(projectId?: number): Promise<TransactionInstruction>;
68
+ createStakePool(stakingMode: number, rewardConfig: {
53
69
  rewardType: number;
54
70
  rewardMint: PublicKey;
55
71
  baseRate: number;
@@ -63,50 +79,142 @@ export declare class NftStakingClient {
63
79
  lockDuration: number;
64
80
  rewardRate: number;
65
81
  earlyUnstakePenaltyBps: number;
66
- }[], collectionMint: PublicKey, rewardEndAt?: number, maxStaked?: number): Promise<TransactionInstruction>;
67
- updateStakePool(projectId: number, poolId: number, rewardConfig: {
68
- rewardType: number;
69
- rewardMint: PublicKey;
70
- baseRate: number;
71
- rateInterval: number;
72
- traitBonusMode: number;
73
- quantityThresholds: {
74
- minCount: number;
75
- bonusBps: number;
76
- }[];
77
- } | null, lockConfigs: {
78
- lockDuration: number;
79
- rewardRate: number;
80
- earlyUnstakePenaltyBps: number;
81
- }[] | null, isActive: boolean | null, traitAuthority?: PublicKey | null, canBurn?: boolean | null, merkleRoot?: number[] | null, gateType?: number | null, rewardEndAt?: BN | null, maxStaked?: BN | null): Promise<TransactionInstruction>;
82
- fundRewardVault(projectId: number, poolId: number, amount: BN, rewardMint: PublicKey, funderTokenAccount?: PublicKey): Promise<TransactionInstruction>;
83
- withdrawRewardVault(projectId: number, poolId: number, amount: BN, rewardMint: PublicKey, destinationTokenAccount?: PublicKey): Promise<TransactionInstruction>;
84
- closeStakePool(projectId: number, poolId: number): Promise<TransactionInstruction>;
85
- stakeNft(projectId: number, poolId: number, nftMint: PublicKey, stakingMode: number, lockTierIndex: number | null, fee?: FeeParams, gateProof?: number[][]): Promise<TransactionInstruction>;
86
- unstakeNft(projectId: number, poolId: number, nftMint: PublicKey, rewardMint: PublicKey, stakingMode: number, fee?: FeeParams): Promise<TransactionInstruction>;
87
- claimRewards(projectId: number, poolId: number, rewardMint: PublicKey, traitBonusRate?: BN | null, fee?: FeeParams): Promise<TransactionInstruction>;
88
- stakeCoreNft(projectId: number, poolId: number, nftAsset: PublicKey, collection: PublicKey, lockTierIndex: number | null, fee?: FeeParams, gateProof?: number[][]): Promise<TransactionInstruction>;
89
- unstakeCoreNft(projectId: number, poolId: number, nftAsset: PublicKey, collection: PublicKey, rewardMint: PublicKey, fee?: FeeParams): Promise<TransactionInstruction>;
82
+ }[], collectionMint: PublicKey, opts?: {
83
+ rewardEndAt?: number;
84
+ maxStaked?: number;
85
+ projectId?: number;
86
+ }): Promise<TransactionInstruction>;
87
+ updateStakePool(poolId: number, updates?: {
88
+ rewardConfig?: {
89
+ rewardType: number;
90
+ rewardMint: PublicKey;
91
+ baseRate: number;
92
+ rateInterval: number;
93
+ traitBonusMode: number;
94
+ quantityThresholds: {
95
+ minCount: number;
96
+ bonusBps: number;
97
+ }[];
98
+ } | null;
99
+ lockConfigs?: {
100
+ lockDuration: number;
101
+ rewardRate: number;
102
+ earlyUnstakePenaltyBps: number;
103
+ }[] | null;
104
+ isActive?: boolean | null;
105
+ traitAuthority?: PublicKey | null;
106
+ canBurn?: boolean | null;
107
+ merkleRoot?: number[] | null;
108
+ gateType?: number | null;
109
+ rewardEndAt?: number | null;
110
+ maxStaked?: number | null;
111
+ projectId?: number;
112
+ }): Promise<TransactionInstruction>;
113
+ /** Fund the primary reward vault. Auto-resolves rewardMint from pool if not provided. */
114
+ fundRewardVault(poolId: number, amount: BN, opts?: {
115
+ rewardMint?: PublicKey;
116
+ funderTokenAccount?: PublicKey;
117
+ projectId?: number;
118
+ }): Promise<TransactionInstruction>;
119
+ /** Withdraw from the primary reward vault. Auto-resolves rewardMint from pool if not provided. */
120
+ withdrawRewardVault(poolId: number, amount: BN, opts?: {
121
+ rewardMint?: PublicKey;
122
+ destinationTokenAccount?: PublicKey;
123
+ projectId?: number;
124
+ }): Promise<TransactionInstruction>;
125
+ closeStakePool(poolId: number, projectId?: number): Promise<TransactionInstruction>;
126
+ /** Stake a legacy/pNFT. Auto-resolves stakingMode from pool. */
127
+ stakeNft(poolId: number, nftMint: PublicKey, opts?: {
128
+ lockTierIndex?: number | null;
129
+ fee?: FeeParams;
130
+ gateProof?: number[][];
131
+ projectId?: number;
132
+ }): Promise<TransactionInstruction>;
133
+ /** Unstake a legacy/pNFT. Auto-resolves rewardMint and stakingMode from pool. */
134
+ unstakeNft(poolId: number, nftMint: PublicKey, opts?: {
135
+ fee?: FeeParams;
136
+ projectId?: number;
137
+ }): Promise<TransactionInstruction>;
138
+ /** Claim accrued rewards. Auto-resolves rewardMint from pool. */
139
+ claimRewards(poolId: number, opts?: {
140
+ traitBonusRate?: BN | null;
141
+ fee?: FeeParams;
142
+ projectId?: number;
143
+ }): Promise<TransactionInstruction>;
144
+ /** Stake a Core NFT. Auto-resolves collection from pool. */
145
+ stakeCoreNft(poolId: number, nftAsset: PublicKey, opts?: {
146
+ lockTierIndex?: number | null;
147
+ fee?: FeeParams;
148
+ gateProof?: number[][];
149
+ projectId?: number;
150
+ }): Promise<TransactionInstruction>;
151
+ /** Unstake a Core NFT. Auto-resolves collection and rewardMint from pool. */
152
+ unstakeCoreNft(poolId: number, nftAsset: PublicKey, opts?: {
153
+ fee?: FeeParams;
154
+ projectId?: number;
155
+ }): Promise<TransactionInstruction>;
90
156
  /** Stake a compressed NFT (cNFT). All address/hash params accepted as strings. */
91
- stakeCnft(projectId: number, poolId: number, nftAssetId: string, merkleTree: string, cnftRoot: string, cnftDataHash: string, cnftCreatorHash: string, cnftNonce: number, cnftIndex: number, proofNodes: string[], fee?: FeeParams, gateProof?: number[][]): Promise<TransactionInstruction>;
92
- /** Unstake a compressed NFT (cNFT). Derives tree config and program IDs internally. */
93
- unstakeCnft(projectId: number, poolId: number, nftAssetId: string, merkleTree: string, rewardMint: string, cnftRoot: string, cnftDataHash: string, cnftCreatorHash: string, cnftNonce: number, cnftIndex: number, proofNodes: string[], fee?: FeeParams): Promise<TransactionInstruction>;
94
- /** Burn a permanently-locked legacy/pNFT. Destroys the NFT and closes the stake entry.
95
- * For Escrow mode, burns from escrow. For WalletLock, unfreezes then burns from wallet. */
96
- burnStakedNft(projectId: number, poolId: number, nftMint: PublicKey, stakingMode: number, fee?: FeeParams): Promise<TransactionInstruction>;
97
- /** Burn a permanently-locked Core NFT. Destroys the asset and closes the stake entry. */
98
- burnStakedCoreNft(projectId: number, poolId: number, nftAsset: PublicKey, collection: PublicKey, fee?: FeeParams): Promise<TransactionInstruction>;
157
+ stakeCnft(poolId: number, cnftParams: {
158
+ nftAssetId: string;
159
+ merkleTree: string;
160
+ cnftRoot: string;
161
+ cnftDataHash: string;
162
+ cnftCreatorHash: string;
163
+ cnftNonce: number;
164
+ cnftIndex: number;
165
+ proofNodes: string[];
166
+ }, opts?: {
167
+ fee?: FeeParams;
168
+ gateProof?: number[][];
169
+ projectId?: number;
170
+ }): Promise<TransactionInstruction>;
171
+ /** Unstake a compressed NFT (cNFT). Auto-resolves rewardMint from pool. */
172
+ unstakeCnft(poolId: number, cnftParams: {
173
+ nftAssetId: string;
174
+ merkleTree: string;
175
+ cnftRoot: string;
176
+ cnftDataHash: string;
177
+ cnftCreatorHash: string;
178
+ cnftNonce: number;
179
+ cnftIndex: number;
180
+ proofNodes: string[];
181
+ }, opts?: {
182
+ fee?: FeeParams;
183
+ projectId?: number;
184
+ }): Promise<TransactionInstruction>;
185
+ /** Burn a permanently-locked legacy/pNFT. Auto-resolves stakingMode from pool. */
186
+ burnStakedNft(poolId: number, nftMint: PublicKey, opts?: {
187
+ fee?: FeeParams;
188
+ projectId?: number;
189
+ }): Promise<TransactionInstruction>;
190
+ /** Burn a permanently-locked Core NFT. Auto-resolves collection from pool. */
191
+ burnStakedCoreNft(poolId: number, nftAsset: PublicKey, opts?: {
192
+ fee?: FeeParams;
193
+ projectId?: number;
194
+ }): Promise<TransactionInstruction>;
99
195
  /** Spend accrued points from a Points reward type pool. */
100
- spendPoints(projectId: number, poolId: number, amount: BN, fee?: FeeParams): Promise<TransactionInstruction>;
196
+ spendPoints(poolId: number, amount: BN, opts?: {
197
+ fee?: FeeParams;
198
+ projectId?: number;
199
+ }): Promise<TransactionInstruction>;
101
200
  fetchPoolSecondaryRewards(poolId: number): Promise<PoolSecondaryRewards | null>;
102
201
  fetchStakerSecondaryRewards(poolId: number, wallet: PublicKey): Promise<StakerSecondaryRewards | null>;
103
- addPoolSecondaryReward(projectId: number, poolId: number, rewardMint: PublicKey, baseRate: BN, lockTierRates: BN[]): Promise<TransactionInstruction>;
104
- removePoolSecondaryReward(projectId: number, poolId: number, rewardIndex: number): Promise<TransactionInstruction>;
105
- fundSecondaryVault(projectId: number, poolId: number, rewardIndex: number, amount: BN, rewardMint: PublicKey, funderTokenAccount?: PublicKey): Promise<TransactionInstruction>;
106
- withdrawSecondaryVault(projectId: number, poolId: number, rewardIndex: number, amount: BN, rewardMint: PublicKey, destinationTokenAccount?: PublicKey): Promise<TransactionInstruction>;
107
- initStakerSecondary(projectId: number, poolId: number): Promise<TransactionInstruction>;
108
- claimSecondaryRewards(projectId: number, poolId: number, secondaryRewards: {
202
+ addPoolSecondaryReward(poolId: number, rewardMint: PublicKey, baseRate: BN, lockTierRates: BN[], projectId?: number): Promise<TransactionInstruction>;
203
+ removePoolSecondaryReward(poolId: number, rewardIndex: number, projectId?: number): Promise<TransactionInstruction>;
204
+ fundSecondaryVault(poolId: number, rewardIndex: number, amount: BN, rewardMint: PublicKey, opts?: {
205
+ funderTokenAccount?: PublicKey;
206
+ projectId?: number;
207
+ }): Promise<TransactionInstruction>;
208
+ withdrawSecondaryVault(poolId: number, rewardIndex: number, amount: BN, rewardMint: PublicKey, opts?: {
209
+ destinationTokenAccount?: PublicKey;
210
+ projectId?: number;
211
+ }): Promise<TransactionInstruction>;
212
+ initStakerSecondary(poolId: number, projectId?: number): Promise<TransactionInstruction>;
213
+ claimSecondaryRewards(poolId: number, secondaryRewards: {
109
214
  mint: PublicKey;
110
- }[], fee?: FeeParams): Promise<TransactionInstruction>;
215
+ }[], opts?: {
216
+ fee?: FeeParams;
217
+ projectId?: number;
218
+ }): Promise<TransactionInstruction>;
111
219
  }
112
220
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}