@soltracer/nft-staking 0.1.0 → 0.2.1
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 +89 -82
- package/dist/client.d.ts +170 -58
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +352 -178
- package/dist/client.js.map +1 -1
- package/dist/idl.d.ts +2812 -163
- package/dist/idl.d.ts.map +1 -1
- package/dist/idl.json +2835 -186
- package/package.json +2 -2
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(
|
|
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
|
-
//
|
|
24
|
-
const ix = await client.
|
|
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
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
57
|
-
const
|
|
58
|
-
const
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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(
|
|
128
|
-
const withdraw = await client.withdrawRewardVault(
|
|
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(
|
|
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(
|
|
141
|
-
const remove = await client.removePoolSecondaryReward(
|
|
142
|
-
const fund = await client.fundSecondaryVault(
|
|
143
|
-
const withdraw = await client.withdrawSecondaryVault(
|
|
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(
|
|
152
|
-
const unstake = await client.unstakeNft(
|
|
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(
|
|
159
|
-
const unstake = await client.unstakeCoreNft(
|
|
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
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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(
|
|
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(
|
|
187
|
-
const claim = await client.claimSecondaryRewards(
|
|
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(
|
|
194
|
-
const burnCore = await client.burnStakedCoreNft(
|
|
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(
|
|
217
|
+
const spend = await client.spendPoints(poolId, amount, { fee });
|
|
201
218
|
```
|
|
202
219
|
|
|
203
|
-
##
|
|
220
|
+
## What the SDK Resolves Internally
|
|
204
221
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
@@ -7,14 +7,32 @@ export interface FeeParams {
|
|
|
7
7
|
/** Referral account PDA (Pubkey as base58). Omit if no referral. */
|
|
8
8
|
referralAccount?: string;
|
|
9
9
|
}
|
|
10
|
+
type PkInput = string | PublicKey;
|
|
11
|
+
type BnInput = number | BN;
|
|
10
12
|
export declare class NftStakingClient {
|
|
11
13
|
readonly program: Program<NftStaking>;
|
|
12
14
|
readonly provider: AnchorProvider;
|
|
13
15
|
private tokenProgramCache;
|
|
14
16
|
private mintDecimalsCache;
|
|
15
|
-
|
|
16
|
-
static
|
|
17
|
-
|
|
17
|
+
private poolCache;
|
|
18
|
+
private static readonly POOL_CACHE_TTL;
|
|
19
|
+
/** Project ID bound to this client. Set via `create()` options or `setProjectId()`. */
|
|
20
|
+
projectId: number | undefined;
|
|
21
|
+
constructor(program: Program<NftStaking>, provider: AnchorProvider, projectId?: number);
|
|
22
|
+
static create(provider: AnchorProvider, opts?: {
|
|
23
|
+
projectId?: number;
|
|
24
|
+
}): NftStakingClient;
|
|
25
|
+
static fromIdl(idl: NftStaking, provider: AnchorProvider, opts?: {
|
|
26
|
+
projectId?: number;
|
|
27
|
+
}): NftStakingClient;
|
|
28
|
+
/** Set the project ID for this client instance. Returns `this` for chaining. */
|
|
29
|
+
setProjectId(projectId: number): this;
|
|
30
|
+
/** Resolve projectId: use explicit param if given, else fall back to instance-level. Throws if neither is set. */
|
|
31
|
+
private resolveProjectId;
|
|
32
|
+
/** Fetch pool data with caching. Used internally to auto-resolve rewardMint, stakingMode, collectionMint. */
|
|
33
|
+
private getPoolData;
|
|
34
|
+
/** Invalidate cached pool data (call after pool mutations). */
|
|
35
|
+
invalidatePoolCache(poolId?: number): void;
|
|
18
36
|
/** Detect whether a mint is Token-2022 or SPL Token (cached). */
|
|
19
37
|
private resolveTokenProgram;
|
|
20
38
|
/** Fetch the decimal precision of a token mint (cached). */
|
|
@@ -25,33 +43,33 @@ export declare class NftStakingClient {
|
|
|
25
43
|
private static readonly PYTH_SOL_USD_FEED;
|
|
26
44
|
/** Resolve fee PDA accounts for fee CPI. */
|
|
27
45
|
private resolveFeeAccounts;
|
|
28
|
-
fetchStakeConfig(projectId
|
|
29
|
-
fetchStakePool(projectId: number, poolId: number): Promise<StakePool | null>;
|
|
30
|
-
fetchStakeEntry(poolId: number, nftMint:
|
|
31
|
-
fetchStakerAccount(poolId: number, wallet:
|
|
46
|
+
fetchStakeConfig(projectId?: number): Promise<StakePoolConfig | null>;
|
|
47
|
+
fetchStakePool(projectId: number | undefined, poolId: number): Promise<StakePool | null>;
|
|
48
|
+
fetchStakeEntry(poolId: number, nftMint: PkInput): Promise<StakeEntry | null>;
|
|
49
|
+
fetchStakerAccount(poolId: number, wallet: PkInput, rewardDecimals?: number): Promise<StakerAccount | null>;
|
|
32
50
|
/** Fetch all stake pools for a project by scanning pool IDs 0..totalPools-1. */
|
|
33
|
-
fetchAllPools(projectId
|
|
51
|
+
fetchAllPools(projectId?: number): Promise<StakePool[]>;
|
|
34
52
|
/** Fetch all active stake entries for a wallet in a specific pool via gPA. */
|
|
35
|
-
fetchStakeEntriesByOwner(_poolId: number, owner:
|
|
53
|
+
fetchStakeEntriesByOwner(_poolId: number, owner: PkInput): Promise<StakeEntry[]>;
|
|
36
54
|
/**
|
|
37
55
|
* Fetch active stake entries for specific NFT mints by deriving their PDAs.
|
|
38
56
|
* More reliable than gPA in browser environments.
|
|
39
57
|
*/
|
|
40
|
-
fetchStakeEntriesForMints(poolId: number, nftMints:
|
|
58
|
+
fetchStakeEntriesForMints(poolId: number, nftMints: PkInput[]): Promise<StakeEntry[]>;
|
|
41
59
|
/** Fetch all stake entries for a pool via gPA with memcmp on pool pubkey. */
|
|
42
|
-
fetchAllStakeEntriesByPool(
|
|
60
|
+
fetchAllStakeEntriesByPool(poolId: number, projectId?: number): Promise<StakeEntry[]>;
|
|
43
61
|
/**
|
|
44
62
|
* Fetch active stake entries for given mints across multiple pools.
|
|
45
63
|
* Uses PDA derivation + fetchMultiple (reliable in browser).
|
|
46
64
|
*/
|
|
47
65
|
fetchStakeEntriesAcrossPools(poolIds: number[], nftMints: PublicKey[]): Promise<StakeEntry[]>;
|
|
48
66
|
/** Fetch all staker accounts for a pool via gPA with memcmp on pool pubkey. */
|
|
49
|
-
fetchAllStakersByPool(
|
|
50
|
-
closeLegacyCollection(
|
|
51
|
-
initializeStakeConfig(projectId
|
|
52
|
-
createStakePool(
|
|
67
|
+
fetchAllStakersByPool(poolId: number, projectId?: number): Promise<StakerAccount[]>;
|
|
68
|
+
closeLegacyCollection(collectionMint: PkInput, projectId?: number): Promise<TransactionInstruction>;
|
|
69
|
+
initializeStakeConfig(projectId?: number): Promise<TransactionInstruction>;
|
|
70
|
+
createStakePool(stakingMode: number, rewardConfig: {
|
|
53
71
|
rewardType: number;
|
|
54
|
-
rewardMint:
|
|
72
|
+
rewardMint: PkInput;
|
|
55
73
|
baseRate: number;
|
|
56
74
|
rateInterval: number;
|
|
57
75
|
traitBonusMode: number;
|
|
@@ -63,50 +81,144 @@ export declare class NftStakingClient {
|
|
|
63
81
|
lockDuration: number;
|
|
64
82
|
rewardRate: number;
|
|
65
83
|
earlyUnstakePenaltyBps: number;
|
|
66
|
-
}[], collectionMint:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
}[], collectionMint: PkInput, opts?: {
|
|
85
|
+
rewardEndAt?: number;
|
|
86
|
+
maxStaked?: number;
|
|
87
|
+
projectId?: number;
|
|
88
|
+
}): Promise<TransactionInstruction>;
|
|
89
|
+
updateStakePool(poolId: number, updates?: {
|
|
90
|
+
rewardConfig?: {
|
|
91
|
+
rewardType: number;
|
|
92
|
+
rewardMint: PkInput;
|
|
93
|
+
baseRate: number;
|
|
94
|
+
rateInterval: number;
|
|
95
|
+
traitBonusMode: number;
|
|
96
|
+
quantityThresholds: {
|
|
97
|
+
minCount: number;
|
|
98
|
+
bonusBps: number;
|
|
99
|
+
}[];
|
|
100
|
+
} | null;
|
|
101
|
+
lockConfigs?: {
|
|
102
|
+
lockDuration: number;
|
|
103
|
+
rewardRate: number;
|
|
104
|
+
earlyUnstakePenaltyBps: number;
|
|
105
|
+
}[] | null;
|
|
106
|
+
isActive?: boolean | null;
|
|
107
|
+
traitAuthority?: PkInput | null;
|
|
108
|
+
canBurn?: boolean | null;
|
|
109
|
+
merkleRoot?: number[] | null;
|
|
110
|
+
gateType?: number | null;
|
|
111
|
+
rewardEndAt?: number | null;
|
|
112
|
+
maxStaked?: number | null;
|
|
113
|
+
projectId?: number;
|
|
114
|
+
}): Promise<TransactionInstruction>;
|
|
115
|
+
/** Fund the primary reward vault. Auto-resolves rewardMint from pool if not provided. */
|
|
116
|
+
fundRewardVault(poolId: number, amount: BnInput, opts?: {
|
|
117
|
+
rewardMint?: PkInput;
|
|
118
|
+
funderTokenAccount?: PkInput;
|
|
119
|
+
projectId?: number;
|
|
120
|
+
}): Promise<TransactionInstruction>;
|
|
121
|
+
/** Withdraw from the primary reward vault. Auto-resolves rewardMint from pool if not provided. */
|
|
122
|
+
withdrawRewardVault(poolId: number, amount: BnInput, opts?: {
|
|
123
|
+
rewardMint?: PkInput;
|
|
124
|
+
destinationTokenAccount?: PkInput;
|
|
125
|
+
projectId?: number;
|
|
126
|
+
}): Promise<TransactionInstruction>;
|
|
127
|
+
closeStakePool(poolId: number, projectId?: number): Promise<TransactionInstruction>;
|
|
128
|
+
/** Stake a legacy/pNFT. Auto-resolves stakingMode from pool. */
|
|
129
|
+
stakeNft(poolId: number, nftMint: PkInput, opts?: {
|
|
130
|
+
lockTierIndex?: number | null;
|
|
131
|
+
fee?: FeeParams;
|
|
132
|
+
gateProof?: number[][];
|
|
133
|
+
projectId?: number;
|
|
134
|
+
}): Promise<TransactionInstruction>;
|
|
135
|
+
/** Unstake a legacy/pNFT. Auto-resolves rewardMint and stakingMode from pool. */
|
|
136
|
+
unstakeNft(poolId: number, nftMint: PkInput, opts?: {
|
|
137
|
+
fee?: FeeParams;
|
|
138
|
+
projectId?: number;
|
|
139
|
+
}): Promise<TransactionInstruction>;
|
|
140
|
+
/** Claim accrued rewards. Auto-resolves rewardMint from pool. */
|
|
141
|
+
claimRewards(poolId: number, opts?: {
|
|
142
|
+
traitBonusRate?: BN | null;
|
|
143
|
+
fee?: FeeParams;
|
|
144
|
+
projectId?: number;
|
|
145
|
+
}): Promise<TransactionInstruction>;
|
|
146
|
+
/** Stake a Core NFT. Auto-resolves collection from pool. */
|
|
147
|
+
stakeCoreNft(poolId: number, nftAsset: PkInput, opts?: {
|
|
148
|
+
lockTierIndex?: number | null;
|
|
149
|
+
fee?: FeeParams;
|
|
150
|
+
gateProof?: number[][];
|
|
151
|
+
projectId?: number;
|
|
152
|
+
}): Promise<TransactionInstruction>;
|
|
153
|
+
/** Unstake a Core NFT. Auto-resolves collection and rewardMint from pool. */
|
|
154
|
+
unstakeCoreNft(poolId: number, nftAsset: PkInput, opts?: {
|
|
155
|
+
fee?: FeeParams;
|
|
156
|
+
projectId?: number;
|
|
157
|
+
}): Promise<TransactionInstruction>;
|
|
90
158
|
/** Stake a compressed NFT (cNFT). All address/hash params accepted as strings. */
|
|
91
|
-
stakeCnft(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
159
|
+
stakeCnft(poolId: number, cnftParams: {
|
|
160
|
+
nftAssetId: string;
|
|
161
|
+
merkleTree: string;
|
|
162
|
+
cnftRoot: string;
|
|
163
|
+
cnftDataHash: string;
|
|
164
|
+
cnftCreatorHash: string;
|
|
165
|
+
cnftNonce: number;
|
|
166
|
+
cnftIndex: number;
|
|
167
|
+
proofNodes: string[];
|
|
168
|
+
}, opts?: {
|
|
169
|
+
fee?: FeeParams;
|
|
170
|
+
gateProof?: number[][];
|
|
171
|
+
projectId?: number;
|
|
172
|
+
}): Promise<TransactionInstruction>;
|
|
173
|
+
/** Unstake a compressed NFT (cNFT). Auto-resolves rewardMint from pool. */
|
|
174
|
+
unstakeCnft(poolId: number, cnftParams: {
|
|
175
|
+
nftAssetId: string;
|
|
176
|
+
merkleTree: string;
|
|
177
|
+
cnftRoot: string;
|
|
178
|
+
cnftDataHash: string;
|
|
179
|
+
cnftCreatorHash: string;
|
|
180
|
+
cnftNonce: number;
|
|
181
|
+
cnftIndex: number;
|
|
182
|
+
proofNodes: string[];
|
|
183
|
+
}, opts?: {
|
|
184
|
+
fee?: FeeParams;
|
|
185
|
+
projectId?: number;
|
|
186
|
+
}): Promise<TransactionInstruction>;
|
|
187
|
+
/** Burn a permanently-locked legacy/pNFT. Auto-resolves stakingMode from pool. */
|
|
188
|
+
burnStakedNft(poolId: number, nftMint: PkInput, opts?: {
|
|
189
|
+
fee?: FeeParams;
|
|
190
|
+
projectId?: number;
|
|
191
|
+
}): Promise<TransactionInstruction>;
|
|
192
|
+
/** Burn a permanently-locked Core NFT. Auto-resolves collection from pool. */
|
|
193
|
+
burnStakedCoreNft(poolId: number, nftAsset: PkInput, opts?: {
|
|
194
|
+
fee?: FeeParams;
|
|
195
|
+
projectId?: number;
|
|
196
|
+
}): Promise<TransactionInstruction>;
|
|
99
197
|
/** Spend accrued points from a Points reward type pool. */
|
|
100
|
-
spendPoints(
|
|
198
|
+
spendPoints(poolId: number, amount: BnInput, opts?: {
|
|
199
|
+
fee?: FeeParams;
|
|
200
|
+
projectId?: number;
|
|
201
|
+
}): Promise<TransactionInstruction>;
|
|
101
202
|
fetchPoolSecondaryRewards(poolId: number): Promise<PoolSecondaryRewards | null>;
|
|
102
|
-
fetchStakerSecondaryRewards(poolId: number, wallet:
|
|
103
|
-
addPoolSecondaryReward(
|
|
104
|
-
removePoolSecondaryReward(
|
|
105
|
-
fundSecondaryVault(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
203
|
+
fetchStakerSecondaryRewards(poolId: number, wallet: PkInput): Promise<StakerSecondaryRewards | null>;
|
|
204
|
+
addPoolSecondaryReward(poolId: number, rewardMint: PkInput, baseRate: BnInput, lockTierRates: BnInput[], projectId?: number): Promise<TransactionInstruction>;
|
|
205
|
+
removePoolSecondaryReward(poolId: number, rewardIndex: number, projectId?: number): Promise<TransactionInstruction>;
|
|
206
|
+
fundSecondaryVault(poolId: number, rewardIndex: number, amount: BnInput, rewardMint: PkInput, opts?: {
|
|
207
|
+
funderTokenAccount?: PkInput;
|
|
208
|
+
projectId?: number;
|
|
209
|
+
}): Promise<TransactionInstruction>;
|
|
210
|
+
withdrawSecondaryVault(poolId: number, rewardIndex: number, amount: BnInput, rewardMint: PkInput, opts?: {
|
|
211
|
+
destinationTokenAccount?: PkInput;
|
|
212
|
+
projectId?: number;
|
|
213
|
+
}): Promise<TransactionInstruction>;
|
|
214
|
+
initStakerSecondary(poolId: number, projectId?: number): Promise<TransactionInstruction>;
|
|
215
|
+
claimSecondaryRewards(poolId: number, secondaryRewards: {
|
|
216
|
+
mint: PkInput;
|
|
217
|
+
}[], opts?: {
|
|
218
|
+
fee?: FeeParams;
|
|
219
|
+
projectId?: number;
|
|
220
|
+
}): Promise<TransactionInstruction>;
|
|
221
|
+
updatePoolSecondaryReward(poolId: number, rewardIndex: number, baseRate: BnInput, lockTierRates: BnInput[], projectId?: number): Promise<TransactionInstruction>;
|
|
111
222
|
}
|
|
223
|
+
export {};
|
|
112
224
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|