@percolatorct/sdk 1.0.0-beta.8 → 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/README.md +24 -4
- package/dist/abi/accounts.d.ts +129 -25
- package/dist/abi/errors.d.ts +0 -11
- package/dist/abi/index.d.ts +1 -0
- package/dist/abi/instructions.d.ts +429 -150
- package/dist/abi/nft.d.ts +136 -0
- package/dist/config/program-ids.d.ts +1 -1
- package/dist/index.js +1897 -700
- package/dist/index.js.map +1 -1
- package/dist/math/trading.d.ts +1 -116
- package/dist/math/warmup.d.ts +0 -50
- package/dist/runtime/lighthouse.d.ts +1 -1
- package/dist/solana/discovery.d.ts +2 -13
- package/dist/solana/oracle.d.ts +2 -10
- package/dist/solana/pda.d.ts +6 -5
- package/dist/solana/slab.d.ts +133 -13
- package/dist/solana/stake.d.ts +51 -9
- package/dist/validation.d.ts +1 -26
- package/package.json +5 -2
package/dist/math/trading.d.ts
CHANGED
|
@@ -10,68 +10,20 @@
|
|
|
10
10
|
*/
|
|
11
11
|
/**
|
|
12
12
|
* Compute mark-to-market PnL for an open position.
|
|
13
|
-
*
|
|
14
|
-
* @param positionSize - Signed position size (positive = long, negative = short).
|
|
15
|
-
* @param entryPrice - Entry price in e6 format (1 USD = 1_000_000).
|
|
16
|
-
* @param oraclePrice - Current oracle price in e6 format.
|
|
17
|
-
* @returns PnL in native token units (positive = profit, negative = loss).
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* // Long 10 SOL at $100, oracle now $110 → profit
|
|
22
|
-
* const pnl = computeMarkPnl(10_000_000n, 100_000_000n, 110_000_000n);
|
|
23
|
-
* ```
|
|
24
13
|
*/
|
|
25
14
|
export declare function computeMarkPnl(positionSize: bigint, entryPrice: bigint, oraclePrice: bigint): bigint;
|
|
26
15
|
/**
|
|
27
16
|
* Compute liquidation price given entry, capital, position and maintenance margin.
|
|
28
17
|
* Uses pure BigInt arithmetic for precision (no Number() truncation).
|
|
29
|
-
*
|
|
30
|
-
* @param entryPrice - Entry price in e6 format.
|
|
31
|
-
* @param capital - Account capital in native token units.
|
|
32
|
-
* @param positionSize - Signed position size (positive = long, negative = short).
|
|
33
|
-
* @param maintenanceMarginBps - Maintenance margin requirement in basis points (e.g. 500n = 5%).
|
|
34
|
-
* @returns Liquidation price in e6 format. Returns 0n for longs that can't be liquidated,
|
|
35
|
-
* or max u64 for shorts with ≥100% maintenance margin.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```ts
|
|
39
|
-
* // Long 1 SOL at $100, $10 capital, 5% maintenance margin
|
|
40
|
-
* const liqPrice = computeLiqPrice(100_000_000n, 10_000_000n, 1_000_000n, 500n);
|
|
41
|
-
* ```
|
|
42
18
|
*/
|
|
43
19
|
export declare function computeLiqPrice(entryPrice: bigint, capital: bigint, positionSize: bigint, maintenanceMarginBps: bigint): bigint;
|
|
44
20
|
/**
|
|
45
21
|
* Compute estimated liquidation price BEFORE opening a trade.
|
|
46
22
|
* Accounts for trading fees reducing effective capital.
|
|
47
|
-
*
|
|
48
|
-
* @param oracleE6 - Current oracle price in e6 format (used as entry estimate).
|
|
49
|
-
* @param margin - Deposit margin in native token units.
|
|
50
|
-
* @param posSize - Intended position size (absolute value used internally).
|
|
51
|
-
* @param maintBps - Maintenance margin in basis points.
|
|
52
|
-
* @param feeBps - Trading fee in basis points.
|
|
53
|
-
* @param direction - Trade direction: `"long"` or `"short"`.
|
|
54
|
-
* @returns Estimated liquidation price in e6 format.
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```ts
|
|
58
|
-
* const liq = computePreTradeLiqPrice(
|
|
59
|
-
* 100_000_000n, 10_000_000n, 1_000_000n, 500n, 30n, "long"
|
|
60
|
-
* );
|
|
61
|
-
* ```
|
|
62
23
|
*/
|
|
63
24
|
export declare function computePreTradeLiqPrice(oracleE6: bigint, margin: bigint, posSize: bigint, maintBps: bigint, feeBps: bigint, direction: "long" | "short"): bigint;
|
|
64
25
|
/**
|
|
65
26
|
* Compute trading fee from notional value and fee rate in bps.
|
|
66
|
-
*
|
|
67
|
-
* @param notional - Trade notional value in native token units.
|
|
68
|
-
* @param tradingFeeBps - Fee rate in basis points (e.g. 30n = 0.30%).
|
|
69
|
-
* @returns Fee amount in native token units.
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ```ts
|
|
73
|
-
* const fee = computeTradingFee(1_000_000_000n, 30n); // 0.30% of 1 SOL
|
|
74
|
-
* ```
|
|
75
27
|
*/
|
|
76
28
|
export declare function computeTradingFee(notional: bigint, tradingFeeBps: bigint): bigint;
|
|
77
29
|
/**
|
|
@@ -137,86 +89,19 @@ export declare function computeFeeSplit(totalFee: bigint, config: FeeSplitConfig
|
|
|
137
89
|
export declare function computePnlPercent(pnlTokens: bigint, capital: bigint): number;
|
|
138
90
|
/**
|
|
139
91
|
* Estimate entry price including fee impact (slippage approximation).
|
|
140
|
-
*
|
|
141
|
-
* @param oracleE6 - Current oracle price in e6 format.
|
|
142
|
-
* @param tradingFeeBps - Trading fee in basis points.
|
|
143
|
-
* @param direction - Trade direction: `"long"` or `"short"`.
|
|
144
|
-
* @returns Estimated entry price in e6 format (higher for longs, lower for shorts).
|
|
145
|
-
*
|
|
146
|
-
* @example
|
|
147
|
-
* ```ts
|
|
148
|
-
* const entry = computeEstimatedEntryPrice(100_000_000n, 30n, "long");
|
|
149
|
-
* // → 100_030_000n (oracle + 0.30% fee impact)
|
|
150
|
-
* ```
|
|
151
92
|
*/
|
|
152
93
|
export declare function computeEstimatedEntryPrice(oracleE6: bigint, tradingFeeBps: bigint, direction: "long" | "short"): bigint;
|
|
153
94
|
/**
|
|
154
95
|
* Convert per-slot funding rate (bps) to annualized percentage.
|
|
155
|
-
*
|
|
156
|
-
* @param fundingRateBpsPerSlot - Funding rate per slot in basis points (i64 from engine state).
|
|
157
|
-
* @returns Annualized funding rate as a percentage (e.g. 12.5 = 12.5% APR).
|
|
158
|
-
* @throws Error if the value exceeds Number.MAX_SAFE_INTEGER.
|
|
159
|
-
*
|
|
160
|
-
* @example
|
|
161
|
-
* ```ts
|
|
162
|
-
* const apr = computeFundingRateAnnualized(1n); // ~78.84% APR
|
|
163
|
-
* ```
|
|
164
96
|
*/
|
|
165
97
|
export declare function computeFundingRateAnnualized(fundingRateBpsPerSlot: bigint): number;
|
|
166
98
|
/**
|
|
167
99
|
* Compute margin required for a given notional and initial margin bps.
|
|
168
|
-
*
|
|
169
|
-
* @param notional - Trade notional value in native token units.
|
|
170
|
-
* @param initialMarginBps - Initial margin requirement in basis points (e.g. 1000n = 10%).
|
|
171
|
-
* @returns Required margin in native token units.
|
|
172
|
-
*
|
|
173
|
-
* @example
|
|
174
|
-
* ```ts
|
|
175
|
-
* const margin = computeRequiredMargin(10_000_000_000n, 1000n); // 10% of notional
|
|
176
|
-
* // → 1_000_000_000n
|
|
177
|
-
* ```
|
|
178
100
|
*/
|
|
179
101
|
export declare function computeRequiredMargin(notional: bigint, initialMarginBps: bigint): bigint;
|
|
180
102
|
/**
|
|
181
103
|
* Compute maximum leverage from initial margin bps.
|
|
182
104
|
*
|
|
183
|
-
*
|
|
184
|
-
* Uses scaled arithmetic to preserve precision for fractional leverage values.
|
|
185
|
-
*
|
|
186
|
-
* @param initialMarginBps - Initial margin requirement in basis points (e.g. 500n = 5% → 20x).
|
|
187
|
-
* @returns Maximum leverage as a number (e.g. 20 for 500 bps, 3.003 for 3333 bps).
|
|
188
|
-
* @throws Error if initialMarginBps is zero (infinite leverage is undefined).
|
|
189
|
-
*
|
|
190
|
-
* @example
|
|
191
|
-
* ```ts
|
|
192
|
-
* const maxLev = computeMaxLeverage(500n); // → 20
|
|
193
|
-
* const maxLev2 = computeMaxLeverage(1000n); // → 10
|
|
194
|
-
* const maxLev3 = computeMaxLeverage(3333n); // → 3.003 (not truncated to 3)
|
|
195
|
-
* ```
|
|
105
|
+
* @throws Error if initialMarginBps is zero (infinite leverage is undefined)
|
|
196
106
|
*/
|
|
197
107
|
export declare function computeMaxLeverage(initialMarginBps: bigint): number;
|
|
198
|
-
/**
|
|
199
|
-
* Compute the maximum amount that can be withdrawn from a position.
|
|
200
|
-
*
|
|
201
|
-
* The withdrawable amount is the capital plus any matured (unreserved) PnL.
|
|
202
|
-
* Reserved PnL is still locked and cannot be withdrawn until the warmup period elapses.
|
|
203
|
-
*
|
|
204
|
-
* Formula: max_withdrawable = capital + max(0, pnl - reserved_pnl)
|
|
205
|
-
*
|
|
206
|
-
* @param capital - Capital allocated to the position (in native token units)
|
|
207
|
-
* @param pnl - Mark-to-market PnL (in native token units, can be negative)
|
|
208
|
-
* @param reservedPnl - PnL that is still locked during warmup (always non-negative)
|
|
209
|
-
* @returns The maximum amount in native units that can be withdrawn without closing the position
|
|
210
|
-
*
|
|
211
|
-
* @example
|
|
212
|
-
* ```ts
|
|
213
|
-
* // Position: 10 SOL capital, +2 SOL mark PnL, 0.5 SOL reserved
|
|
214
|
-
* const max = computeMaxWithdrawable(
|
|
215
|
-
* 10_000_000_000n, // 10 SOL in lamports
|
|
216
|
-
* 2_000_000_000n, // +2 SOL in lamports
|
|
217
|
-
* 500_000_000n // 0.5 SOL reserved in lamports
|
|
218
|
-
* );
|
|
219
|
-
* // Returns: 11_500_000_000n (10 + (2 - 0.5) = 11.5 SOL in lamports)
|
|
220
|
-
* ```
|
|
221
|
-
*/
|
|
222
|
-
export declare function computeMaxWithdrawable(capital: bigint, pnl: bigint, reservedPnl: bigint): bigint;
|
package/dist/math/warmup.d.ts
CHANGED
|
@@ -53,53 +53,3 @@ export declare function computeWarmupLeverageCap(initialMarginBps: bigint, total
|
|
|
53
53
|
* @returns Maximum position size in native units.
|
|
54
54
|
*/
|
|
55
55
|
export declare function computeWarmupMaxPositionSize(initialMarginBps: bigint, totalCapital: bigint, currentSlot: bigint, warmupStartSlot: bigint, warmupPeriodSlots: bigint): bigint;
|
|
56
|
-
/**
|
|
57
|
-
* Warmup progress information for a position.
|
|
58
|
-
*/
|
|
59
|
-
export interface WarmupProgress {
|
|
60
|
-
/** PnL available for withdrawal right now (not locked by warmup). */
|
|
61
|
-
maturedPnl: bigint;
|
|
62
|
-
/** PnL still locked until warmup completes. */
|
|
63
|
-
reservedPnl: bigint;
|
|
64
|
-
/** Progress toward full warmup as a basis point (0–10,000). */
|
|
65
|
-
progressBps: bigint;
|
|
66
|
-
/** Slots remaining until full warmup (0 if fully matured). */
|
|
67
|
-
slotsRemaining: bigint;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Compute PnL warmup progress for a position.
|
|
71
|
-
*
|
|
72
|
-
* During the warmup period, a position's unrealized PnL is linearly released.
|
|
73
|
-
* The portion available for withdrawal grows over time. This utility shows:
|
|
74
|
-
* - How much PnL is currently available (matured)
|
|
75
|
-
* - How much is still locked (reserved)
|
|
76
|
-
* - Progress toward full maturation (as %)
|
|
77
|
-
* - Slots remaining
|
|
78
|
-
*
|
|
79
|
-
* Users can display a progress bar or "unlocks in X slots" message to give
|
|
80
|
-
* transparency into when their PnL becomes withdrawable.
|
|
81
|
-
*
|
|
82
|
-
* @param currentSlot - Current on-chain slot (from engine state).
|
|
83
|
-
* @param warmupStartedAtSlot - Slot when this position's warmup started.
|
|
84
|
-
* @param warmupPeriodSlots - Total warmup duration in slots (from market config).
|
|
85
|
-
* @param pnl - Total realized + unrealized PnL (from account).
|
|
86
|
-
* @param reservedPnl - PnL locked during warmup (from account).
|
|
87
|
-
* @returns WarmupProgress with matured/reserved PnL, progress %, and slots remaining.
|
|
88
|
-
*
|
|
89
|
-
* @example
|
|
90
|
-
* ```ts
|
|
91
|
-
* const progress = computeWarmupProgress(
|
|
92
|
-
* 10000n, // current slot
|
|
93
|
-
* 9000n, // warmup started at slot 9000
|
|
94
|
-
* 2000n, // warmup period = 2000 slots
|
|
95
|
-
* 1000000000n, // pnl = 1 SOL
|
|
96
|
-
* 600000000n // reserved = 0.6 SOL (60% still locked)
|
|
97
|
-
* );
|
|
98
|
-
* // Returns:
|
|
99
|
-
* // maturedPnl: 400000000n (0.4 SOL available)
|
|
100
|
-
* // reservedPnl: 600000000n (0.6 SOL locked)
|
|
101
|
-
* // progressBps: 5000n (50% complete)
|
|
102
|
-
* // slotsRemaining: 1000n (1000 slots until fully mature)
|
|
103
|
-
* ```
|
|
104
|
-
*/
|
|
105
|
-
export declare function computeWarmupProgress(currentSlot: bigint, warmupStartedAtSlot: bigint, warmupPeriodSlots: bigint, pnl: bigint, reservedPnl: bigint): WarmupProgress;
|
|
@@ -55,7 +55,7 @@ export declare const LIGHTHOUSE_CONSTRAINT_ADDRESS = 6400;
|
|
|
55
55
|
* Known Lighthouse/Anchor error codes that may appear in transaction logs.
|
|
56
56
|
* All are in the Anchor error range (0x1770–0x1900+).
|
|
57
57
|
*/
|
|
58
|
-
export declare const LIGHTHOUSE_ERROR_CODES: Set<
|
|
58
|
+
export declare const LIGHTHOUSE_ERROR_CODES: Set<6400 | 6000 | 6001 | 6002 | 6003 | 6016 | 6032 | 6033 | 6034 | 6035 | 6036 | 6037 | 6038 | 6039 | 6040 | 6041 | 6042 | 6043>;
|
|
59
59
|
/**
|
|
60
60
|
* Check if a TransactionInstruction is from the Lighthouse program.
|
|
61
61
|
*
|
|
@@ -36,16 +36,11 @@ export interface DiscoveredMarket {
|
|
|
36
36
|
* in SLAB_TIERS_V0 for discovery of legacy on-chain accounts.
|
|
37
37
|
*/
|
|
38
38
|
/**
|
|
39
|
-
* Default slab tiers for the current mainnet program (v12.
|
|
39
|
+
* Default slab tiers for the current mainnet program (v12.17).
|
|
40
40
|
* These are used by useCreateMarket to allocate slab accounts of the correct size.
|
|
41
|
+
* V12_17: two-bucket warmup, per-side funding, ACCOUNT_SIZE=352 (SBF).
|
|
41
42
|
*/
|
|
42
43
|
export declare const SLAB_TIERS: {
|
|
43
|
-
readonly micro: {
|
|
44
|
-
maxAccounts: number;
|
|
45
|
-
dataSize: number;
|
|
46
|
-
label: string;
|
|
47
|
-
description: string;
|
|
48
|
-
};
|
|
49
44
|
readonly small: {
|
|
50
45
|
maxAccounts: number;
|
|
51
46
|
dataSize: number;
|
|
@@ -166,12 +161,6 @@ export declare const SLAB_TIERS_V1D_LEGACY: {
|
|
|
166
161
|
};
|
|
167
162
|
/** @deprecated Alias — use SLAB_TIERS (already V1) */
|
|
168
163
|
export declare const SLAB_TIERS_V1: {
|
|
169
|
-
readonly micro: {
|
|
170
|
-
maxAccounts: number;
|
|
171
|
-
dataSize: number;
|
|
172
|
-
label: string;
|
|
173
|
-
description: string;
|
|
174
|
-
};
|
|
175
164
|
readonly small: {
|
|
176
165
|
maxAccounts: number;
|
|
177
166
|
dataSize: number;
|
package/dist/solana/oracle.d.ts
CHANGED
|
@@ -16,19 +16,11 @@ declare const CHAINLINK_MIN_SIZE = 224;
|
|
|
16
16
|
declare const MAX_DECIMALS = 18;
|
|
17
17
|
/** Offset of decimals field in Chainlink aggregator account */
|
|
18
18
|
declare const CHAINLINK_DECIMALS_OFFSET = 138;
|
|
19
|
-
/** Offset of updated_at timestamp (i64 LE, Unix seconds) in Chainlink aggregator */
|
|
20
|
-
declare const CHAINLINK_TIMESTAMP_OFFSET = 168;
|
|
21
19
|
/** Offset of latest answer in Chainlink aggregator account */
|
|
22
20
|
declare const CHAINLINK_ANSWER_OFFSET = 216;
|
|
23
21
|
export interface OraclePrice {
|
|
24
22
|
price: bigint;
|
|
25
23
|
decimals: number;
|
|
26
|
-
/** Unix timestamp (seconds) of the last oracle update, if available. */
|
|
27
|
-
updatedAt?: number;
|
|
28
|
-
}
|
|
29
|
-
export interface ParseChainlinkOptions {
|
|
30
|
-
/** Maximum allowed staleness in seconds. If the oracle update is older, an error is thrown. */
|
|
31
|
-
maxStalenessSeconds?: number;
|
|
32
24
|
}
|
|
33
25
|
/**
|
|
34
26
|
* Parse price data from a Chainlink aggregator account buffer.
|
|
@@ -42,11 +34,11 @@ export interface ParseChainlinkOptions {
|
|
|
42
34
|
* @returns Parsed oracle price with decimals
|
|
43
35
|
* @throws if the buffer is invalid or contains unreasonable data
|
|
44
36
|
*/
|
|
45
|
-
export declare function parseChainlinkPrice(data: Uint8Array
|
|
37
|
+
export declare function parseChainlinkPrice(data: Uint8Array): OraclePrice;
|
|
46
38
|
/**
|
|
47
39
|
* Validate that a buffer looks like a valid Chainlink aggregator account.
|
|
48
40
|
* Returns true if the buffer passes all validation checks, false otherwise.
|
|
49
41
|
* Use this for non-throwing validation.
|
|
50
42
|
*/
|
|
51
43
|
export declare function isValidChainlinkOracle(data: Uint8Array): boolean;
|
|
52
|
-
export { CHAINLINK_MIN_SIZE, CHAINLINK_DECIMALS_OFFSET,
|
|
44
|
+
export { CHAINLINK_MIN_SIZE, CHAINLINK_DECIMALS_OFFSET, CHAINLINK_ANSWER_OFFSET, MAX_DECIMALS };
|
package/dist/solana/pda.d.ts
CHANGED
|
@@ -4,16 +4,17 @@ import { PublicKey } from "@solana/web3.js";
|
|
|
4
4
|
* Seeds: ["vault", slab_key]
|
|
5
5
|
*/
|
|
6
6
|
export declare function deriveVaultAuthority(programId: PublicKey, slab: PublicKey): [PublicKey, number];
|
|
7
|
+
/**
|
|
8
|
+
* Derive insurance LP mint PDA (a.k.a. LP vault mint PDA).
|
|
9
|
+
* Seeds: ["lp_vault_mint", slab_key]
|
|
10
|
+
* Wrapper anchor: src/percolator.rs:2543 derive_lp_vault_mint.
|
|
11
|
+
*/
|
|
12
|
+
export declare function deriveInsuranceLpMint(programId: PublicKey, slab: PublicKey): [PublicKey, number];
|
|
7
13
|
/**
|
|
8
14
|
* Derive LP PDA for TradeCpi.
|
|
9
15
|
* Seeds: ["lp", slab_key, lp_idx as u16 LE]
|
|
10
16
|
*/
|
|
11
17
|
export declare function deriveLpPda(programId: PublicKey, slab: PublicKey, lpIdx: number): [PublicKey, number];
|
|
12
|
-
/**
|
|
13
|
-
* Derive keeper fund PDA.
|
|
14
|
-
* Seeds: ["keeper_fund", slab_key]
|
|
15
|
-
*/
|
|
16
|
-
export declare function deriveKeeperFund(programId: PublicKey, slab: PublicKey): [PublicKey, number];
|
|
17
18
|
/** PumpSwap AMM program ID. */
|
|
18
19
|
export declare const PUMPSWAP_PROGRAM_ID: PublicKey;
|
|
19
20
|
/** Raydium CLMM (Concentrated Liquidity) program ID. */
|
package/dist/solana/slab.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
2
|
+
/** Slab magic number ("PERCOLAT" as little-endian u64). */
|
|
3
|
+
export declare const SLAB_MAGIC: bigint;
|
|
2
4
|
/**
|
|
3
5
|
* Full slab layout descriptor. Returned by detectSlabLayout().
|
|
4
6
|
* All engine field offsets are relative to engineOff.
|
|
@@ -50,6 +52,7 @@ export interface SlabLayout {
|
|
|
50
52
|
hasInsuranceIsolation: boolean;
|
|
51
53
|
engineInsuranceIsolatedOff: number;
|
|
52
54
|
engineInsuranceIsolationBpsOff: number;
|
|
55
|
+
configMarkEwmaOff?: number;
|
|
53
56
|
}
|
|
54
57
|
export declare const ENGINE_OFF = 600;
|
|
55
58
|
export declare const ENGINE_MARK_PRICE_OFF = 400;
|
|
@@ -130,10 +133,35 @@ export declare const SLAB_TIERS_V12_1: Record<string, {
|
|
|
130
133
|
label: string;
|
|
131
134
|
description: string;
|
|
132
135
|
}>;
|
|
136
|
+
/**
|
|
137
|
+
* V12_15 slab tier sizes — percolator v12.15 (engine+prog sync).
|
|
138
|
+
* ENGINE_OFF=624, BITMAP_OFF=862 (relative), ACCOUNT_SIZE=4400, postBitmap=18.
|
|
139
|
+
* MAX_ACCOUNTS default changed from 4096 to 2048. Verified SLAB_LEN=1,128,448 for small (256).
|
|
140
|
+
* Account layout completely redesigned with reserve cohort arrays.
|
|
141
|
+
*/
|
|
142
|
+
export declare const SLAB_TIERS_V12_15: Record<string, {
|
|
143
|
+
maxAccounts: number;
|
|
144
|
+
dataSize: number;
|
|
145
|
+
label: string;
|
|
146
|
+
description: string;
|
|
147
|
+
}>;
|
|
148
|
+
/**
|
|
149
|
+
* V12_17 slab tier sizes — percolator v12.17 (two-bucket warmup, per-side funding).
|
|
150
|
+
* Uses SBF sizes (on-chain layout) for the dataSize values.
|
|
151
|
+
* ENGINE_OFF=504 (SBF), ACCOUNT_SIZE=352 (SBF), BITMAP_OFF=712 (SBF), postBitmap=4.
|
|
152
|
+
* RISK_BUF_LEN=160 appended after engine.
|
|
153
|
+
* Supported tiers: small(256), medium(1024), large(4096).
|
|
154
|
+
*/
|
|
155
|
+
export declare const SLAB_TIERS_V12_17: Record<string, {
|
|
156
|
+
maxAccounts: number;
|
|
157
|
+
dataSize: number;
|
|
158
|
+
label: string;
|
|
159
|
+
description: string;
|
|
160
|
+
}>;
|
|
133
161
|
/**
|
|
134
162
|
* Detect the slab layout version from the raw account data length.
|
|
135
163
|
* Returns the full SlabLayout descriptor, or null if the size is unrecognised.
|
|
136
|
-
* Checks V12_1, V_SETDEXPOOL, V1M2, V_ADL, V1M, V0, V1D, V1D-legacy, V1, and V1-legacy sizes.
|
|
164
|
+
* Checks V12_15, V12_1_EP, V12_1, V_SETDEXPOOL, V1M2, V_ADL, V1M, V0, V1D, V1D-legacy, V1, and V1-legacy sizes.
|
|
137
165
|
*
|
|
138
166
|
* When `data` is provided and the size matches V1D, the version field at offset 8 is read
|
|
139
167
|
* to disambiguate V2 slabs (which produce identical sizes to V1D with postBitmap=2).
|
|
@@ -181,10 +209,10 @@ export interface MarketConfig {
|
|
|
181
209
|
fundingInvScaleNotionalE6: bigint;
|
|
182
210
|
fundingMaxPremiumBps: bigint;
|
|
183
211
|
fundingMaxBpsPerSlot: bigint;
|
|
184
|
-
fundingPremiumWeightBps: bigint;
|
|
185
|
-
fundingSettlementIntervalSlots: bigint;
|
|
186
|
-
fundingPremiumDampeningE6: bigint;
|
|
187
|
-
fundingPremiumMaxBpsPerSlot: bigint;
|
|
212
|
+
/** @deprecated Removed in V12_1 — always 0 */ fundingPremiumWeightBps: bigint;
|
|
213
|
+
/** @deprecated Removed in V12_1 — always 0 */ fundingSettlementIntervalSlots: bigint;
|
|
214
|
+
/** @deprecated Removed in V12_1 — always 0 */ fundingPremiumDampeningE6: bigint;
|
|
215
|
+
/** @deprecated Removed in V12_1 — always 0 */ fundingPremiumMaxBpsPerSlot: bigint;
|
|
188
216
|
threshFloor: bigint;
|
|
189
217
|
threshRiskBps: bigint;
|
|
190
218
|
threshUpdateIntervalSlots: bigint;
|
|
@@ -229,6 +257,10 @@ export interface InsuranceFund {
|
|
|
229
257
|
isolationBps: number;
|
|
230
258
|
}
|
|
231
259
|
export interface RiskParams {
|
|
260
|
+
/**
|
|
261
|
+
* @deprecated Split into hMin/hMax in v12.15 RiskParams. On V12_15 slabs this field returns
|
|
262
|
+
* hMin for backwards compatibility. On pre-v12.15 slabs hMin/hMax both mirror this value.
|
|
263
|
+
*/
|
|
232
264
|
warmupPeriodSlots: bigint;
|
|
233
265
|
maintenanceMarginBps: bigint;
|
|
234
266
|
initialMarginBps: bigint;
|
|
@@ -242,6 +274,18 @@ export interface RiskParams {
|
|
|
242
274
|
liquidationFeeCap: bigint;
|
|
243
275
|
liquidationBufferBps: bigint;
|
|
244
276
|
minLiquidationAbs: bigint;
|
|
277
|
+
/** Minimum initial deposit to open an account (V12_1+ only) */
|
|
278
|
+
minInitialDeposit: bigint;
|
|
279
|
+
/** Minimum nonzero maintenance margin requirement (V12_1+ only) */
|
|
280
|
+
minNonzeroMmReq: bigint;
|
|
281
|
+
/** Minimum nonzero initial margin requirement (V12_1+ only) */
|
|
282
|
+
minNonzeroImReq: bigint;
|
|
283
|
+
/** Insurance fund floor (V12_1+ only) */
|
|
284
|
+
insuranceFloor: bigint;
|
|
285
|
+
/** Minimum horizon slots (v12.15+). Replaces warmupPeriodSlots. 0n on pre-v12.15 slabs. */
|
|
286
|
+
hMin: bigint;
|
|
287
|
+
/** Maximum horizon slots (v12.15+). 0n on pre-v12.15 slabs. */
|
|
288
|
+
hMax: bigint;
|
|
245
289
|
}
|
|
246
290
|
export interface EngineState {
|
|
247
291
|
vault: bigint;
|
|
@@ -249,7 +293,20 @@ export interface EngineState {
|
|
|
249
293
|
currentSlot: bigint;
|
|
250
294
|
fundingIndexQpbE6: bigint;
|
|
251
295
|
lastFundingSlot: bigint;
|
|
296
|
+
/**
|
|
297
|
+
* Funding rate per slot. On pre-v12.15 slabs: i64 in BPS units.
|
|
298
|
+
* On v12.15+ slabs: i128 in e9 units (field renamed `funding_rate_e9` on-chain).
|
|
299
|
+
*/
|
|
252
300
|
fundingRateBpsPerSlotLast: bigint;
|
|
301
|
+
/**
|
|
302
|
+
* Funding rate in e9 units (i128). v12.15+ only.
|
|
303
|
+
* 0n on pre-v12.15 slabs.
|
|
304
|
+
*/
|
|
305
|
+
fundingRateE9: bigint;
|
|
306
|
+
/**
|
|
307
|
+
* Market mode. v12.15+ only. 0 = Live, 1 = Resolved. null on pre-v12.15 slabs.
|
|
308
|
+
*/
|
|
309
|
+
marketMode: 0 | 1 | null;
|
|
253
310
|
lastCrankSlot: bigint;
|
|
254
311
|
maxCrankStalenessSlots: bigint;
|
|
255
312
|
totalOpenInterest: bigint;
|
|
@@ -257,6 +314,10 @@ export interface EngineState {
|
|
|
257
314
|
shortOi: bigint;
|
|
258
315
|
cTot: bigint;
|
|
259
316
|
pnlPosTot: bigint;
|
|
317
|
+
/**
|
|
318
|
+
* Matured (settled) positive PnL total (u128). v12.15+ only. 0n on pre-v12.15 slabs.
|
|
319
|
+
*/
|
|
320
|
+
pnlMaturedPosTot: bigint;
|
|
260
321
|
liqCursor: number;
|
|
261
322
|
gcCursor: number;
|
|
262
323
|
lastSweepStartSlot: bigint;
|
|
@@ -275,27 +336,94 @@ export interface EngineState {
|
|
|
275
336
|
numUsedAccounts: number;
|
|
276
337
|
nextAccountId: bigint;
|
|
277
338
|
markPriceE6: bigint;
|
|
339
|
+
/** last_oracle_price (u64, e6). V12_15+ only. 0n on pre-v12.15. */
|
|
340
|
+
oraclePriceE6: bigint;
|
|
341
|
+
/** Cumulative funding numerator for long side (i128). 0n on pre-v12.17. */
|
|
342
|
+
fLongNum: bigint;
|
|
343
|
+
/** Cumulative funding numerator for short side (i128). 0n on pre-v12.17. */
|
|
344
|
+
fShortNum: bigint;
|
|
345
|
+
/** Count of accounts with negative PnL. 0n on pre-v12.17. */
|
|
346
|
+
negPnlAccountCount: bigint;
|
|
347
|
+
/** Last funding-sample price (u64 e6). 0n on pre-v12.17. */
|
|
348
|
+
fundPxLast: bigint;
|
|
349
|
+
/** Matured positive PnL total (u128). v12.15+ only. 0n on pre-v12.15 slabs. */
|
|
350
|
+
resolvedKLongTerminalDelta: bigint;
|
|
351
|
+
/** Terminal K delta for short side (i128). 0n on pre-v12.17. */
|
|
352
|
+
resolvedKShortTerminalDelta: bigint;
|
|
353
|
+
/** Live oracle price used during resolution (u64 e6). 0n on pre-v12.17. */
|
|
354
|
+
resolvedLivePrice: bigint;
|
|
278
355
|
}
|
|
279
356
|
export declare enum AccountKind {
|
|
280
357
|
User = 0,
|
|
281
358
|
LP = 1
|
|
282
359
|
}
|
|
360
|
+
/** Parsed reserve cohort (64 bytes on-chain). Raw bytes; structure is program-internal. */
|
|
361
|
+
export type ReserveCohortBytes = Uint8Array;
|
|
283
362
|
export interface Account {
|
|
284
363
|
kind: AccountKind;
|
|
285
364
|
accountId: bigint;
|
|
286
365
|
capital: bigint;
|
|
287
366
|
pnl: bigint;
|
|
288
367
|
reservedPnl: bigint;
|
|
368
|
+
/** @deprecated Removed in v12.15. Always 0n on V12_15 slabs. */
|
|
289
369
|
warmupStartedAtSlot: bigint;
|
|
370
|
+
/** @deprecated Removed in v12.15. Always 0n on V12_15 slabs. */
|
|
290
371
|
warmupSlopePerStep: bigint;
|
|
291
372
|
positionSize: bigint;
|
|
373
|
+
/** Entry price in e6 units. Present in V12_15 (offset 120) and V_ADL/V12_1_EP. -1 signals absent. */
|
|
292
374
|
entryPrice: bigint;
|
|
293
375
|
fundingIndex: bigint;
|
|
294
376
|
matcherProgram: PublicKey;
|
|
295
377
|
matcherContext: PublicKey;
|
|
296
378
|
owner: PublicKey;
|
|
297
379
|
feeCredits: bigint;
|
|
380
|
+
/** @deprecated Removed in v12.15. Always 0n on V12_15 slabs. */
|
|
298
381
|
lastFeeSlot: bigint;
|
|
382
|
+
/** Total fees earned over account lifetime (u128). Present from v12.15. 0n on older layouts. */
|
|
383
|
+
feesEarnedTotal: bigint;
|
|
384
|
+
/**
|
|
385
|
+
* Reserve cohorts array (v12.15+). Up to 62 cohorts of 64 bytes each.
|
|
386
|
+
* `null` on pre-v12.15 slabs. Parse the raw bytes according to the on-chain ReserveCohort struct.
|
|
387
|
+
*/
|
|
388
|
+
exactReserveCohorts: ReserveCohortBytes[] | null;
|
|
389
|
+
/** Number of active reserve cohorts (0-62). null on pre-v12.15 slabs. */
|
|
390
|
+
exactCohortCount: number | null;
|
|
391
|
+
/** Overflow (oldest) cohort raw bytes. null on pre-v12.15 slabs or when not present. */
|
|
392
|
+
overflowOlder: ReserveCohortBytes | null;
|
|
393
|
+
/** True if overflowOlder contains valid data. null on pre-v12.15 slabs. */
|
|
394
|
+
overflowOlderPresent: boolean | null;
|
|
395
|
+
/** Overflow (newest) cohort raw bytes. null on pre-v12.15 slabs or when not present. */
|
|
396
|
+
overflowNewest: ReserveCohortBytes | null;
|
|
397
|
+
/** True if overflowNewest contains valid data. null on pre-v12.15 slabs. */
|
|
398
|
+
overflowNewestPresent: boolean | null;
|
|
399
|
+
/** Per-account cumulative funding snapshot (i128). 0n on pre-v12.17 slabs. */
|
|
400
|
+
fSnap: bigint;
|
|
401
|
+
/** ADL A-basis snapshot (u128). 0n on pre-v12.17 slabs. */
|
|
402
|
+
adlABasis: bigint;
|
|
403
|
+
/** ADL K-coefficient snapshot (i128). 0n on pre-v12.17 slabs. */
|
|
404
|
+
adlKSnap: bigint;
|
|
405
|
+
/** ADL epoch snapshot (u64). 0n on pre-v12.17 slabs. */
|
|
406
|
+
adlEpochSnap: bigint;
|
|
407
|
+
/** True if the scheduled warmup bucket is active. null on pre-v12.17. */
|
|
408
|
+
schedPresent: boolean | null;
|
|
409
|
+
/** Remaining unreleased quantity in scheduled bucket. null on pre-v12.17. */
|
|
410
|
+
schedRemainingQ: bigint | null;
|
|
411
|
+
/** Anchor quantity for scheduled bucket. null on pre-v12.17. */
|
|
412
|
+
schedAnchorQ: bigint | null;
|
|
413
|
+
/** Start slot for scheduled bucket. null on pre-v12.17. */
|
|
414
|
+
schedStartSlot: bigint | null;
|
|
415
|
+
/** Warmup horizon for scheduled bucket. null on pre-v12.17. */
|
|
416
|
+
schedHorizon: bigint | null;
|
|
417
|
+
/** Release quantity for scheduled bucket. null on pre-v12.17. */
|
|
418
|
+
schedReleaseQ: bigint | null;
|
|
419
|
+
/** True if the pending warmup bucket is active. null on pre-v12.17. */
|
|
420
|
+
pendingPresent: boolean | null;
|
|
421
|
+
/** Remaining unreleased quantity in pending bucket. null on pre-v12.17. */
|
|
422
|
+
pendingRemainingQ: bigint | null;
|
|
423
|
+
/** Warmup horizon for pending bucket. null on pre-v12.17. */
|
|
424
|
+
pendingHorizon: bigint | null;
|
|
425
|
+
/** Creation slot for pending bucket. null on pre-v12.17. */
|
|
426
|
+
pendingCreatedSlot: bigint | null;
|
|
299
427
|
}
|
|
300
428
|
export declare function fetchSlab(connection: Connection, slabPubkey: PublicKey): Promise<Uint8Array>;
|
|
301
429
|
export declare const RAMP_START_BPS = 1000n;
|
|
@@ -307,14 +435,6 @@ export declare function readLastThrUpdateSlot(data: Uint8Array): bigint;
|
|
|
307
435
|
* Parse slab header (first 72 bytes — layout-independent).
|
|
308
436
|
*/
|
|
309
437
|
export declare function parseHeader(data: Uint8Array): SlabHeader;
|
|
310
|
-
/**
|
|
311
|
-
* Parse market config. Layout-version aware.
|
|
312
|
-
* For V0 slabs, fields beyond the basic config are read if present in the data,
|
|
313
|
-
* otherwise defaults are returned.
|
|
314
|
-
*
|
|
315
|
-
* @param data - Slab data (may be a partial slice for discovery; pass layoutHint in that case)
|
|
316
|
-
* @param layoutHint - Pre-detected layout to use; if omitted, detected from data.length.
|
|
317
|
-
*/
|
|
318
438
|
export declare function parseConfig(data: Uint8Array, layoutHint?: SlabLayout | null): MarketConfig;
|
|
319
439
|
/**
|
|
320
440
|
* Parse RiskParams from engine data. Layout-version aware.
|
package/dist/solana/stake.d.ts
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Program: percolator-stake (dcccrypto/percolator-stake)
|
|
6
6
|
* Deployed devnet: 6aJb1F9CDCVWCNYFwj8aQsVb696YnW6J1FznteHq4Q6k
|
|
7
|
-
* Deployed mainnet:
|
|
7
|
+
* Deployed mainnet: DC5fovFQD5SZYsetwvEqd4Wi4PFY1Yfnc669VMe6oa7F
|
|
8
8
|
*/
|
|
9
9
|
import { PublicKey } from '@solana/web3.js';
|
|
10
|
-
/** Known stake program addresses per network. */
|
|
10
|
+
/** Known stake program addresses per network. Mainnet is empty until deployed. */
|
|
11
11
|
export declare const STAKE_PROGRAM_IDS: {
|
|
12
12
|
readonly devnet: "6aJb1F9CDCVWCNYFwj8aQsVb696YnW6J1FznteHq4Q6k";
|
|
13
13
|
readonly mainnet: "DC5fovFQD5SZYsetwvEqd4Wi4PFY1Yfnc669VMe6oa7F";
|
|
@@ -38,12 +38,21 @@ export declare const STAKE_IX: {
|
|
|
38
38
|
readonly Withdraw: 2;
|
|
39
39
|
readonly FlushToInsurance: 3;
|
|
40
40
|
readonly UpdateConfig: 4;
|
|
41
|
+
/** @deprecated Removed on-chain in stake v3. This tag now rejects. */
|
|
41
42
|
readonly TransferAdmin: 5;
|
|
43
|
+
/** @deprecated Removed on-chain in stake v3. This tag now rejects. */
|
|
42
44
|
readonly AdminSetOracleAuthority: 6;
|
|
45
|
+
/** @deprecated Removed on-chain in stake v3. This tag now rejects. */
|
|
43
46
|
readonly AdminSetRiskThreshold: 7;
|
|
47
|
+
/** @deprecated Removed on-chain in stake v3. This tag now rejects. */
|
|
44
48
|
readonly AdminSetMaintenanceFee: 8;
|
|
49
|
+
/** @deprecated Removed on-chain in stake v3. This tag now rejects. */
|
|
45
50
|
readonly AdminResolveMarket: 9;
|
|
51
|
+
/** Current on-chain tag 10: transfer withdrawn insurance back into the pool vault. */
|
|
52
|
+
readonly ReturnInsurance: 10;
|
|
53
|
+
/** @deprecated Legacy alias for ReturnInsurance. */
|
|
46
54
|
readonly AdminWithdrawInsurance: 10;
|
|
55
|
+
/** @deprecated Removed on-chain in stake v3. This tag now rejects. */
|
|
47
56
|
readonly AdminSetInsurancePolicy: 11;
|
|
48
57
|
/** PERC-272: Accrue trading fees to LP vault */
|
|
49
58
|
readonly AccrueFees: 12;
|
|
@@ -55,6 +64,8 @@ export declare const STAKE_IX: {
|
|
|
55
64
|
readonly AdminSetTrancheConfig: 15;
|
|
56
65
|
/** PERC-303: Deposit into junior (first-loss) tranche */
|
|
57
66
|
readonly DepositJunior: 16;
|
|
67
|
+
/** Mark the pool as resolved after the wrapper market has been resolved directly. */
|
|
68
|
+
readonly SetMarketResolved: 18;
|
|
58
69
|
};
|
|
59
70
|
/** Derive the stake pool PDA for a given slab (market). */
|
|
60
71
|
export declare function deriveStakePool(slab: PublicKey, programId?: PublicKey): [PublicKey, number];
|
|
@@ -72,17 +83,19 @@ export declare function encodeStakeWithdraw(lpAmount: bigint | number): Uint8Arr
|
|
|
72
83
|
export declare function encodeStakeFlushToInsurance(amount: bigint | number): Uint8Array;
|
|
73
84
|
/** Tag 4: UpdateConfig — update cooldown and/or deposit cap. */
|
|
74
85
|
export declare function encodeStakeUpdateConfig(newCooldownSlots?: bigint | number, newDepositCap?: bigint | number): Uint8Array;
|
|
75
|
-
/**
|
|
86
|
+
/** @deprecated Removed on-chain in stake v3. Throws instead of emitting a dead instruction. */
|
|
76
87
|
export declare function encodeStakeTransferAdmin(): Uint8Array;
|
|
77
|
-
/**
|
|
88
|
+
/** @deprecated Removed on-chain in stake v3. Throws instead of emitting a dead instruction. */
|
|
78
89
|
export declare function encodeStakeAdminSetOracleAuthority(newAuthority: PublicKey): Uint8Array;
|
|
79
|
-
/**
|
|
90
|
+
/** @deprecated Removed on-chain in stake v3. Throws instead of emitting a dead instruction. */
|
|
80
91
|
export declare function encodeStakeAdminSetRiskThreshold(newThreshold: bigint | number): Uint8Array;
|
|
81
|
-
/**
|
|
92
|
+
/** @deprecated Removed on-chain in stake v3. Throws instead of emitting a dead instruction. */
|
|
82
93
|
export declare function encodeStakeAdminSetMaintenanceFee(newFee: bigint | number): Uint8Array;
|
|
83
|
-
/**
|
|
94
|
+
/** @deprecated Removed on-chain in stake v3. Throws instead of emitting a dead instruction. */
|
|
84
95
|
export declare function encodeStakeAdminResolveMarket(): Uint8Array;
|
|
85
|
-
/** Tag 10:
|
|
96
|
+
/** Tag 10: ReturnInsurance — transfer withdrawn insurance back into the stake pool vault. */
|
|
97
|
+
export declare function encodeStakeReturnInsurance(amount: bigint | number): Uint8Array;
|
|
98
|
+
/** @deprecated Legacy alias for tag 10. Current on-chain semantics are ReturnInsurance. */
|
|
86
99
|
export declare function encodeStakeAdminWithdrawInsurance(amount: bigint | number): Uint8Array;
|
|
87
100
|
/** Tag 12: AccrueFees — permissionless: accrue trading fees to LP vault. */
|
|
88
101
|
export declare function encodeStakeAccrueFees(): Uint8Array;
|
|
@@ -94,7 +107,9 @@ export declare function encodeStakeAdminSetHwmConfig(enabled: boolean, hwmFloorB
|
|
|
94
107
|
export declare function encodeStakeAdminSetTrancheConfig(juniorFeeMultBps: number): Uint8Array;
|
|
95
108
|
/** Tag 16 (PERC-303): DepositJunior — deposit into first-loss junior tranche. */
|
|
96
109
|
export declare function encodeStakeDepositJunior(amount: bigint | number): Uint8Array;
|
|
97
|
-
/** Tag
|
|
110
|
+
/** Tag 18: SetMarketResolved — blocks new deposits after the wrapper market is resolved. */
|
|
111
|
+
export declare function encodeStakeSetMarketResolved(): Uint8Array;
|
|
112
|
+
/** @deprecated Removed on-chain in stake v3. Throws instead of emitting a dead instruction. */
|
|
98
113
|
export declare function encodeStakeAdminSetInsurancePolicy(authority: PublicKey, minWithdrawBase: bigint | number, maxWithdrawBps: number, cooldownSlots: bigint | number): Uint8Array;
|
|
99
114
|
/**
|
|
100
115
|
* Decoded StakePool state (352 bytes on-chain).
|
|
@@ -105,6 +120,7 @@ export interface StakePoolState {
|
|
|
105
120
|
bump: number;
|
|
106
121
|
vaultAuthorityBump: number;
|
|
107
122
|
adminTransferred: boolean;
|
|
123
|
+
marketResolved: boolean;
|
|
108
124
|
slab: PublicKey;
|
|
109
125
|
admin: PublicKey;
|
|
110
126
|
collateralMint: PublicKey;
|
|
@@ -125,6 +141,7 @@ export interface StakePoolState {
|
|
|
125
141
|
hwmEnabled: boolean;
|
|
126
142
|
epochHighWaterTvl: bigint;
|
|
127
143
|
hwmFloorBps: number;
|
|
144
|
+
hwmLastEpoch: bigint;
|
|
128
145
|
trancheEnabled: boolean;
|
|
129
146
|
juniorBalance: bigint;
|
|
130
147
|
juniorTotalLp: bigint;
|
|
@@ -136,6 +153,31 @@ export declare const STAKE_POOL_SIZE = 352;
|
|
|
136
153
|
* Decode a StakePool account from raw data buffer. * Uses DataView for all u64/u16 reads — browser-safe.
|
|
137
154
|
*/
|
|
138
155
|
export declare function decodeStakePool(data: Uint8Array): StakePoolState;
|
|
156
|
+
/** Size of StakeDeposit on-chain (bytes). */
|
|
157
|
+
export declare const STAKE_DEPOSIT_SIZE = 152;
|
|
158
|
+
/** Decoded StakeDeposit PDA state. */
|
|
159
|
+
export interface StakeDepositState {
|
|
160
|
+
isInitialized: boolean;
|
|
161
|
+
bump: number;
|
|
162
|
+
pool: PublicKey;
|
|
163
|
+
user: PublicKey;
|
|
164
|
+
lastDepositSlot: bigint;
|
|
165
|
+
lpAmount: bigint;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Decode a StakeDeposit PDA account from raw data.
|
|
169
|
+
*
|
|
170
|
+
* On-chain layout (152 bytes, percolator-stake/src/state.rs):
|
|
171
|
+
* [0] is_initialized u8
|
|
172
|
+
* [1] bump u8
|
|
173
|
+
* [2..8] _padding
|
|
174
|
+
* [8..40] pool [u8; 32]
|
|
175
|
+
* [40..72] user [u8; 32]
|
|
176
|
+
* [72..80] last_deposit_slot u64
|
|
177
|
+
* [80..88] lp_amount u64
|
|
178
|
+
* [88..152] _reserved
|
|
179
|
+
*/
|
|
180
|
+
export declare function decodeDepositPda(data: Uint8Array): StakeDepositState;
|
|
139
181
|
export interface StakeAccounts {
|
|
140
182
|
/** InitPool accounts */
|
|
141
183
|
initPool: {
|