@vercora-protocol/sdk 0.5.0 → 0.6.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/CHANGELOG.md CHANGED
@@ -5,6 +5,23 @@ All notable changes to `@vercora-protocol/sdk` are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
7
 
8
+ ## [0.6.0](https://github.com/vercora/vercora-anchor/compare/v0.5.2...v0.6.0) (2026-05-05)
9
+
10
+
11
+ ### Features
12
+
13
+ * **all:** improve market load ([d40fe8f](https://github.com/vercora/vercora-anchor/commit/d40fe8f6e4aeecdb2d034753c03e5ea9bd6768b3))
14
+
15
+ ### [0.5.2](https://github.com/vercora/vercora-anchor/compare/v0.5.1...v0.5.2) (2026-05-05)
16
+
17
+ ### [0.5.1](https://github.com/vercora/vercora-anchor/compare/v0.5.0...v0.5.1) (2026-05-05)
18
+
19
+
20
+ ### Features
21
+
22
+ * **all:** add platform creator allowlist ([39d5c7f](https://github.com/vercora/vercora-anchor/commit/39d5c7f2fdb6753523ed3a7207fc11fa7fb2715c))
23
+ * **web:** add platform creator allowlist ui ([f4a067f](https://github.com/vercora/vercora-anchor/commit/f4a067f18e7e8947b493e210bea278e85411e18f))
24
+
8
25
  ## [0.5.0](https://github.com/vercora/vercora-anchor/compare/v0.4.2...v0.5.0) (2026-05-01)
9
26
 
10
27
 
package/dist/client.d.ts CHANGED
@@ -1,12 +1,31 @@
1
1
  import * as anchor from '@coral-xyz/anchor';
2
2
  import { Program, BN } from '@coral-xyz/anchor';
3
- import { Connection, PublicKey } from '@solana/web3.js';
3
+ import { Connection, PublicKey, type TransactionInstruction } from '@solana/web3.js';
4
4
  import type { Vercora } from './generated/vercora';
5
- import type { CreateMarketParams, InitializeParimutuelStateParams, ParimutuelStakeParams, ParimutuelWithdrawParams, ParimutuelClaimParams, InitializeConfigParams, UpdateConfigParams, InitializeMarketResolverSlotsParams, InitializeMarketOutcomeSlotsParams, MintCompleteSetParams, RedeemCompleteSetParams, VoteResolutionParams, FinalizeResolutionParams, RevokeResolutionVoteParams, RedeemWinningParams, CloseMarketEarlyParams, VoidMarketParams, ClaimVoidedParimutuelSurplusParams, AbandonMarketParams, GlobalConfigAccount, MarketAccount, ResolverAccount, UpsertUserProfileParams, VerifyUserProfileParams, UserProfileAccount, UpsertPlatformProfileParams, VerifyPlatformProfileParams, PlatformProfileAccount, ParimutuelStateAccount, ParimutuelPositionAccount, ParimutuelOdds, MarketCategoryAccount, CreateMarketCategoryParams, UpdateMarketCategoryParams, RegisterPlatformParams, UpdateParimutuelStateParams, ResolutionVoteAccount, ResolutionStateAccount, ListedMarket, GetUsersMarketsFilters, VoidedParimutuelSurplusCandidate } from './types';
5
+ import type { CreateMarketParams, InitializeParimutuelStateParams, ParimutuelStakeParams, ParimutuelWithdrawParams, ParimutuelClaimParams, InitializeConfigParams, UpdateConfigParams, InitializeMarketResolverSlotsParams, InitializeMarketOutcomeSlotsParams, MintCompleteSetParams, RedeemCompleteSetParams, VoteResolutionParams, FinalizeResolutionParams, RevokeResolutionVoteParams, RedeemWinningParams, CloseMarketEarlyParams, VoidMarketParams, ClaimVoidedParimutuelSurplusParams, AbandonMarketParams, GlobalConfigAccount, MarketAccount, ResolverAccount, UpsertUserProfileParams, VerifyUserProfileParams, UserProfileAccount, UpsertPlatformProfileParams, VerifyPlatformProfileParams, PlatformProfileAccount, ParimutuelStateAccount, ParimutuelPositionAccount, ParimutuelOdds, MarketCategoryAccount, CreateMarketCategoryParams, UpdateMarketCategoryParams, RegisterPlatformParams, UpdatePlatformCreatorPolicyParams, LinkPlatformCreatorParams, UnlinkPlatformCreatorParams, UpdateParimutuelStateParams, ResolutionVoteAccount, ResolutionStateAccount, ListedMarket, GetUsersMarketsFilters, VoidedParimutuelSurplusCandidate, ParimutuelStakePrefetched, ParimutuelStakeSendOptions } from './types';
6
6
  export declare class PredictionMarketClient {
7
7
  readonly program: Program<Vercora>;
8
8
  readonly connection: Connection;
9
9
  readonly globalConfig: PublicKey;
10
+ /** Coalesce concurrent reads and avoid identical back-to-back RPCs (rate-limit friendly). */
11
+ private globalConfigCache;
12
+ private globalConfigInflight;
13
+ /**
14
+ * Global config changes only on admin transactions (very rare). 5-minute TTL is safe and
15
+ * eliminates almost all duplicate fetches across prefetch → confirm-stake flows.
16
+ */
17
+ private static readonly FETCH_GLOBAL_CONFIG_TTL_MS;
18
+ private marketFetchCache;
19
+ private marketFetchInflight;
20
+ /**
21
+ * Market account changes on every stake / resolution, but reading slightly stale data for
22
+ * display is fine. Write paths always receive fresh data via `bypassCache` after mutations.
23
+ * 2 minutes balances freshness with RPC load.
24
+ */
25
+ private static readonly FETCH_MARKET_TTL_MS;
26
+ /** Mint → normalized collateral program (immutable on-chain); coalesce duplicates. */
27
+ private mintProgramDedupCache;
28
+ private mintProgramInflight;
10
29
  constructor(program: Program<Vercora>);
11
30
  private get walletKey();
12
31
  /**
@@ -19,7 +38,10 @@ export declare class PredictionMarketClient {
19
38
  * Chunks run **sequentially** so we do not burst the RPC (reduces 429s on free tiers).
20
39
  */
21
40
  private getMultipleAccountsInfoBatched;
41
+ private static rpcTrace;
22
42
  private collateralTokenProgramForMint;
43
+ /** Used by `parimutuelStake` / `parimutuelStakeInstruction` to avoid redundant reads when prefetch is supplied. */
44
+ private loadParimutuelStakeDeps;
23
45
  /** Platform treasury wallet ATA for `collateralMint`, created by payer if missing (e.g. before pari init). */
24
46
  private treasuryCollateralAtaCreateIfMissingInstructions;
25
47
  /** Create collateral ATA for `owner` if it does not exist yet (bundled with `createMarket`). */
@@ -55,6 +77,12 @@ export declare class PredictionMarketClient {
55
77
  platformId: BN;
56
78
  sig: string;
57
79
  }>;
80
+ /** Set per-platform creator allowlist cap (`0` = open). Signer: global config authority or platform `profile_authority`. */
81
+ updatePlatformCreatorPolicy(params: UpdatePlatformCreatorPolicyParams, opts?: anchor.web3.ConfirmOptions): Promise<string>;
82
+ /** Link a wallet so it may `create_market` when the platform cap is `> 0`. Signer: global config authority or platform `profile_authority`. */
83
+ linkPlatformCreator(params: LinkPlatformCreatorParams, opts?: anchor.web3.ConfirmOptions): Promise<string>;
84
+ /** Remove a linked creator wallet. Signer: global config authority or platform `profile_authority`. */
85
+ unlinkPlatformCreator(params: UnlinkPlatformCreatorParams, opts?: anchor.web3.ConfirmOptions): Promise<string>;
58
86
  /**
59
87
  * Step 1 — Create Market + Vault.
60
88
  * Returns the market PDA and the transaction signature.
@@ -99,7 +127,14 @@ export declare class PredictionMarketClient {
99
127
  * To change only one knob, pass current values from `fetchMarket` / `fetchParimutuelState` for the rest.
100
128
  */
101
129
  updateParimutuelState(marketPda: PublicKey, params: UpdateParimutuelStateParams, opts?: anchor.web3.ConfirmOptions): Promise<string>;
102
- parimutuelStake(marketPda: PublicKey, params: ParimutuelStakeParams, opts?: anchor.web3.ConfirmOptions): Promise<string>;
130
+ parimutuelStake(marketPda: PublicKey, params: ParimutuelStakeParams, opts?: ParimutuelStakeSendOptions): Promise<string>;
131
+ /**
132
+ * Build the `parimutuelStake` instruction for composing with other ixs (e.g. SOL rent transfers).
133
+ * Pass `prefetched` when chain data was already loaded to avoid redundant RPC reads.
134
+ */
135
+ parimutuelStakeInstruction(marketPda: PublicKey, params: ParimutuelStakeParams, opts?: {
136
+ prefetched?: ParimutuelStakePrefetched;
137
+ }): Promise<TransactionInstruction>;
103
138
  /**
104
139
  * Reduce stake before `close_at` / resolution (early exit), **or** after `voidMarket` on a pari market.
105
140
  *
@@ -202,8 +237,17 @@ export declare class PredictionMarketClient {
202
237
  * On success the market and vault accounts are closed and lamports returned to creator.
203
238
  */
204
239
  abandonMarket(marketPda: PublicKey, params: AbandonMarketParams, opts?: anchor.web3.ConfirmOptions): Promise<string>;
205
- fetchGlobalConfig(): Promise<GlobalConfigAccount>;
206
- fetchMarket(market: PublicKey): Promise<MarketAccount>;
240
+ /**
241
+ * Read global config once per TTL or coalesce concurrent callers.
242
+ * Pass `{ bypassCache: true }` after config-changing txs if you must observe the latest slot immediately.
243
+ */
244
+ fetchGlobalConfig(opts?: {
245
+ bypassCache?: boolean;
246
+ }): Promise<GlobalConfigAccount>;
247
+ /** Same TTL + concurrent coalescing pattern as {@link fetchGlobalConfig}. */
248
+ fetchMarket(market: PublicKey, opts?: {
249
+ bypassCache?: boolean;
250
+ }): Promise<MarketAccount>;
207
251
  private bnFieldToListedString;
208
252
  /**
209
253
  * Map raw `Market` account rows to {@link ListedMarket} (including outcome labels).
@@ -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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"}
package/dist/client.js CHANGED
@@ -41,6 +41,7 @@ const spl_token_1 = require("@solana/spl-token");
41
41
  const pda_1 = require("./pda");
42
42
  const resolverDecode_1 = require("./resolverDecode");
43
43
  const types_1 = require("./types");
44
+ const collateralProgram_1 = require("./collateralProgram");
44
45
  /**
45
46
  * Some RPC plans (e.g. QuickNode Discover) reject `getMultipleAccounts` with more than 5 keys.
46
47
  * Chunk so batched reads stay compatible.
@@ -106,6 +107,14 @@ function readParimutuelActiveStakeU64Le(data) {
106
107
  }
107
108
  class PredictionMarketClient {
108
109
  constructor(program) {
110
+ /** Coalesce concurrent reads and avoid identical back-to-back RPCs (rate-limit friendly). */
111
+ this.globalConfigCache = null;
112
+ this.globalConfigInflight = null;
113
+ this.marketFetchCache = new Map();
114
+ this.marketFetchInflight = new Map();
115
+ /** Mint → normalized collateral program (immutable on-chain); coalesce duplicates. */
116
+ this.mintProgramDedupCache = new Map();
117
+ this.mintProgramInflight = new Map();
109
118
  this.program = program;
110
119
  this.connection = program.provider.connection;
111
120
  this.globalConfig = (0, pda_1.deriveGlobalConfig)(program.programId);
@@ -157,13 +166,51 @@ class PredictionMarketClient {
157
166
  }
158
167
  return out;
159
168
  }
169
+ static rpcTrace(depth = 4) {
170
+ return (new Error().stack ?? '').split('\n').slice(2, 2 + depth).map((l) => l.trim()).join(' → ');
171
+ }
160
172
  async collateralTokenProgramForMint(mint) {
161
- const info = await this.connection.getAccountInfo(mint);
162
- if (!info)
163
- throw new Error(`Mint not found: ${mint.toBase58()}`);
164
- return info.owner.equals(spl_token_1.TOKEN_2022_PROGRAM_ID)
165
- ? spl_token_1.TOKEN_2022_PROGRAM_ID
166
- : spl_token_1.TOKEN_PROGRAM_ID;
173
+ const k = mint.toBase58();
174
+ const memo = this.mintProgramDedupCache.get(k);
175
+ if (memo) {
176
+ console.debug('[vercora-rpc] sdk.mintProgram cache-hit mint=%s', k.slice(0, 8));
177
+ return memo;
178
+ }
179
+ let flight = this.mintProgramInflight.get(k);
180
+ if (!flight) {
181
+ console.debug('[vercora-rpc] sdk.mintProgram RPC-fire mint=%s CALLER: %s', k.slice(0, 8), PredictionMarketClient.rpcTrace());
182
+ flight = (async () => {
183
+ const info = await this.connection.getAccountInfo(mint);
184
+ if (!info)
185
+ throw new Error(`Mint not found: ${mint.toBase58()}`);
186
+ const norm = (0, collateralProgram_1.normalizeCollateralTokenProgram)(info.owner);
187
+ this.mintProgramDedupCache.set(k, norm);
188
+ return norm;
189
+ })().finally(() => {
190
+ this.mintProgramInflight.delete(k);
191
+ });
192
+ this.mintProgramInflight.set(k, flight);
193
+ }
194
+ else {
195
+ console.debug('[vercora-rpc] sdk.mintProgram coalesced-inflight mint=%s', k.slice(0, 8));
196
+ }
197
+ return flight;
198
+ }
199
+ /** Used by `parimutuelStake` / `parimutuelStakeInstruction` to avoid redundant reads when prefetch is supplied. */
200
+ async loadParimutuelStakeDeps(marketPda, prefetched) {
201
+ if (prefetched) {
202
+ return {
203
+ market: prefetched.market,
204
+ globalConfig: prefetched.globalConfig,
205
+ collateralTokenProgram: prefetched.collateralTokenProgram,
206
+ };
207
+ }
208
+ const [market, globalConfig] = await Promise.all([
209
+ this.fetchMarket(marketPda),
210
+ this.fetchGlobalConfig(),
211
+ ]);
212
+ const collateralTokenProgram = await this.collateralTokenProgramForMint(market.collateralMint);
213
+ return { market, globalConfig, collateralTokenProgram };
167
214
  }
168
215
  /** Platform treasury wallet ATA for `collateralMint`, created by payer if missing (e.g. before pari init). */
169
216
  async treasuryCollateralAtaCreateIfMissingInstructions(collateralMint) {
@@ -300,6 +347,49 @@ class PredictionMarketClient {
300
347
  .rpc(opts ?? { skipPreflight: true });
301
348
  return { platformId: nextPid, sig };
302
349
  }
350
+ /** Set per-platform creator allowlist cap (`0` = open). Signer: global config authority or platform `profile_authority`. */
351
+ async updatePlatformCreatorPolicy(params, opts) {
352
+ const pid = (0, pda_1.bnLike)(params.platformId);
353
+ return this.program.methods
354
+ .updatePlatformCreatorPolicy((0, pda_1.bnToU32)(pid), params.maxAllowedCreators)
355
+ .accounts({
356
+ globalConfig: this.globalConfig,
357
+ platformRegistry: (0, pda_1.derivePlatformRegistry)(this.program.programId, pid),
358
+ authority: this.walletKey,
359
+ })
360
+ .rpc(opts ?? { skipPreflight: true });
361
+ }
362
+ /** Link a wallet so it may `create_market` when the platform cap is `> 0`. Signer: global config authority or platform `profile_authority`. */
363
+ async linkPlatformCreator(params, opts) {
364
+ const pid = (0, pda_1.bnLike)(params.platformId);
365
+ const platformRegistry = (0, pda_1.derivePlatformRegistry)(this.program.programId, pid);
366
+ const platformCreator = (0, pda_1.derivePlatformCreator)(this.program.programId, pid, params.wallet);
367
+ return this.program.methods
368
+ .linkPlatformCreator((0, pda_1.bnToU32)(pid), params.wallet)
369
+ .accounts({
370
+ globalConfig: this.globalConfig,
371
+ platformRegistry,
372
+ platformCreator,
373
+ authority: this.walletKey,
374
+ systemProgram: web3_js_1.SystemProgram.programId,
375
+ })
376
+ .rpc(opts ?? { skipPreflight: true });
377
+ }
378
+ /** Remove a linked creator wallet. Signer: global config authority or platform `profile_authority`. */
379
+ async unlinkPlatformCreator(params, opts) {
380
+ const pid = (0, pda_1.bnLike)(params.platformId);
381
+ const platformRegistry = (0, pda_1.derivePlatformRegistry)(this.program.programId, pid);
382
+ const platformCreator = (0, pda_1.derivePlatformCreator)(this.program.programId, pid, params.wallet);
383
+ return this.program.methods
384
+ .unlinkPlatformCreator((0, pda_1.bnToU32)(pid))
385
+ .accounts({
386
+ globalConfig: this.globalConfig,
387
+ platformRegistry,
388
+ platformCreator,
389
+ authority: this.walletKey,
390
+ })
391
+ .rpc(opts ?? { skipPreflight: true });
392
+ }
303
393
  // ─── Market creation (3 steps) ──────────────────────────────────────────────
304
394
  /**
305
395
  * Step 1 — Create Market + Vault.
@@ -333,6 +423,25 @@ class PredictionMarketClient {
333
423
  const marketCategoryPk = !categoryIdBn.isZero()
334
424
  ? (0, pda_1.deriveMarketCategory)(this.program.programId, platformIdBn, categoryIdBn)
335
425
  : null;
426
+ const conn = this.program.provider.connection;
427
+ const regInfo = await conn.getAccountInfo(platformRegistryPk);
428
+ if (!regInfo?.data) {
429
+ throw new Error('Platform registry not found for this platformId');
430
+ }
431
+ const maxCreators = (0, pda_1.maxAllowedCreatorsFromRegistryAccountData)(regInfo.data);
432
+ const linkedCreators = (0, pda_1.linkedCreatorCountFromRegistryAccountData)(regInfo.data);
433
+ let platformCreatorPk = null;
434
+ if (maxCreators > 0) {
435
+ if (linkedCreators === 0) {
436
+ throw new Error('No creators linked for this platform yet (on-chain: PlatformHasNoLinkedCreators)');
437
+ }
438
+ const creatorPda = (0, pda_1.derivePlatformCreator)(this.program.programId, platformIdBn, creator);
439
+ const pcInfo = await conn.getAccountInfo(creatorPda);
440
+ if (!pcInfo?.data || pcInfo.data.length < 8) {
441
+ throw new Error('Creator wallet is not allowlisted for this platform (on-chain: CreatorNotAllowlisted)');
442
+ }
443
+ platformCreatorPk = creatorPda;
444
+ }
336
445
  const maxOi = params.maxOutcomeInvestment ?? new anchor_1.BN(0);
337
446
  const maxWi = params.maxWalletOutcomeInvestment ?? new anchor_1.BN(0);
338
447
  if (params.marketType === 'parimutuel' &&
@@ -371,6 +480,7 @@ class PredictionMarketClient {
371
480
  platformRegistry: platformRegistryPk,
372
481
  platformProfile: platformProfilePk,
373
482
  marketCategory: marketCategoryPk,
483
+ platformCreator: platformCreatorPk,
374
484
  collateralTokenProgram,
375
485
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
376
486
  systemProgram: web3_js_1.SystemProgram.programId,
@@ -575,15 +685,16 @@ class PredictionMarketClient {
575
685
  .rpc(opts ?? { skipPreflight: true });
576
686
  }
577
687
  async parimutuelStake(marketPda, params, opts) {
688
+ const raw = opts ?? {};
689
+ const { prefetched, ...confirmOpts } = raw;
690
+ const { market, globalConfig, collateralTokenProgram } = await this.loadParimutuelStakeDeps(marketPda, prefetched);
578
691
  const parimutuelState = (0, pda_1.deriveParimutuelState)(this.program.programId, marketPda);
579
- const market = await this.fetchMarket(marketPda);
580
- const globalConfig = await this.fetchGlobalConfig();
581
- const collateralTokenProgram = await this.collateralTokenProgramForMint(market.collateralMint);
582
692
  const position = (0, pda_1.deriveParimutuelPosition)(this.program.programId, marketPda, this.walletKey, params.outcomeIndex);
583
693
  const vaultPda = (0, pda_1.deriveVault)(this.program.programId, marketPda);
584
694
  const allowedMint = (0, pda_1.deriveAllowedMint)(this.program.programId, market.collateralMint);
585
695
  const userCollateral = (0, spl_token_1.getAssociatedTokenAddressSync)(market.collateralMint, this.walletKey, false, collateralTokenProgram, spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID);
586
696
  const platformTreasuryAta = (0, spl_token_1.getAssociatedTokenAddressSync)(market.collateralMint, globalConfig.platformTreasury, false, collateralTokenProgram, spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID);
697
+ const rpcOpts = Object.keys(confirmOpts).length > 0 ? confirmOpts : { skipPreflight: true };
587
698
  return this.program.methods
588
699
  .parimutuelStake({
589
700
  marketId: params.marketId,
@@ -607,7 +718,44 @@ class PredictionMarketClient {
607
718
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
608
719
  systemProgram: web3_js_1.SystemProgram.programId,
609
720
  })
610
- .rpc(opts ?? { skipPreflight: true });
721
+ .rpc(rpcOpts);
722
+ }
723
+ /**
724
+ * Build the `parimutuelStake` instruction for composing with other ixs (e.g. SOL rent transfers).
725
+ * Pass `prefetched` when chain data was already loaded to avoid redundant RPC reads.
726
+ */
727
+ async parimutuelStakeInstruction(marketPda, params, opts) {
728
+ const { market, globalConfig, collateralTokenProgram } = await this.loadParimutuelStakeDeps(marketPda, opts?.prefetched);
729
+ const parimutuelState = (0, pda_1.deriveParimutuelState)(this.program.programId, marketPda);
730
+ const position = (0, pda_1.deriveParimutuelPosition)(this.program.programId, marketPda, this.walletKey, params.outcomeIndex);
731
+ const vaultPda = (0, pda_1.deriveVault)(this.program.programId, marketPda);
732
+ const allowedMint = (0, pda_1.deriveAllowedMint)(this.program.programId, market.collateralMint);
733
+ const userCollateral = (0, spl_token_1.getAssociatedTokenAddressSync)(market.collateralMint, this.walletKey, false, collateralTokenProgram, spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID);
734
+ const platformTreasuryAta = (0, spl_token_1.getAssociatedTokenAddressSync)(market.collateralMint, globalConfig.platformTreasury, false, collateralTokenProgram, spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID);
735
+ return this.program.methods
736
+ .parimutuelStake({
737
+ marketId: params.marketId,
738
+ outcomeIndex: params.outcomeIndex,
739
+ amount: params.amount,
740
+ })
741
+ .accounts({
742
+ user: this.walletKey,
743
+ market: marketPda,
744
+ parimutuelState,
745
+ position,
746
+ vault: vaultPda,
747
+ collateralMint: market.collateralMint,
748
+ userCollateralAccount: userCollateral,
749
+ creatorFeeAccount: market.creatorFeeAccount,
750
+ globalConfig: this.globalConfig,
751
+ platformTreasuryWallet: globalConfig.platformTreasury,
752
+ platformTreasuryAta,
753
+ allowedMint,
754
+ collateralTokenProgram,
755
+ tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
756
+ systemProgram: web3_js_1.SystemProgram.programId,
757
+ })
758
+ .instruction();
611
759
  }
612
760
  /**
613
761
  * Reduce stake before `close_at` / resolution (early exit), **or** after `voidMarket` on a pari market.
@@ -1115,11 +1263,71 @@ class PredictionMarketClient {
1115
1263
  .rpc(opts ?? { skipPreflight: true });
1116
1264
  }
1117
1265
  // ─── State readers ───────────────────────────────────────────────────────────
1118
- async fetchGlobalConfig() {
1119
- return this.program.account.globalConfig.fetch(this.globalConfig);
1120
- }
1121
- async fetchMarket(market) {
1122
- return this.program.account.market.fetch(market);
1266
+ /**
1267
+ * Read global config once per TTL or coalesce concurrent callers.
1268
+ * Pass `{ bypassCache: true }` after config-changing txs if you must observe the latest slot immediately.
1269
+ */
1270
+ async fetchGlobalConfig(opts) {
1271
+ if (opts?.bypassCache) {
1272
+ console.debug('[vercora-rpc] fetchGlobalConfig bypass-cache');
1273
+ const data = (await this.program.account.globalConfig.fetch(this.globalConfig));
1274
+ this.globalConfigCache = { fetchedAt: Date.now(), data };
1275
+ return data;
1276
+ }
1277
+ const ttl = PredictionMarketClient.FETCH_GLOBAL_CONFIG_TTL_MS;
1278
+ const c = this.globalConfigCache;
1279
+ if (c && Date.now() - c.fetchedAt < ttl) {
1280
+ console.debug('[vercora-rpc] fetchGlobalConfig cache-hit age=%dms', Date.now() - c.fetchedAt);
1281
+ return c.data;
1282
+ }
1283
+ if (this.globalConfigInflight) {
1284
+ console.debug('[vercora-rpc] fetchGlobalConfig coalesced-inflight');
1285
+ return this.globalConfigInflight;
1286
+ }
1287
+ console.debug('[vercora-rpc] fetchGlobalConfig RPC-fire CALLER: %s', PredictionMarketClient.rpcTrace());
1288
+ const p = this.program.account.globalConfig.fetch(this.globalConfig)
1289
+ .then((data) => {
1290
+ this.globalConfigCache = { fetchedAt: Date.now(), data };
1291
+ return data;
1292
+ })
1293
+ .finally(() => {
1294
+ this.globalConfigInflight = null;
1295
+ });
1296
+ this.globalConfigInflight = p;
1297
+ return p;
1298
+ }
1299
+ /** Same TTL + concurrent coalescing pattern as {@link fetchGlobalConfig}. */
1300
+ async fetchMarket(market, opts) {
1301
+ const key = market.toBase58();
1302
+ const ttl = PredictionMarketClient.FETCH_MARKET_TTL_MS;
1303
+ if (opts?.bypassCache) {
1304
+ console.debug('[vercora-rpc] fetchMarket bypass-cache key=%s', key);
1305
+ const data = (await this.program.account.market.fetch(market));
1306
+ this.marketFetchCache.set(key, { fetchedAt: Date.now(), data });
1307
+ return data;
1308
+ }
1309
+ const row = this.marketFetchCache.get(key);
1310
+ if (row && Date.now() - row.fetchedAt < ttl) {
1311
+ console.debug('[vercora-rpc] fetchMarket cache-hit key=%s age=%dms', key, Date.now() - row.fetchedAt);
1312
+ return row.data;
1313
+ }
1314
+ let inflight = this.marketFetchInflight.get(key);
1315
+ if (!inflight) {
1316
+ console.debug('[vercora-rpc] fetchMarket RPC-fire key=%s CALLER: %s', key, PredictionMarketClient.rpcTrace());
1317
+ inflight = this.program.account.market.fetch(market)
1318
+ .then((data) => {
1319
+ this.marketFetchCache.set(key, { fetchedAt: Date.now(), data });
1320
+ return data;
1321
+ })
1322
+ .finally(() => {
1323
+ this.marketFetchInflight.delete(key);
1324
+ });
1325
+ this.marketFetchInflight.set(key, inflight);
1326
+ }
1327
+ else {
1328
+ console.debug('[vercora-rpc] fetchMarket coalesced-inflight key=%s', key);
1329
+ }
1330
+ return inflight;
1123
1331
  }
1124
1332
  bnFieldToListedString(v) {
1125
1333
  if (v == null)
@@ -1878,4 +2086,15 @@ class PredictionMarketClient {
1878
2086
  }
1879
2087
  }
1880
2088
  exports.PredictionMarketClient = PredictionMarketClient;
2089
+ /**
2090
+ * Global config changes only on admin transactions (very rare). 5-minute TTL is safe and
2091
+ * eliminates almost all duplicate fetches across prefetch → confirm-stake flows.
2092
+ */
2093
+ PredictionMarketClient.FETCH_GLOBAL_CONFIG_TTL_MS = 5 * 60000;
2094
+ /**
2095
+ * Market account changes on every stake / resolution, but reading slightly stale data for
2096
+ * display is fine. Write paths always receive fresh data via `bypassCache` after mutations.
2097
+ * 2 minutes balances freshness with RPC load.
2098
+ */
2099
+ PredictionMarketClient.FETCH_MARKET_TTL_MS = 2 * 60000;
1881
2100
  //# sourceMappingURL=client.js.map