@percolatorct/sdk 1.0.0-beta.20 → 1.0.0-beta.21
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/abi/accounts.d.ts +22 -1
- package/dist/abi/errors.d.ts +0 -11
- package/dist/abi/instructions.d.ts +36 -28
- package/dist/index.js +329 -351
- 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/oracle.d.ts +2 -10
- package/dist/solana/pda.d.ts +5 -0
- package/dist/solana/slab.d.ts +13 -8
- package/dist/solana/stake.d.ts +2 -2
- package/dist/validation.d.ts +1 -26
- package/package.json +1 -1
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
|
*
|
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,6 +4,11 @@ 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.
|
|
9
|
+
* Seeds: ["ins_lp", slab_key]
|
|
10
|
+
*/
|
|
11
|
+
export declare function deriveInsuranceLpMint(programId: PublicKey, slab: PublicKey): [PublicKey, number];
|
|
7
12
|
/**
|
|
8
13
|
* Derive LP PDA for TradeCpi.
|
|
9
14
|
* Seeds: ["lp", slab_key, lp_idx as u16 LE]
|
package/dist/solana/slab.d.ts
CHANGED
|
@@ -145,7 +145,7 @@ export declare const SLAB_TIERS_V12_15: Record<string, {
|
|
|
145
145
|
/**
|
|
146
146
|
* Detect the slab layout version from the raw account data length.
|
|
147
147
|
* Returns the full SlabLayout descriptor, or null if the size is unrecognised.
|
|
148
|
-
* Checks V12_15, V12_1, V_SETDEXPOOL, V1M2, V_ADL, V1M, V0, V1D, V1D-legacy, V1, and V1-legacy sizes.
|
|
148
|
+
* Checks V12_15, V12_1_EP, V12_1, V_SETDEXPOOL, V1M2, V_ADL, V1M, V0, V1D, V1D-legacy, V1, and V1-legacy sizes.
|
|
149
149
|
*
|
|
150
150
|
* When `data` is provided and the size matches V1D, the version field at offset 8 is read
|
|
151
151
|
* to disambiguate V2 slabs (which produce identical sizes to V1D with postBitmap=2).
|
|
@@ -258,6 +258,14 @@ export interface RiskParams {
|
|
|
258
258
|
liquidationFeeCap: bigint;
|
|
259
259
|
liquidationBufferBps: bigint;
|
|
260
260
|
minLiquidationAbs: bigint;
|
|
261
|
+
/** Minimum initial deposit to open an account (V12_1+ only) */
|
|
262
|
+
minInitialDeposit: bigint;
|
|
263
|
+
/** Minimum nonzero maintenance margin requirement (V12_1+ only) */
|
|
264
|
+
minNonzeroMmReq: bigint;
|
|
265
|
+
/** Minimum nonzero initial margin requirement (V12_1+ only) */
|
|
266
|
+
minNonzeroImReq: bigint;
|
|
267
|
+
/** Insurance fund floor (V12_1+ only) */
|
|
268
|
+
insuranceFloor: bigint;
|
|
261
269
|
/** Minimum horizon slots (v12.15+). Replaces warmupPeriodSlots. 0n on pre-v12.15 slabs. */
|
|
262
270
|
hMin: bigint;
|
|
263
271
|
/** Maximum horizon slots (v12.15+). 0n on pre-v12.15 slabs. */
|
|
@@ -272,17 +280,15 @@ export interface EngineState {
|
|
|
272
280
|
/**
|
|
273
281
|
* Funding rate per slot. On pre-v12.15 slabs: i64 in BPS units.
|
|
274
282
|
* On v12.15+ slabs: i128 in e9 units (field renamed `funding_rate_e9` on-chain).
|
|
275
|
-
* Use `fundingRateE9` for v12.15-aware code.
|
|
276
283
|
*/
|
|
277
284
|
fundingRateBpsPerSlotLast: bigint;
|
|
278
285
|
/**
|
|
279
286
|
* Funding rate in e9 units (i128). v12.15+ only.
|
|
280
|
-
* 0n on pre-v12.15 slabs
|
|
287
|
+
* 0n on pre-v12.15 slabs.
|
|
281
288
|
*/
|
|
282
289
|
fundingRateE9: bigint;
|
|
283
290
|
/**
|
|
284
|
-
* Market mode. v12.15+ only.
|
|
285
|
-
* 0 = Live, 1 = Resolved. null on pre-v12.15 slabs.
|
|
291
|
+
* Market mode. v12.15+ only. 0 = Live, 1 = Resolved. null on pre-v12.15 slabs.
|
|
286
292
|
*/
|
|
287
293
|
marketMode: 0 | 1 | null;
|
|
288
294
|
lastCrankSlot: bigint;
|
|
@@ -293,8 +299,7 @@ export interface EngineState {
|
|
|
293
299
|
cTot: bigint;
|
|
294
300
|
pnlPosTot: bigint;
|
|
295
301
|
/**
|
|
296
|
-
* Matured (settled) positive PnL total (u128). v12.15+ only.
|
|
297
|
-
* 0n on pre-v12.15 slabs.
|
|
302
|
+
* Matured (settled) positive PnL total (u128). v12.15+ only. 0n on pre-v12.15 slabs.
|
|
298
303
|
*/
|
|
299
304
|
pnlMaturedPosTot: bigint;
|
|
300
305
|
liqCursor: number;
|
|
@@ -349,7 +354,7 @@ export interface Account {
|
|
|
349
354
|
* `null` on pre-v12.15 slabs. Parse the raw bytes according to the on-chain ReserveCohort struct.
|
|
350
355
|
*/
|
|
351
356
|
exactReserveCohorts: ReserveCohortBytes[] | null;
|
|
352
|
-
/** Number of active reserve cohorts (0
|
|
357
|
+
/** Number of active reserve cohorts (0-62). null on pre-v12.15 slabs. */
|
|
353
358
|
exactCohortCount: number | null;
|
|
354
359
|
/** Overflow (oldest) cohort raw bytes. null on pre-v12.15 slabs or when not present. */
|
|
355
360
|
overflowOlder: ReserveCohortBytes | null;
|
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";
|
package/dist/validation.d.ts
CHANGED
|
@@ -9,34 +9,14 @@ export declare class ValidationError extends Error {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Validate a public key string.
|
|
12
|
-
*
|
|
13
|
-
* @param value - Base58-encoded public key string.
|
|
14
|
-
* @param field - Field name for error messages.
|
|
15
|
-
* @returns Parsed `PublicKey` instance.
|
|
16
|
-
* @throws {@link ValidationError} if the string is not a valid base58 public key.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* const key = validatePublicKey("11111111111111111111111111111111", "slab");
|
|
21
|
-
* ```
|
|
22
12
|
*/
|
|
23
13
|
export declare function validatePublicKey(value: string, field: string): PublicKey;
|
|
24
14
|
/**
|
|
25
15
|
* Validate a non-negative integer index (u16 range for accounts).
|
|
26
|
-
*
|
|
27
|
-
* @param value - Decimal string representing the index.
|
|
28
|
-
* @param field - Field name for error messages.
|
|
29
|
-
* @returns Parsed integer in `[0, 65535]`.
|
|
30
|
-
* @throws {@link ValidationError} if the value is not a valid u16 integer.
|
|
31
16
|
*/
|
|
32
17
|
export declare function validateIndex(value: string, field: string): number;
|
|
33
18
|
/**
|
|
34
19
|
* Validate a non-negative amount (u64 range).
|
|
35
|
-
*
|
|
36
|
-
* @param value - Decimal string representing the amount.
|
|
37
|
-
* @param field - Field name for error messages.
|
|
38
|
-
* @returns Parsed `bigint` in `[0, 2^64 - 1]`.
|
|
39
|
-
* @throws {@link ValidationError} if the value is negative or exceeds u64 max.
|
|
40
20
|
*/
|
|
41
21
|
export declare function validateAmount(value: string, field: string): bigint;
|
|
42
22
|
/**
|
|
@@ -52,12 +32,7 @@ export declare function validateI64(value: string, field: string): bigint;
|
|
|
52
32
|
*/
|
|
53
33
|
export declare function validateI128(value: string, field: string): bigint;
|
|
54
34
|
/**
|
|
55
|
-
* Validate a basis points value (0
|
|
56
|
-
*
|
|
57
|
-
* @param value - Decimal string representing basis points.
|
|
58
|
-
* @param field - Field name for error messages.
|
|
59
|
-
* @returns Parsed integer in `[0, 10000]`.
|
|
60
|
-
* @throws {@link ValidationError} if the value exceeds 10000.
|
|
35
|
+
* Validate a basis points value (0-10000).
|
|
61
36
|
*/
|
|
62
37
|
export declare function validateBps(value: string, field: string): number;
|
|
63
38
|
/**
|