@structbuild/sdk 0.4.2-staging.0 → 0.4.2-staging.2

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.
@@ -123,6 +123,26 @@ export interface paths {
123
123
  patch?: never;
124
124
  trace?: never;
125
125
  };
126
+ "/polymarket/builders/composition": {
127
+ parameters: {
128
+ query?: never;
129
+ header?: never;
130
+ path?: never;
131
+ cookie?: never;
132
+ };
133
+ /**
134
+ * Top-N builders + 'other' aggregate composition
135
+ * @description Returns the top N builders by the chosen metric plus a synthetic `other` row aggregating every remaining builder. Designed for stacked / pie charts where rendering all builders individually is overkill. `series=cumulative` returns end-of-window totals; `series=delta` returns the in-window change.
136
+ */
137
+ get: operations["get_builder_composition"];
138
+ put?: never;
139
+ post?: never;
140
+ delete?: never;
141
+ options?: never;
142
+ head?: never;
143
+ patch?: never;
144
+ trace?: never;
145
+ };
126
146
  "/polymarket/builders/global": {
127
147
  parameters: {
128
148
  query?: never;
@@ -194,6 +214,26 @@ export interface paths {
194
214
  patch?: never;
195
215
  trace?: never;
196
216
  };
217
+ "/polymarket/builders/global/tags": {
218
+ parameters: {
219
+ query?: never;
220
+ header?: never;
221
+ path?: never;
222
+ cookie?: never;
223
+ };
224
+ /**
225
+ * All tags with builder-attributed activity
226
+ * @description Returns every tag that has builder-routed activity, with metrics aggregated across all builders. `distinct_builders` is exact; other `unique_*` columns sum per-builder uniques and may slightly over-count traders active under multiple builders.
227
+ */
228
+ get: operations["list_global_builder_tags"];
229
+ put?: never;
230
+ post?: never;
231
+ delete?: never;
232
+ options?: never;
233
+ head?: never;
234
+ patch?: never;
235
+ trace?: never;
236
+ };
197
237
  "/polymarket/builders/tags/{tag}": {
198
238
  parameters: {
199
239
  query?: never;
@@ -1895,6 +1935,23 @@ export interface components {
1895
1935
  * @description Distinct builder codes ever observed.
1896
1936
  */
1897
1937
  distinct_builders: number;
1938
+ /**
1939
+ * Format: int64
1940
+ * @description Onboarding metric — traders whose *first ever* builder-attributed
1941
+ * trade occurred within the chosen window. Each trader contributes at
1942
+ * most once globally.
1943
+ */
1944
+ new_users: number;
1945
+ /**
1946
+ * Format: double
1947
+ * @description Average revenue per user — `builder_fees / unique_traders`.
1948
+ */
1949
+ avg_rev_per_user: number;
1950
+ /**
1951
+ * Format: double
1952
+ * @description Average volume per user — `volume_usd / unique_traders`.
1953
+ */
1954
+ avg_vol_per_user: number;
1898
1955
  };
1899
1956
  /** @description Cumulative stats for a single builder. */
1900
1957
  BuilderLatestRow: {
@@ -1947,6 +2004,31 @@ export interface components {
1947
2004
  buy_dist_10k_50k: number;
1948
2005
  /** Format: int64 */
1949
2006
  buy_dist_50k_plus: number;
2007
+ /** Format: int64 */
2008
+ new_users: number;
2009
+ /**
2010
+ * Format: double
2011
+ * @description Average revenue per user — `builder_fees / unique_traders`.
2012
+ */
2013
+ avg_rev_per_user: number;
2014
+ /**
2015
+ * Format: double
2016
+ * @description Average volume per user — `volume_usd / unique_traders`.
2017
+ */
2018
+ avg_vol_per_user: number;
2019
+ /**
2020
+ * Format: int32
2021
+ * @description Builder's maker fee rate in basis points. Latest known value at the
2022
+ * end of the window — same value across all timeframes since it's a
2023
+ * static property of the builder, not an aggregate.
2024
+ */
2025
+ builder_maker_fee_rate_bps: number;
2026
+ /**
2027
+ * Format: int32
2028
+ * @description Builder's taker fee rate in basis points. Same scoping as
2029
+ * `builder_maker_fee_rate_bps`.
2030
+ */
2031
+ builder_taker_fee_rate_bps: number;
1950
2032
  };
1951
2033
  /** @description Per-metric percentage change for a builder over the requested lookback window. */
1952
2034
  BuilderPctChange: {
@@ -1994,12 +2076,18 @@ export interface components {
1994
2076
  buy_dist_10k_50k: number;
1995
2077
  /** Format: double */
1996
2078
  buy_dist_50k_plus: number;
2079
+ /** Format: double */
2080
+ new_users: number;
2081
+ /** Format: double */
2082
+ avg_rev_per_user: number;
2083
+ /** Format: double */
2084
+ avg_vol_per_user: number;
1997
2085
  };
1998
2086
  /**
1999
2087
  * @description Sort metric for the builders list endpoint.
2000
2088
  * @enum {string}
2001
2089
  */
2002
- BuilderSortBy: "volume" | "txns" | "traders" | "fees" | "builder_fees";
2090
+ BuilderSortBy: "volume" | "txns" | "traders" | "fees" | "builder_fees" | "new_users" | "avg_rev_per_user" | "avg_vol_per_user" | "builder_maker_fee_rate_bps" | "builder_taker_fee_rate_bps";
2003
2091
  /** @description One tag's stats under a single builder. */
2004
2092
  BuilderTagRow: {
2005
2093
  tag: string;
@@ -2051,6 +2139,12 @@ export interface components {
2051
2139
  buy_dist_10k_50k: number;
2052
2140
  /** Format: int64 */
2053
2141
  buy_dist_50k_plus: number;
2142
+ /** Format: int64 */
2143
+ new_users: number;
2144
+ /** Format: double */
2145
+ avg_rev_per_user: number;
2146
+ /** Format: double */
2147
+ avg_vol_per_user: number;
2054
2148
  };
2055
2149
  /**
2056
2150
  * @description One time bucket of builder activity. In `timeseries` responses fields are
@@ -2116,6 +2210,26 @@ export interface components {
2116
2210
  bd_50k: number;
2117
2211
  /** Format: int64 */
2118
2212
  bd_50p: number;
2213
+ /**
2214
+ * Format: int64
2215
+ * @description Onboarding metric — traders whose *first ever* builder-attributed trade
2216
+ * touched this builder/grain. Cumulative on `timeseries`, delta on
2217
+ * `deltas`. Each trader contributes at most once globally (any builder).
2218
+ */
2219
+ nu: number;
2220
+ /**
2221
+ * Format: double
2222
+ * @description Average revenue per user — `builder_fees / unique_traders`. Zero when
2223
+ * the bucket has no traders. Cumulative on `timeseries`, in-window on
2224
+ * `deltas`.
2225
+ */
2226
+ ar: number;
2227
+ /**
2228
+ * Format: double
2229
+ * @description Average volume per user — `volume_usd / unique_traders`. Same scoping
2230
+ * as `avg_rev_per_user` (cumulative on `timeseries`, in-window on `deltas`).
2231
+ */
2232
+ av: number;
2119
2233
  };
2120
2234
  /**
2121
2235
  * @description Time window for cumulative builder stats.
@@ -2201,6 +2315,80 @@ export interface components {
2201
2315
  [key: string]: number;
2202
2316
  };
2203
2317
  };
2318
+ /**
2319
+ * @description One row of the composition response. `builder_code` is either a real hex
2320
+ * address (for top-N entries) or the literal string `"other"` for the
2321
+ * aggregated remainder.
2322
+ */
2323
+ CompositionEntry: {
2324
+ builder_code: string;
2325
+ /**
2326
+ * Format: int32
2327
+ * @description 1-indexed rank within the response. The `other` row is always last
2328
+ * with rank `top_n + 1`.
2329
+ */
2330
+ rank: number;
2331
+ /** Format: double */
2332
+ volume_usd: number;
2333
+ /** Format: double */
2334
+ buy_volume_usd: number;
2335
+ /** Format: double */
2336
+ sell_volume_usd: number;
2337
+ /**
2338
+ * Format: int64
2339
+ * @description Window-distinct trader count. For the `other` row this is summed
2340
+ * across the remainder builders, so a trader active under multiple
2341
+ * builders is counted in each — upper bound, not exact.
2342
+ */
2343
+ unique_traders: number;
2344
+ /** Format: int64 */
2345
+ unique_makers: number;
2346
+ /** Format: int64 */
2347
+ unique_takers: number;
2348
+ /** Format: int64 */
2349
+ txn_count: number;
2350
+ /** Format: int64 */
2351
+ buy_count: number;
2352
+ /** Format: int64 */
2353
+ sell_count: number;
2354
+ /** Format: double */
2355
+ fees_usd: number;
2356
+ /** Format: double */
2357
+ builder_fees: number;
2358
+ /** Format: double */
2359
+ shares_volume: number;
2360
+ /** Format: double */
2361
+ yes_volume_usd: number;
2362
+ /** Format: double */
2363
+ no_volume_usd: number;
2364
+ /** Format: int64 */
2365
+ yes_count: number;
2366
+ /** Format: int64 */
2367
+ no_count: number;
2368
+ /** Format: int64 */
2369
+ buy_dist_under_10: number;
2370
+ /** Format: int64 */
2371
+ buy_dist_10_100: number;
2372
+ /** Format: int64 */
2373
+ buy_dist_100_1k: number;
2374
+ /** Format: int64 */
2375
+ buy_dist_1k_10k: number;
2376
+ /** Format: int64 */
2377
+ buy_dist_10k_50k: number;
2378
+ /** Format: int64 */
2379
+ buy_dist_50k_plus: number;
2380
+ /** Format: int64 */
2381
+ new_users: number;
2382
+ /** Format: double */
2383
+ avg_rev_per_user: number;
2384
+ /** Format: double */
2385
+ avg_vol_per_user: number;
2386
+ };
2387
+ /**
2388
+ * @description Series mode — cumulative end-of-window snapshot or in-window delta.
2389
+ * @enum {string}
2390
+ */
2391
+ CompositionSeries: "cumulative" | "delta";
2204
2392
  ConcentrationResponse: {
2205
2393
  /**
2206
2394
  * Format: double
@@ -2451,6 +2639,73 @@ export interface components {
2451
2639
  EventPnlSortBy: "realized_pnl_usd" | "total_volume_usd" | "markets_traded" | "total_fees" | "realized_pnl_pct";
2452
2640
  /** @enum {string} */
2453
2641
  EventSortBy: "volume" | "txns" | "unique_traders" | "title" | "creation_date" | "start_date" | "end_date" | "relevance";
2642
+ /**
2643
+ * @description One tag's stats aggregated across every builder routing activity into it.
2644
+ *
2645
+ * `distinct_builders` is the exact count of builders active in the tag.
2646
+ * `unique_traders` / `unique_makers` / `unique_takers` are summed per builder,
2647
+ * so a trader active under multiple builders is counted in each — these are
2648
+ * upper bounds rather than true window-distinct counts.
2649
+ */
2650
+ GlobalBuilderTagRow: {
2651
+ tag: string;
2652
+ /** Format: int64 */
2653
+ block: number;
2654
+ /** Format: int32 */
2655
+ ts: number;
2656
+ /** Format: int64 */
2657
+ distinct_builders: number;
2658
+ /** Format: double */
2659
+ volume_usd: number;
2660
+ /** Format: double */
2661
+ buy_volume_usd: number;
2662
+ /** Format: double */
2663
+ sell_volume_usd: number;
2664
+ /** Format: int64 */
2665
+ unique_traders: number;
2666
+ /** Format: int64 */
2667
+ unique_makers: number;
2668
+ /** Format: int64 */
2669
+ unique_takers: number;
2670
+ /** Format: int64 */
2671
+ txn_count: number;
2672
+ /** Format: int64 */
2673
+ buy_count: number;
2674
+ /** Format: int64 */
2675
+ sell_count: number;
2676
+ /** Format: double */
2677
+ fees_usd: number;
2678
+ /** Format: double */
2679
+ builder_fees: number;
2680
+ /** Format: double */
2681
+ shares_volume: number;
2682
+ /** Format: double */
2683
+ yes_volume_usd: number;
2684
+ /** Format: double */
2685
+ no_volume_usd: number;
2686
+ /** Format: int64 */
2687
+ yes_count: number;
2688
+ /** Format: int64 */
2689
+ no_count: number;
2690
+ /** Format: int64 */
2691
+ buy_dist_under_10: number;
2692
+ /** Format: int64 */
2693
+ buy_dist_10_100: number;
2694
+ /** Format: int64 */
2695
+ buy_dist_100_1k: number;
2696
+ /** Format: int64 */
2697
+ buy_dist_1k_10k: number;
2698
+ /** Format: int64 */
2699
+ buy_dist_10k_50k: number;
2700
+ /** Format: int64 */
2701
+ buy_dist_50k_plus: number;
2702
+ /** Format: int64 */
2703
+ new_users: number;
2704
+ /** Format: double */
2705
+ avg_rev_per_user: number;
2706
+ /** Format: double */
2707
+ avg_vol_per_user: number;
2708
+ };
2454
2709
  /** @enum {string} */
2455
2710
  GlobalChangeTimeframe: "1h" | "24h" | "7d" | "30d" | "1mo" | "1y";
2456
2711
  /**
@@ -2599,6 +2854,12 @@ export interface components {
2599
2854
  buy_dist_50k_plus: number;
2600
2855
  /** Format: double */
2601
2856
  distinct_builders: number;
2857
+ /** Format: double */
2858
+ new_users: number;
2859
+ /** Format: double */
2860
+ avg_rev_per_user: number;
2861
+ /** Format: double */
2862
+ avg_vol_per_user: number;
2602
2863
  };
2603
2864
  /** @enum {string} */
2604
2865
  GlobalPnlSortBy: "realized_pnl_usd" | "buys" | "sells" | "redemptions" | "merges" | "avg_hold_time" | "markets_traded" | "events_traded" | "markets_won" | "volume_usd" | "fees" | "best_trade";
@@ -4099,6 +4360,12 @@ export interface components {
4099
4360
  buy_dist_10k_50k: number;
4100
4361
  /** Format: int64 */
4101
4362
  buy_dist_50k_plus: number;
4363
+ /** Format: int64 */
4364
+ new_users: number;
4365
+ /** Format: double */
4366
+ avg_rev_per_user: number;
4367
+ /** Format: double */
4368
+ avg_vol_per_user: number;
4102
4369
  };
4103
4370
  /**
4104
4371
  * @description Metric to order by when `sort=<value>` is provided.
@@ -4948,10 +5215,39 @@ export interface operations {
4948
5215
  };
4949
5216
  };
4950
5217
  };
5218
+ get_builder_composition: {
5219
+ parameters: {
5220
+ query?: {
5221
+ /** @description Ranking metric. Default: volume. */
5222
+ metric?: components["schemas"]["BuilderSortBy"];
5223
+ /** @description Window: lifetime, 1d, 24h, 7d, 30d, 1mo. Default: lifetime. */
5224
+ timeframe?: components["schemas"]["BuilderTimeframe"];
5225
+ /** @description Number of top builders to return individually (clamped 1..50). Default: 10. */
5226
+ top_n?: number;
5227
+ /** @description cumulative (end-of-window snapshot) or delta (in-window change). Default: cumulative. At timeframe=lifetime, delta == cumulative. */
5228
+ series?: components["schemas"]["CompositionSeries"];
5229
+ };
5230
+ header?: never;
5231
+ path?: never;
5232
+ cookie?: never;
5233
+ };
5234
+ requestBody?: never;
5235
+ responses: {
5236
+ /** @description Top-N builders + 'other' aggregate */
5237
+ 200: {
5238
+ headers: {
5239
+ [name: string]: unknown;
5240
+ };
5241
+ content: {
5242
+ "application/json": components["schemas"]["CompositionEntry"][];
5243
+ };
5244
+ };
5245
+ };
5246
+ };
4951
5247
  get_builder_global: {
4952
5248
  parameters: {
4953
5249
  query?: {
4954
- /** @description Window: lifetime, 1d, 7d, 30d. Default: lifetime. */
5250
+ /** @description Window: lifetime, 1d, 24h, 7d, 30d, 1mo. Default: lifetime. */
4955
5251
  timeframe?: components["schemas"]["BuilderTimeframe"];
4956
5252
  };
4957
5253
  header?: never;
@@ -5056,12 +5352,43 @@ export interface operations {
5056
5352
  };
5057
5353
  };
5058
5354
  };
5355
+ list_global_builder_tags: {
5356
+ parameters: {
5357
+ query?: {
5358
+ /** @description Metric to sort by. Default: volume. */
5359
+ sort?: components["schemas"]["BuilderSortBy"];
5360
+ /** @description Window: lifetime, 1d, 24h, 7d, 30d, 1mo. Default: lifetime. */
5361
+ timeframe?: components["schemas"]["BuilderTimeframe"];
5362
+ /** @description Max rows to return (default 50, max 500). */
5363
+ limit?: number;
5364
+ /** @description Skip count. */
5365
+ offset?: number;
5366
+ /** @description Opaque cursor. */
5367
+ pagination_key?: string;
5368
+ };
5369
+ header?: never;
5370
+ path?: never;
5371
+ cookie?: never;
5372
+ };
5373
+ requestBody?: never;
5374
+ responses: {
5375
+ /** @description Per-tag aggregated stats */
5376
+ 200: {
5377
+ headers: {
5378
+ [name: string]: unknown;
5379
+ };
5380
+ content: {
5381
+ "application/json": components["schemas"]["GlobalBuilderTagRow"][];
5382
+ };
5383
+ };
5384
+ };
5385
+ };
5059
5386
  list_tag_builders: {
5060
5387
  parameters: {
5061
5388
  query?: {
5062
5389
  /** @description Metric to sort by. Default: volume. */
5063
5390
  sort?: components["schemas"]["BuilderSortBy"];
5064
- /** @description Window: lifetime, 1d, 7d, 30d. Default: lifetime. */
5391
+ /** @description Window: lifetime, 1d, 24h, 7d, 30d, 1mo. Default: lifetime. */
5065
5392
  timeframe?: components["schemas"]["BuilderTimeframe"];
5066
5393
  /** @description Max rows to return (default 50, max 500). */
5067
5394
  limit?: number;
@@ -5332,7 +5659,7 @@ export interface operations {
5332
5659
  query?: {
5333
5660
  /** @description Metric to sort by. Default: volume. */
5334
5661
  sort?: components["schemas"]["BuilderSortBy"];
5335
- /** @description Window: lifetime, 1d, 7d, 30d. Default: lifetime. */
5662
+ /** @description Window: lifetime, 1d, 24h, 7d, 30d, 1mo. Default: lifetime. */
5336
5663
  timeframe?: components["schemas"]["BuilderTimeframe"];
5337
5664
  /** @description Max rows to return (default 50, max 500). */
5338
5665
  limit?: number;
package/dist/index.cjs CHANGED
@@ -193,11 +193,14 @@ class HttpClient {
193
193
  } catch {}
194
194
  }
195
195
  if (!response.ok) {
196
- let body2;
197
- try {
198
- body2 = await response.json();
199
- } catch {
200
- body2 = await response.text();
196
+ const text = await response.text();
197
+ let body2 = text;
198
+ if (text.length > 0) {
199
+ try {
200
+ body2 = JSON.parse(text);
201
+ } catch {}
202
+ } else {
203
+ body2 = null;
201
204
  }
202
205
  throw new HttpError(response.status, response.statusText, body2, response.headers);
203
206
  }
@@ -517,6 +520,9 @@ class BuildersNamespace extends Namespace {
517
520
  async getBuilders(params, venue) {
518
521
  return this.get(venue, "/builders", { params: { ...params } });
519
522
  }
523
+ async getComposition(params, venue) {
524
+ return this.get(venue, "/builders/composition", { params: { ...params } });
525
+ }
520
526
  async getBuilder(params, venue) {
521
527
  const { builder_code, ...query } = params;
522
528
  return this.get(venue, `/builders/${encodePathParam(builder_code)}`, { params: query });
@@ -568,6 +574,9 @@ class BuildersNamespace extends Namespace {
568
574
  async getGlobalTimeseries(params, venue) {
569
575
  return this.get(venue, "/builders/global/analytics/timeseries", { params: { ...params } });
570
576
  }
577
+ async getGlobalTags(params, venue) {
578
+ return this.get(venue, "/builders/global/tags", { params: { ...params } });
579
+ }
571
580
  async getTagBuilders(params, venue) {
572
581
  const { tag, ...query } = params;
573
582
  return this.get(venue, `/builders/tags/${encodePathParam(tag)}`, { params: query });
@@ -1507,5 +1516,5 @@ async function* paginate(fetcher, params, pageSize = DEFAULT_PAGE_SIZE) {
1507
1516
  }
1508
1517
  }
1509
1518
 
1510
- //# debugId=0845CF70CA3C7A5A64756E2164756E21
1519
+ //# debugId=8298842F4C725C5864756E2164756E21
1511
1520
  //# sourceMappingURL=index.js.map