@0xinsider/sdk 0.14.0 → 0.16.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/dist/schema.d.ts CHANGED
@@ -802,10 +802,10 @@ export type LargeTrade = {
802
802
  /** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the traded outcome; null when unavailable (e.g. unsynced markets) and for a Polymarket trade recorded before 2026-04-02T00:00:00Z, where the traded side is unknown. */
803
803
  token_id: string | null;
804
804
  price: number;
805
- /** Current 0.0–1.0 review score, computed at request time from the trade's size, the trader's win rate today, a bonus when a trader with a win rate above 55% trades at a price below 30¢, and the trade's age now. A higher score means read this trade first; it does not measure edge or predict an outcome. On a historical row it is today's view of the trade, not what a reader saw then; use recorded_review_score for that. Canonical since #16311; signal_score carries the same value. */
805
+ /** Current trade review score on a 0..1 scale; higher values indicate a stronger review signal. This is the current response value and can differ from the recorded score. Missing measurements remain unavailable. */
806
806
  review_score: number;
807
807
  /**
808
- * Current 0.0–1.0 review score, computed at request time from the trader's win rate today and the trade's age now. Deprecated (#16311): `review_score` is the canonical spelling and carries the same value; this key stays on the wire.
808
+ * Deprecated alias of review_score with the same current value and 0..1 scale.
809
809
  * @deprecated
810
810
  */
811
811
  signal_score: number;
@@ -1205,16 +1205,18 @@ export type PickHolder = {
1205
1205
  is_bot?: boolean;
1206
1206
  /** The wallet's X handle from its Polymarket profile, normalized to 1-15 characters of [A-Za-z0-9_] with no `@`. Link it as `https://x.com/<handle>`. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
1207
1207
  x_username?: string | null;
1208
- category_evidence?: HolderCategoryEvidence;
1209
1208
  };
1210
1209
  export type PickOfTheDay = {
1211
1210
  /** Always 'full' for an authenticated Pro key. */
1212
1211
  state: "full";
1213
1212
  /** The pick's local publication date (YYYY-MM-DD). */
1214
1213
  pick_date?: string;
1215
- /** Stable 1-based slot within the product day's ranked picks. */
1214
+ /**
1215
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
1216
+ * @deprecated
1217
+ */
1216
1218
  pick_rank?: number;
1217
- /** The complete ranked picks for this product day, ordered by pick_rank. Thin days contain fewer items; the selector never fabricates rows. */
1219
+ /** Published picks for this product day in the returned display order. Use pick_id for identity. */
1218
1220
  picks?: PickOfTheDay[];
1219
1221
  /** Number of items in `picks`: the proof-readable picks. Picks held in `proof_pending_picks` are not counted. */
1220
1222
  pick_count?: number;
@@ -1222,7 +1224,7 @@ export type PickOfTheDay = {
1222
1224
  scheduled_picks?: ScheduledPickSlot[];
1223
1225
  /** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
1224
1226
  matchup?: string;
1225
- /** Frozen canonical calibration/report bucket (e.g. "Basketball", "MMA", or "Soccer"). Existing semantics are unchanged; presentation consumers should prefer display_category when present. */
1227
+ /** Recorded canonical sport category. Prefer display_category for the public competition label. */
1226
1228
  category?: string;
1227
1229
  /** Frozen public presentation category: the competition the Polymarket event belongs to. A curated label comes first -- an official league (e.g. "WNBA" or "UFC"), the esports title (e.g. "CS2", "LoL", "Dota 2" or "Valorant"), or a soccer competition (e.g. "LaLiga", "Premier League", "Serie A" or "UEFA Champions League"); any other competition carries the provider's own competition name without its season year (e.g. "UEFA Nations League", "ATP" or "Wimbledon"). It equals category only when the provider names no competition. An esports pick keeps the pooled "Esports" bucket in category, so a per-title label never implies a per-title measured cohort. Additive and optional for mixed-version client compatibility. */
1228
1230
  display_category?: string;
@@ -1248,23 +1250,19 @@ export type PickOfTheDay = {
1248
1250
  position?: string;
1249
1251
  /** One-line summary of which side sharp money is backing. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof. */
1250
1252
  side_summary?: string;
1251
- /** Public V1 compatibility count of S/A sharp-money wallets on the backed side. The first-party/internal current policy counts S/A/B; historical rows retain their frozen policy's count. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof. Canonical key since #16308; smart_wallet_count is its deprecated spelling, emitted beside it with the same value. */
1253
+ /** S/A wallet count on the backed side in the public V1 compatibility projection. */
1252
1254
  sharp_wallet_count?: number;
1253
1255
  /**
1254
- * Deprecated spelling of sharp_wallet_count, emitted beside it with the same value and never removed. Public V1 compatibility count of S/A sharp-money wallets on the backed side. The first-party/internal current policy counts S/A/B; historical rows retain their frozen policy's count. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof.
1256
+ * Deprecated spelling of sharp_wallet_count with the same value.
1255
1257
  * @deprecated
1256
1258
  */
1257
1259
  smart_wallet_count?: number;
1258
- /** Best public V1-compatible S/A sharp-money grade on the backed side. The first-party/internal current policy can select B, but a current B-only grade is omitted by the stable V1 adapter. Historical rows retain their frozen policy's grade. A current-day published pick with pending legacy proof, unknown-future proof, or structurally invalid current-policy proof returns 503 before this success schema is served. Resolved legacy proof remains readable on both current-day and archive/history responses. */
1260
+ /** Best recorded S/A grade in the public V1 compatibility projection. */
1259
1261
  top_grade?: string;
1260
- /** Deprecated (#7170): no longer populated for picks selected on/after the calibration-edge change; omitted (absent) for new picks (the field uses skip_serializing_if, so a null value is dropped from the JSON rather than serialized as null). Permanently frozen-legacy -- retained for historical picks, with no removal or replacement planned, so no v2 is implied. Historical picks may still carry a value. Legacy meaning: category win-rate edge as a fraction (the backed-side cohort's win rate in this category minus the non-market-maker category baseline, e.g. 0.09 = +9 points), paired with category_edge_sample. */
1261
- category_edge_pct?: number;
1262
- /** Deprecated (#7170): no longer populated for picks selected on/after the calibration-edge change; omitted (absent) for new picks (the field uses skip_serializing_if, so a null value is dropped from the JSON rather than serialized as null). Permanently frozen-legacy -- retained for historical picks, with no removal or replacement planned, so no v2 is implied. Historical picks may still carry a value. Legacy meaning: pooled count of resolved markets behind category_edge_pct (the headline's n). */
1263
- category_edge_sample?: number;
1264
- /** Recency-weighted graded-flow magnitude in USD; omitted when <= 0. Canonical key since #16308; smart_usd is its deprecated spelling, emitted beside it with the same value. */
1262
+ /** Recorded sharp-money magnitude in USD when available. */
1265
1263
  sharp_usd?: number;
1266
1264
  /**
1267
- * Deprecated spelling of sharp_usd, emitted beside it with the same value and never removed. Recency-weighted graded-flow magnitude in USD; omitted when <= 0.
1265
+ * Deprecated spelling of sharp_usd with the same value.
1268
1266
  * @deprecated
1269
1267
  */
1270
1268
  smart_usd?: number;
@@ -1298,67 +1296,40 @@ export type PickOfTheDay = {
1298
1296
  unit_score?: number;
1299
1297
  /** Backend-formatted signed unit score, present exactly when unit_score is present. */
1300
1298
  unit_score_display?: string;
1301
- /** First-party/internal backed-side sharp-money dollar consensus as a fraction 0..1: the share of current-policy sharp dollars on the backed side. Omitted on current public V1 rows when the B-inclusive value has no reconstructible S/A equivalent. A conviction signal, NOT a probability or expected-value claim. Frozen at generation. */
1299
+ /** Recorded sharp-money share as a 0..1 fraction when available. This is not a winning probability. */
1302
1300
  sharp_pct?: number;
1303
- /** Market-implied probability of the backed side as a fraction 0..1 (equals backed_price), re-exposed alongside sharp_pct for the WHY breakdown. */
1301
+ /** Recorded market-implied probability as a 0..1 fraction when available. */
1304
1302
  market_pct?: number;
1305
- /** First-party/internal consensus edge = sharp_pct - market_pct, the conviction-vs-price gap (how much more of the current-policy sharp money sits on this side than the price implies). Omitted on current public V1 rows when the B-inclusive value has no reconstructible S/A equivalent. This is NOT an expected-value or guaranteed edge. Omitted when either input is unavailable. */
1306
- consensus_edge_pct?: number;
1307
- /** First-party/internal team-directional commitment read at selection time: the fraction (0..1) of the backed side's current-policy graded sharp-money DOLLARS held by wallets read one-way rather than hedged: no opposite leg on this market worth at least 10% of the backed leg (Polymarket's own currentValue pair), and no opposing team across the game's markets where the wallet's synced legs are fresh. Current public V1 rows omit this B-inclusive read because its historical S/A equivalent is not reconstructed. A high value means the graded pile is really committed to this side; a low one means much of it is hedged or unreadable. Omitted when the read was not computed (a pick selected before the field existed, an ungroupable game, an empty graded pile, or a pile where no holder carried usable evidence) -- which is NOT the same as 0.0, a computed reading that classified holders and found none one-way. */
1308
- directional_confidence?: number;
1309
- /** Graded backed-side holders read as one-way-committed on this game. */
1310
- one_way_holder_count?: number;
1311
- /** Graded backed-side holders read as HEDGED across the game's markets. */
1312
- hedged_holder_count?: number;
1313
- /** The one-way holders' share of the backed-side graded dollars (the confidence's numerator). */
1314
- one_way_graded_usd?: number;
1315
- /** Backed-side graded dollars the confidence is measured against (its denominator). */
1316
- total_graded_usd?: number;
1317
- /** The qualifying category expert whose sport-specific record and real position earned this pick its top selection tier. The first-party/internal current policy admits S/A/B; public V1 exposes a compatible S/A expert and omits a current-policy B-grade expert: a candidate backed by one outranks every candidate without one. Present only on the full payload. Omitted when no wallet qualified on the backed side, on picks generated before the field existed, and on the first-party web teaser, which withholds all backed-side evidence. Frozen at SELECTION time — the wallet's position can move before the pick renders. */
1303
+ /** Optional recorded specialist facts. These describe the trader and do not disclose selection decisions. Present only on a full response when available. */
1318
1304
  qualifying_expert?: {
1319
- /** Wallet address of the qualifying expert. */
1305
+ /** Trader wallet address. */
1320
1306
  address: string;
1321
1307
  /** Provider display name, or null for an unnamed wallet. */
1322
1308
  name: string | null;
1323
- /** 0xinsider grade letter. The first-party/internal current Pick of the Day policy counts S, A, and B; public V1 exposes only the compatible S/A expert. */
1309
+ /** Recorded trader grade. Public V1 preserves its S/A compatibility projection. */
1324
1310
  grade: string | null;
1325
1311
  /** The canonical sport bucket the win rate was measured over (for example Basketball). Can be BROADER than the pick's display_category, which names an exact league such as NBA — label the rate with this field, never with display_category. */
1326
1312
  canonical_category: string;
1327
- /** Share of this wallet's resolved markets in canonical_category whose realized P&L came out positive, as a 0..1 fraction. Above 0.60 by construction for a source=v1 expert; null for an expert who qualified on the category-skill v2 definition only. Deliberately NOT phrased as "closed profitable": the metric counts realized P&L above zero, so a resolved winner the wallet never redeemed sits at zero and counts against it. */
1313
+ /** Share of the trader’s resolved markets in canonical_category with positive realized P&L, as a 0..1 fraction. Null when not measured. This is a trader statistic, not the pick’s probability of winning. */
1328
1314
  win_rate: number | null;
1329
- /** Resolved markets in canonical_category behind win_rate. At least 10 by construction for a source=v1 expert; null with win_rate. */
1315
+ /** Number of resolved markets behind win_rate; null when not measured. */
1330
1316
  n_resolved: number | null;
1331
- /** Current expert policy 10 does not require a category-skill v2 specialist in any sport; in every sport a specialist raises the candidate's rank tier rather than gating it. Standard specialists need a positive edge_lower_95 over enough independent events and enough net backing on the backed side; the floors are not published. Fresh healthy records below the shared model's live sample floor can qualify; stale, unknown and degraded records cannot. Historical records preserve which definition qualified the wallet: v1, the profitability rate (win_rate over n_resolved), or v2, the forward-only category-skill calibration edge (edge_lower_95 over independent_event_count). Absent on picks frozen before the v2 definition existed; read absence as v1. A Tennis pick frozen under gate policy v4 or later carries v2 only: a v1 rate stopped qualifying a tennis expert at v4. A Tennis pick frozen under an earlier policy can still carry v1 with a win rate. */
1332
- source?: "v1" | "v2";
1333
- /** 95% lower bound of the wallet's mean calibration edge over the market price in canonical_category, in probability units (0.08 is 8 points). Positive by construction for a v2 expert; present on a v1 expert only when the wallet also holds a live v2 row. */
1334
- edge_lower_95?: number;
1335
- /** Point estimate behind edge_lower_95. */
1336
- edge_mean?: number;
1337
- /** Independent canonical events behind the edge. At least 10 by construction for a v2 expert. */
1338
- independent_event_count?: number;
1339
- /** Polymarket's own currentValue for this wallet on the backed outcome, in USD, as of selection. At least 1000 by construction through gate policy v7; the standard floor is 500 from v8. From gate policy v5 the floor is read on the net: position_usd minus opposite_position_usd is at least that floor, and the pick re-verifies that net against the live holder snapshot when it is released. */
1317
+ /** Recorded Polymarket position value on the backed outcome, in USD. It can change after this snapshot. */
1340
1318
  position_usd: number;
1341
- /** The same wallet's currentValue on the OTHER outcome of this market, in USD, as of selection. Present from gate policy v5, when the floor moved to net exposure; a wallet long both sides does not qualify. Absent on picks frozen before v5, which never read the leg. 0 is a measured one-way position, not an absence. */
1319
+ /** Recorded position value on the other outcome of this market, in USD. Omitted when not recorded; zero is a measured value. */
1342
1320
  opposite_position_usd?: number;
1343
- /** When the skill read model behind the evidence was last rebuilt: trader_category_stats.computed_at for a source=v1 expert, category_skill_v2_current.as_of for a source=v2 expert. */
1321
+ /** Timestamp of the recorded trader statistics. */
1344
1322
  stats_computed_at: string;
1345
- /** Present from expert policy 6. Current expert policy 10 retains the longshot requirement of live v2 only, with a positive lower bound over a large sample, large net backed value and no meaningful opposite value. Historical policy 6: a specialist required large net backed value, no meaningful opposite value, and either a live v2 positive lower bound over a large sample or a high v1 rate over enough resolved markets. Tennis requires v2. The floors are not published. */
1346
- lane?: "standard" | "longshot_specialist";
1347
- /** Answered, spread-gated, index-scoped backed probability frozen only on a specialist exception. */
1348
- lane_probability?: number;
1349
- /** Canonical provider probability pair branch; absent on standard experts. */
1350
- lane_probability_source?: "p";
1351
- };
1352
- trust?: PickTrust;
1353
- /** Public V1 S/A compatibility count on the backed side (equals the adapted sharp_wallet_count). The first-party/internal current policy counts S/A/B. Historical rows retain their frozen policy's count. */
1323
+ };
1324
+ /** Public V1 S/A wallet count on the backed side, equal to sharp_wallet_count. */
1354
1325
  traders?: number;
1355
- /** Raw backed-side sharp-money USD frozen at generation. This is the Sharp USD value, not the recency-weighted sharp_usd which decays. Omitted on current public V1 rows when the B-inclusive value has no reconstructible S/A equivalent. */
1326
+ /** Recorded backed-side sharp-money value in USD when available. */
1356
1327
  backed_sharp_usd?: number;
1357
- /** Bounded S/A compatibility projection of the frozen sharp-money holders on the backed side. Current full payloads expose the complete S/A/B roster in display_holders; historical rows can retain their earlier frozen shape. */
1328
+ /** Bounded S/A holder display projection. Historical rows retain their recorded display shape. */
1358
1329
  holders?: PickHolder[];
1359
- /** Full-only complete provider-confirmed S/A/B holder roster for the current Pick of the Day backing policy. Omitted for teaser, no-pick, and historical rows whose frozen holder proof predates this policy. Each entry may additionally carry `category_win_rate` / `category_win_rate_status`: the wallet's win rate in the pick's canonical `category`, stamped at serve time from the current category read model (the same annotation the sports sharp-money chips carry). The bounded `holders` compatibility projection never carries these fields. */
1330
+ /** Optional complete holder display roster. Each entry carries ordinary trader and recorded position facts. */
1360
1331
  display_holders?: PickHolder[];
1361
- /** Exact S/A sharp-money proof count on the backed side. The current display_holders roster can be longer because it also carries B-grade sharp-money holders. */
1332
+ /** S/A holder count for the public V1 compatibility projection. display_holders can include additional grades. */
1362
1333
  holder_count?: number;
1363
1334
  /** Optional editorial note attached to the pick. */
1364
1335
  editorial_note?: string;
@@ -1370,18 +1341,24 @@ export type PickOfTheDay = {
1370
1341
  polymarket_url?: string;
1371
1342
  /** The canonical /event game-page slug (one neutral page per game); omitted when the game has no neutral event page. */
1372
1343
  event_slug?: string;
1373
- /** Backend-resolved /event destination slug for this pick's source market; its absence is an authoritative no-link decision. */
1374
- event_link_slug?: string;
1344
+ /** Backend-resolved /event destination slug for the source market. Omitted outside full responses; null is an authoritative no-link decision. */
1345
+ event_link_slug?: string | null;
1375
1346
  /** Provider-first sports context for the pick's market (team logos, league branding, live score). Full-state only; omitted when the pick is not a team-sports market. */
1376
1347
  sports_context?: PickSportsContext;
1377
1348
  /** Risk disclaimer shown with every pick. */
1378
1349
  disclaimer?: string;
1379
1350
  /** Published same-day picks whose holder proof is not readable yet, ordered by pick_rank. Additive and optional: present only while at least one such pick exists. While present, `picks` carries only the proof-readable picks and `pick_count` counts them. Schedule the next read from the earliest retry_at instead of polling. The route returns 503 read_model_warming only when no published pick has readable proof. */
1380
1351
  proof_pending_picks?: ProofPendingPickSlot[];
1381
- /** Frozen admission classification, full payload only. The specialist lane exempts two probability rejects and adds no rank bonus. Historical rows remain standard. */
1382
- selection_lane?: "standard" | "longshot_specialist";
1383
- /** Optional full-only authorization for newly issued policy-7 picks; omitted for legacy or unissued picks and teasers. It remains historical after expiry. */
1352
+ /** Optional full-response entry authorization. Missing or expired authorization cannot authorize an automated entry. */
1384
1353
  entry_authorization?: PotdEntryAuthorization;
1354
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
1355
+ pick_id?: string;
1356
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
1357
+ publication_order?: number;
1358
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
1359
+ is_free_selection?: boolean;
1360
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
1361
+ supersedes_pick_id: string | null;
1385
1362
  };
1386
1363
  export type PickOfTheDayArchive = {
1387
1364
  /** Every published Pick of the Day, newest first by pick_date and then pick_rank within each product day. */
@@ -1413,7 +1390,10 @@ export type PickOfTheDayArchiveDay = {
1413
1390
  export type PickOfTheDayArchiveEntry = {
1414
1391
  /** The pick's local publication date (YYYY-MM-DD). */
1415
1392
  pick_date: string;
1416
- /** Stable 1-based slot within the product day's ranked picks. */
1393
+ /**
1394
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
1395
+ * @deprecated
1396
+ */
1417
1397
  pick_rank?: number;
1418
1398
  /** When this pick became public (RFC3339 UTC). pick_date above is the America/New_York product day, not an instant, so read this whenever you need a real time: reading the bare date as UTC midnight places it hours before the earliest instant a pick can drop (11:00 UTC on that date). A day's last pick can drop at 23:00 ET, which is the following UTC date. Omitted (not null) when the instant is unknown; additive and optional for mixed-version client compatibility. */
1419
1399
  published_at?: string;
@@ -1465,9 +1445,19 @@ export type PickOfTheDayArchiveEntry = {
1465
1445
  unit_score?: number;
1466
1446
  /** Backend-formatted signed unit score, present exactly when unit_score is present. */
1467
1447
  unit_score_display?: string;
1468
- };
1448
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
1449
+ pick_id: string;
1450
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
1451
+ publication_order: number;
1452
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
1453
+ is_free_selection: boolean;
1454
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
1455
+ supersedes_pick_id: string | null;
1456
+ };
1457
+ /** Select using the entry commitment_version, never implicit payload shape. All historic v1 hashes remain unchanged. */
1458
+ export type PickOfTheDayCommitmentPayload = PickOfTheDayCommitmentPayloadV1 | PickOfTheDayCommitmentPayloadV2;
1469
1459
  /** The frozen identity of the pick, exactly as the hash was taken over it. Served byte for byte as it was hashed -- keys sorted by UTF-8 byte value, no insignificant whitespace -- so a verifier concatenates and hashes with nothing to reconstruct. Property order below is the wire order. The outcome is deliberately NOT part of it: surviving a corrected outcome unchanged is the case the commitment exists for. Worked example: {"backed_price":"0.545000","condition_id":"0xabc","kickoff":"2026-09-20T23:05:00Z","pick_date":"2026-09-20","pick_outcome_index":1,"pick_outcome_label":"Lakers","pick_rank":1,"platform":"polymarket"} with the nonce 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f hashes to 44d18fa5e2aa3a2bf3c971dcc9317c8ccbdfd5480a4773b6d8ffd5fbeeea84dc. */
1470
- export type PickOfTheDayCommitmentPayload = {
1460
+ export type PickOfTheDayCommitmentPayloadV1 = {
1471
1461
  /** Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included. A string, never a number: a float round-trip would change the bytes and break the hash. Deliberately not normalized -- 0.545000 stays "0.545000". */
1472
1462
  backed_price: string;
1473
1463
  /** Provider condition id of the backed market. */
@@ -1485,6 +1475,26 @@ export type PickOfTheDayCommitmentPayload = {
1485
1475
  /** Provider platform. Always polymarket. */
1486
1476
  platform: "polymarket";
1487
1477
  };
1478
+ /** Version 2 rank-free canonical payload: sorted nine keys, unchanged string escaping, exact decimal text and whole-second UTC kickoff. pick_id is decimal text; version is JSON integer 2. */
1479
+ export type PickOfTheDayCommitmentPayloadV2 = {
1480
+ /** Frozen pre-game price of the backed side, 0..1, as the plain decimal text of the stored NUMERIC at full stored precision, trailing zeros included. A string, never a number: a float round-trip would change the bytes and break the hash. Deliberately not normalized -- 0.545000 stays "0.545000". */
1481
+ backed_price: string;
1482
+ /** Provider condition id of the backed market. */
1483
+ condition_id: string;
1484
+ /** Frozen provider kickoff, whole seconds, UTC, literal Z. Fixed precision, never a shortest-lossless rendering. */
1485
+ kickoff: string;
1486
+ /** ET product day (YYYY-MM-DD). */
1487
+ pick_date: string;
1488
+ /** Index of the backed outcome within the market. */
1489
+ pick_outcome_index: 0 | 1;
1490
+ /** Frozen display label of the backed outcome. */
1491
+ pick_outcome_label: string;
1492
+ /** Provider platform. Always polymarket. */
1493
+ platform: "polymarket";
1494
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
1495
+ pick_id: string;
1496
+ version: 2;
1497
+ };
1488
1498
  export type PickOfTheDayHitRate = {
1489
1499
  /** Number of decided picks that won. */
1490
1500
  wins: number;
@@ -1580,7 +1590,10 @@ export type PickOfTheDayLedgerOpenedEntry = {
1580
1590
  state: "opened";
1581
1591
  /** ET product day the pick belongs to (YYYY-MM-DD). */
1582
1592
  pick_date: string;
1583
- /** 1-based daily slot within the product day. */
1593
+ /**
1594
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
1595
+ * @deprecated
1596
+ */
1584
1597
  pick_rank: number;
1585
1598
  /** sha256(canonical_json(payload) || nonce), lowercase hex, no 0x prefix. Publishable the moment the pick releases: without the nonce it is not invertible. */
1586
1599
  commitment_hash: string;
@@ -1603,13 +1616,26 @@ export type PickOfTheDayLedgerOpenedEntry = {
1603
1616
  category: string;
1604
1617
  /** The pick's public page. */
1605
1618
  permalink: string;
1619
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
1620
+ pick_id: string;
1621
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
1622
+ publication_order: number;
1623
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
1624
+ is_free_selection: boolean;
1625
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
1626
+ supersedes_pick_id: string | null;
1627
+ /** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
1628
+ commitment_version: 1 | 2;
1606
1629
  };
1607
1630
  /** A published pick that has not settled. Carries the commitment and nothing that states a side or a price: no nonce, no payload, no outcome. Publishable the instant the pick releases. */
1608
1631
  export type PickOfTheDayLedgerSealedEntry = {
1609
1632
  state: "sealed";
1610
1633
  /** ET product day the pick belongs to (YYYY-MM-DD). */
1611
1634
  pick_date: string;
1612
- /** 1-based daily slot within the product day. */
1635
+ /**
1636
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
1637
+ * @deprecated
1638
+ */
1613
1639
  pick_rank: number;
1614
1640
  /** sha256(canonical_json(payload) || nonce), lowercase hex, no 0x prefix. Publishable the moment the pick releases: without the nonce it is not invertible. */
1615
1641
  commitment_hash: string;
@@ -1621,13 +1647,26 @@ export type PickOfTheDayLedgerSealedEntry = {
1621
1647
  kickoff: string;
1622
1648
  /** The pick's public page. */
1623
1649
  permalink: string;
1650
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
1651
+ pick_id: string;
1652
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
1653
+ publication_order: number;
1654
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
1655
+ is_free_selection: boolean;
1656
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
1657
+ supersedes_pick_id: string | null;
1658
+ /** Explicit proof provenance: 1 retains historic eight-field canonical JSON; 2 binds stable pick_id and version without pick_rank. */
1659
+ commitment_version: 1 | 2;
1624
1660
  };
1625
1661
  /** A published pick with no commitment: it predates the scheme, or it reached kickoff unsealed. Nothing here is evidence of WHEN the pick was made. It is emitted rather than skipped, because a ledger with holes where the unprovable picks were would silently flatter the record. Once the pick settles, payload names its market, side and price, so the outcome can still be checked against the market's own resolution. */
1626
1662
  export type PickOfTheDayLedgerUncommittedEntry = {
1627
1663
  state: "uncommitted";
1628
1664
  /** ET product day the pick belongs to (YYYY-MM-DD). */
1629
1665
  pick_date: string;
1630
- /** 1-based daily slot within the product day. */
1666
+ /**
1667
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
1668
+ * @deprecated
1669
+ */
1631
1670
  pick_rank: number;
1632
1671
  /** Always true: this pick has no commitment and never will. */
1633
1672
  pre_commitment: true;
@@ -1643,6 +1682,14 @@ export type PickOfTheDayLedgerUncommittedEntry = {
1643
1682
  payload: PickOfTheDayUncommittedPayload | null;
1644
1683
  /** The pick's public page. */
1645
1684
  permalink: string;
1685
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
1686
+ pick_id: string;
1687
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
1688
+ publication_order: number;
1689
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
1690
+ is_free_selection: boolean;
1691
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
1692
+ supersedes_pick_id: string | null;
1646
1693
  };
1647
1694
  /** A settled uncommitted pick's market, side and price. The same eight fields as PickOfTheDayCommitmentPayload, in the same key order, so a settled pick's side and price sit under payload whatever the entry's state. It is NOT a commitment: no hash was taken over it before the game, and it proves nothing about when the pick was made. */
1648
1695
  export type PickOfTheDayUncommittedPayload = {
@@ -1714,11 +1761,6 @@ export type PickSportsTeam = {
1714
1761
  /** Completed sets won by this side. Present only when both sides expose the same set columns, so a partially parsed scoreline reports no tally rather than a misleading one. */
1715
1762
  sets_won?: number;
1716
1763
  };
1717
- /** Field-level trust metadata for the full Pick of the Day payload. Present on the full shape only (omitted on the teaser and the no-pick state, because whether a specialist backs the pick is itself backed-side evidence). Unlike TraderTrust it is not gated behind expand=trust: it carries one member on an endpoint that returns a single object per day. */
1718
- export type PickTrust = {
1719
- /** Provenance of the frozen qualifying category expert. source.kind=database with reconciliation.status=db_mirror means the evidence deserialized, still satisfies every frozen selection gate, and is being served. On that arm freshness.status is always not_live and never fresh, because this evidence is frozen at selection and never refreshed, so on an archived pick the as_of (the expert's own stats_computed_at) can be days or months old by design. source.kind=computed with reconciliation.status=not_applicable means the selector evaluated the backed side and nobody qualified -- a real negative. source.kind=computed with freshness.status=unknown and completeness.status=not_computed means the selector never evaluated this field, as on a pre-feature pick. source.kind=unavailable means the payload is malformed, violates a selection gate, or conflicts with its persisted status, or the public V1 adapter intentionally omitted a current-policy B-grade expert; read the reason before treating it as a negative. Do not read an omitted qualifying_expert as 'no specialist' without checking this field. */
1720
- qualifying_expert: TrustMetadata;
1721
- };
1722
1764
  export type PlatformCapabilities = {
1723
1765
  grade: PlatformCapabilityStatus;
1724
1766
  pnl: PlatformCapabilityStatus;
@@ -1828,7 +1870,7 @@ export type PositionTimelineEvent = {
1828
1870
  /** Cumulative buy-weighted average of stored fills for this outcome, including older pages; not provider current-position avgPrice. Sells do not change this value. 0 when no stored buys have occurred yet. */
1829
1871
  running_avg_price: number;
1830
1872
  };
1831
- /** Policy-7 issuance binds one condition, selected token, outcome, canonical event and sport. Reuse the same authorization across public/private discovery and retries. Require a new account-size executable book and current market eligibility; this frozen reference does not prove current liquidity or positive expected value. Absence or expiry cannot authorize a new automated entry. */
1873
+ /** Returned entry permission bound to the named market, token and outcome. Honor max_entry_price and expires_at, and check a current executable order book for the actual stake. This snapshot does not guarantee current liquidity, execution or positive expected value. */
1832
1874
  export type PotdEntryAuthorization = {
1833
1875
  version: 1;
1834
1876
  authorization_id: string;
@@ -1840,13 +1882,13 @@ export type PotdEntryAuthorization = {
1840
1882
  category: string;
1841
1883
  /** Exact provider parent event ID, or provider event ID when no parent exists. */
1842
1884
  canonical_event_id: string;
1843
- /** Immutable decimal limit: first fresh selected-token ask plus 0.02, floored to the provider tick below 1. Fees excluded. Never a calibrated fair probability. */
1885
+ /** Returned maximum entry price as an exact decimal string. Honor this bound; fees are excluded. This is not a fair probability. */
1844
1886
  max_entry_price: string;
1845
1887
  reference_best_ask: string;
1846
1888
  reference_book_hash: string;
1847
1889
  reference_book_at: string;
1848
1890
  issued_at: string;
1849
- /** Original provider kickoff ceiling. Never extended on retry. */
1891
+ /** Authorization expiry. An expired authorization cannot authorize a new automated entry. */
1850
1892
  expires_at: string;
1851
1893
  };
1852
1894
  /** One ranked pre-game sports market where graded sharp money is piled on one side, with required-status shadow category evidence from partial forward-observed Polymarket fills. */
@@ -1855,7 +1897,7 @@ export type PreGameSide = {
1855
1897
  side: string | null;
1856
1898
  /** UTC time at which the snapshot that ranked this row was computed. Canonical spelling of signal_created_at (#16310), same value. */
1857
1899
  ranked_at: string;
1858
- /** Grade-weighted holders times the share of their money on the side: (5*s + 4*a + 3*b) * sharp_pct. Canonical spelling of conviction_score (#16310), same value. */
1900
+ /** Recorded side backing score; higher values indicate stronger backing. */
1859
1901
  backing_score: number;
1860
1902
  /** Signed share of graded money on the side, (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (side-yes positive, side-no negative). Canonical spelling of smart_score (#16309, #16310), same value. */
1861
1903
  side_share: number | null;
@@ -1898,7 +1940,7 @@ export type PreGameSide = {
1898
1940
  /** Best grade present on the piled side; null when none. */
1899
1941
  top_grade: "S" | "A" | "B" | null;
1900
1942
  /**
1901
- * Canonical sharp-money score (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (piled-yes positive, piled-no negative); a lower-order ranking tiebreak (after directional_rank_score and conviction_score). Deprecated (#16310): `side_share` is the canonical spelling and carries the same value; this key stays on the wire.
1943
+ * Canonical sharp-money score (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (piled-yes positive, piled-no negative). Deprecated (#16310): `side_share` is the canonical spelling and carries the same value; this key stays on the wire.
1902
1944
  * @deprecated
1903
1945
  */
1904
1946
  smart_score: number | null;
@@ -1907,7 +1949,7 @@ export type PreGameSide = {
1907
1949
  /** Aggregate recent flow direction on the market; null when unavailable. */
1908
1950
  net_side: "BUY" | "SELL" | null;
1909
1951
  /**
1910
- * Grade-weighted pile score (5*s + 4*a + 3*b) * sharp_pct; the raw conviction input to the ranking (see directional_rank_score). Deprecated (#16310): `backing_score` is the canonical spelling and carries the same value; this key stays on the wire.
1952
+ * Recorded conviction score; higher values indicate stronger conviction.
1911
1953
  * @deprecated
1912
1954
  */
1913
1955
  conviction_score: number;
@@ -1919,7 +1961,7 @@ export type PreGameSide = {
1919
1961
  one_way_graded_usd: number | null;
1920
1962
  /** One-way fraction of the piled graded dollars, in [0, 1] -- the metric orthogonal to sharp_pct. Stale, unknown, hedged, and two-sided dollars dilute it toward zero (conservative). Null when the directional read was not computed or classified nobody. */
1921
1963
  directional_confidence: number | null;
1922
- /** The ranking key, descending: conviction_score * (1 + 0.25 * directional_confidence). Equals conviction_score when the directional read is null/zero, so signals without the read rank exactly as before. */
1964
+ /** Recorded side ordering score; higher values sort first. */
1923
1965
  directional_rank_score: number;
1924
1966
  category_skill: PreGameSideCategorySkill;
1925
1967
  /** 1-based rank within the (min_grade-filtered) ranked result. */
@@ -1956,7 +1998,7 @@ export type PreGameSideFunnelReport = {
1956
1998
  export type PreGameSideObservation = {
1957
1999
  /** The side profitable wallets hold, as a provider-backed display label. Canonical spelling of piled_side (#16310), same value: when provider group context is unavailable it may remain a bare Yes/No/Over/Under, so do not use it alone as participant identity. */
1958
2000
  side: string | null;
1959
- /** Grade-weighted holder-pile score before directional enrichment. Canonical spelling of conviction_score (#16310), same value. */
2001
+ /** Recorded side backing score; higher values indicate stronger backing. */
1960
2002
  backing_score: number;
1961
2003
  /** Signed share of graded money on the side, in [-1, 1]. Canonical spelling of smart_score (#16309, #16310), same value. */
1962
2004
  side_share: number;
@@ -2010,7 +2052,7 @@ export type PreGameSideObservation = {
2010
2052
  /** Strictly positive stored market volume in USD. Missing, zero, or non-finite volume terminates as invalid_market and is never emitted as an observation. */
2011
2053
  volume: number;
2012
2054
  /**
2013
- * Grade-weighted holder-pile score before directional enrichment. Deprecated (#16310): `backing_score` is the canonical spelling and carries the same value; this key stays on the wire.
2055
+ * Recorded conviction score; higher values indicate stronger conviction.
2014
2056
  * @deprecated
2015
2057
  */
2016
2058
  conviction_score: number;
@@ -2026,7 +2068,7 @@ export type PreGameSideObservation = {
2026
2068
  hedged_holder_count: number | null;
2027
2069
  one_way_graded_usd: number | null;
2028
2070
  directional_confidence: number | null;
2029
- /** Default cohort ordering key: conviction_score * (1 + 0.25 * directional_confidence), or conviction_score when confidence is null. */
2071
+ /** Recorded side ordering score; higher values sort first. */
2030
2072
  directional_rank_score: number;
2031
2073
  /** 1-based rank within this observation cohort and snapshot. */
2032
2074
  rank: number;
@@ -2059,7 +2101,10 @@ export type PreGameSideSportFunnelReport = {
2059
2101
  };
2060
2102
  /** One PUBLISHED same-day pick whose holder proof is not readable yet: its stable slot rank, the release and kickoff instants, and the instant before which a retry cannot succeed. Every item in `picks` carries its full required shape, so a pick that cannot meet it is listed here instead of being served with missing fields or a synthetic zero. */
2061
2103
  export type ProofPendingPickSlot = {
2062
- /** Stable 1-based slot within the product day's ranked picks. The pick keeps this rank once its proof is readable and it moves into `picks`. */
2104
+ /**
2105
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
2106
+ * @deprecated
2107
+ */
2063
2108
  pick_rank: number;
2064
2109
  /** The pick's stored release instant. */
2065
2110
  release_at: string;
@@ -2067,6 +2112,14 @@ export type ProofPendingPickSlot = {
2067
2112
  kickoff?: string;
2068
2113
  /** Recommended next read: 30 seconds ahead while pre-game proof is warming, one hour ahead for a post-kickoff pending legacy row that only settlement can make readable. Schedule against it instead of polling. */
2069
2114
  retry_at: string;
2115
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
2116
+ pick_id: string;
2117
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
2118
+ publication_order: number;
2119
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
2120
+ is_free_selection: boolean;
2121
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
2122
+ supersedes_pick_id: string | null;
2070
2123
  };
2071
2124
  export type ReportPayload = {
2072
2125
  /** Canonical key since #16304; total_whale_trades is its deprecated spelling, emitted beside it with the same value. */
@@ -2198,12 +2251,23 @@ export type ResponseMeta = {
2198
2251
  };
2199
2252
  /** One same-day pick that is selected but not yet released: its stable slot rank plus the backend-owned release and kickoff instants. Deliberately minimal -- no matchup, category, platform, side, price, or holder fields exist on this shape before release. */
2200
2253
  export type ScheduledPickSlot = {
2201
- /** Stable 1-based slot within the product day's ranked picks. The slot keeps this rank when it releases. */
2254
+ /**
2255
+ * Deprecated compatibility daily release slot; use pick_id for identity and publication_order for scheduling.
2256
+ * @deprecated
2257
+ */
2202
2258
  pick_rank: number;
2203
2259
  /** The slot's scheduled release instant, normally the current provider kickoff minus one hour. The actual publish can trail it by bounded worker delay. */
2204
2260
  release_at: string;
2205
2261
  /** The backed game's current kickoff instant. */
2206
2262
  kickoff: string;
2263
+ /** Stable pick row identity as decimal text. Never use a quality rank as identity. */
2264
+ pick_id: string;
2265
+ /** Compatibility release slot. No quality claim; historic scheduling order is retained. */
2266
+ publication_order: number;
2267
+ /** Viewer-independent free selection designation. New rows store it explicitly; historic null storage uses the original free slot. */
2268
+ is_free_selection: boolean;
2269
+ /** Replacement predecessor stable id; null when no lineage is recorded. */
2270
+ supersedes_pick_id: string | null;
2207
2271
  };
2208
2272
  /** One side's score in a single set. The verbatim provider text stays on the team's `score` string; this is the parsed form. */
2209
2273
  export type ScoreCell = {
@@ -2321,9 +2385,9 @@ export type Trader = {
2321
2385
  /** Hot-streak tier (trailing-7d cross-sectional percentile); a separate axis from the all-time grade. Omitted when there is no recent activity. */
2322
2386
  streak_tier?: "hot" | "rising" | "neutral" | "cooling" | "cold";
2323
2387
  score?: number;
2324
- /** Capital-normalized forecasting score: the cohort percentile (0-100) of the EB-shrunk calibration edge. Omitted when the forecasting signal is unavailable; never replaced with zero. */
2388
+ /** Optional forecast score on the documented display scale. Null when unavailable. */
2325
2389
  forecast_score?: number;
2326
- /** Share of forecast_score supported by the trader's own resolved-market record rather than the cohort prior: n / (n + 30). Omitted when forecast_score is unavailable. */
2390
+ /** Optional measured forecast context. Missing values remain unavailable rather than being inferred. */
2327
2391
  forecast_evidence?: number;
2328
2392
  rank?: number;
2329
2393
  pnl: {
@@ -2352,11 +2416,11 @@ export type Trader = {
2352
2416
  description?: string;
2353
2417
  confidence?: number;
2354
2418
  };
2355
- /** Per-category performance breakdown (expand=categories or expand[]=categories). Omitted unless expanded. Object keyed by category name; each value is the precomputed trader_rankings.category_ranks payload (rank, total_in_category, total_pnl, scaled_total_pnl, n_markets, wins, losses, win_rate; scaled_total_pnl is a legacy alias that currently equals total_pnl). RANK BASIS: rank and total_in_category use the same hourly breakpoint publication; categories absent from that publication are omitted until a later publication includes them. Current trader performance values update separately, so this is not a frozen historical record. BASIS: the calibration sample, which admits a position only above a 20 USD notional floor and with a chosen-side entry price strictly inside (0,1), because the ranks and the calibration edge derived from it depend on both rules. That is a different sample from GET /api/v1/trader/{address}/categories, which counts every settled market at any size, and the two differ in both directions. Measured on production 2026-09-22 over the 122,497 wallet-category pairs with at least 20 decided markets on both bases: the floored rate was higher in 56.5% of pairs, lower in 34.5% and equal in 9.0%, median +0.6 points, p10 -4.6, p90 +9.8, and 14.0% of pairs differ by 10 points or more. The difference is not only small positions: on a 1-in-250 wallet sample the same day, admitted markets won 56.6% while markets dropped by the notional floor alone won 45.2% and markets dropped by the entry-price rule alone won 48.7%. n_markets counts every admitted market including the ones that resolved at exactly zero P&L, so it is not the denominator of win_rate: it differed from wins + losses in 15.8% of pairs with at least 5 decided markets. The two tables also run on different clocks, this one updated incrementally and that route rebuilt daily, so a same-day read can differ on timing alone. Use this for rank context and that route for the wallet's plain record. Pass-through DB JSON: keys and value shape are DB-owned, so the inner shape is intentionally unconstrained and may carry additional compatibility fields. */
2419
+ /** Per-category rank context when expand=categories is requested. Values include available rank, category totals, performance and record counts; scaled_total_pnl is a legacy alias of total_pnl. Its measurement basis and update timing differ from the plain record returned by GET /api/v1/trader/{address}/categories, so the two need not agree. Use this for rank context and that route for the plain record. The inner key-set is intentionally unconstrained and may contain additional compatibility fields. */
2356
2420
  category_strengths?: Record<string, unknown>;
2357
2421
  /** Curated advanced risk/performance metrics (expand=quant_metrics or expand[]=quant_metrics). Omitted unless expanded and backed by a computed row strictly under six hours old; a missing row, NULL computed_at, or age of exactly six hours or more is stale and omitted. Provider-input changes may intentionally lag inside the bounded six-hour window. When present, all listed fields are present (each is a number or null); null means insufficient trade history and must not be treated as 0. The fixed field shape is unchanged. */
2358
2422
  quant_metrics?: {
2359
- /** Composite skill score, 0-100. smart_score = clamp(0, 100, 30*sharpe_percentile_fraction + 20*profit_factor_percentile_fraction + 20*edge_consistency_percentile_fraction + 10*min(1, return_on_capital/2) + 10*equity_smoothness + 10*(1 - min(1, asset_concentration))). Higher is better. null when insufficient history. */
2423
+ /** Trader smart score on a 0..100 display scale; higher is stronger. Null when unavailable. */
2360
2424
  smart_score: number | null;
2361
2425
  /** Copyability score, 0-100. Same base as smart_score minus penalties for traits that make a strategy hard to replicate: -20 if fewer than 50 markets traded, -15 if positions are highly concentrated, -15 if position sizing exceeds about 2x Kelly, -10 if the worst single-trade loss exceeds 30%, -10 if edge is inconsistent; result clamped to 0-100. Higher means easier to follow. null when insufficient history. */
2362
2426
  copy_score: number | null;
@@ -3254,6 +3318,7 @@ export interface OperationData {
3254
3318
  getPickOfTheDay: PickOfTheDay;
3255
3319
  getPickOfTheDayArchive: PickOfTheDayArchive;
3256
3320
  getPickOfTheDayLedger: PickOfTheDayLedger;
3321
+ getPickOfTheDayLedgerEntry: PickOfTheDayLedgerEntry;
3257
3322
  getPlatforms: Platforms;
3258
3323
  getPositionTimeline: PositionTimelineEvent[];
3259
3324
  getPositionTimelineById: PositionTimelineEvent[];
@@ -3636,6 +3701,7 @@ export interface OperationQuery {
3636
3701
  getPickOfTheDay: Record<string, never>;
3637
3702
  getPickOfTheDayArchive: Record<string, never>;
3638
3703
  getPickOfTheDayLedger: Record<string, never>;
3704
+ getPickOfTheDayLedgerEntry: Record<string, never>;
3639
3705
  getPlatforms: Record<string, never>;
3640
3706
  getPositionTimeline: {
3641
3707
  /** Market condition_id. One timeline per (trader, market). */
@@ -4130,6 +4196,10 @@ export interface OperationPath {
4130
4196
  getPickOfTheDay: Record<string, never>;
4131
4197
  getPickOfTheDayArchive: Record<string, never>;
4132
4198
  getPickOfTheDayLedger: Record<string, never>;
4199
+ getPickOfTheDayLedgerEntry: {
4200
+ /** Stable positive pick row id as canonical decimal text. */
4201
+ pick_id: string;
4202
+ };
4133
4203
  getPlatforms: Record<string, never>;
4134
4204
  getPositionTimeline: {
4135
4205
  /** Trader identity: 0x... wallet address, username, trd_-prefixed trader id, bare integer traders.id, or @username. Resolved with precedence @username -> wallet -> trd_ -> integer -> username (a leading @ forces a username lookup, for all-digit usernames); wallet matching is case-insensitive. */
@@ -4324,6 +4394,7 @@ export interface OperationBody {
4324
4394
  getPickOfTheDay: never;
4325
4395
  getPickOfTheDayArchive: never;
4326
4396
  getPickOfTheDayLedger: never;
4397
+ getPickOfTheDayLedgerEntry: never;
4327
4398
  getPlatforms: never;
4328
4399
  getPositionTimeline: never;
4329
4400
  getPositionTimelineById: never;
@@ -4546,6 +4617,11 @@ export interface OperationResponse {
4546
4617
  data: OperationData["getPickOfTheDayLedger"];
4547
4618
  meta: ResponseMeta;
4548
4619
  };
4620
+ getPickOfTheDayLedgerEntry: {
4621
+ object: "pick_of_the_day_ledger_entry";
4622
+ data: OperationData["getPickOfTheDayLedgerEntry"];
4623
+ meta: ResponseMeta;
4624
+ };
4549
4625
  getPlatforms: {
4550
4626
  object: "platforms";
4551
4627
  data: OperationData["getPlatforms"];