@openmarket/market-data-proto 12.60.0 → 12.62.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.
@@ -37,19 +37,143 @@ export type TokenStats = Message<"TokenStats"> & {
37
37
  * @generated from field: uint32 unique_sellers = 6;
38
38
  */
39
39
  uniqueSellers: number;
40
+ /**
41
+ * USD split of volume_usd by swap side: buy_volume_usd + sell_volume_usd
42
+ * == volume_usd when the producer can split the window. Like volume_usd
43
+ * they are zero when unknown (proto3 scalars carry no presence): a reader
44
+ * that sees a non-zero volume_usd with both sides at zero treats the split
45
+ * as unknown, not as "no buys and no sells".
46
+ *
47
+ * @generated from field: double buy_volume_usd = 7;
48
+ */
49
+ buyVolumeUsd: number;
50
+ /**
51
+ * @generated from field: double sell_volume_usd = 8;
52
+ */
53
+ sellVolumeUsd: number;
40
54
  };
41
55
  /**
42
56
  * Describes the message TokenStats.
43
57
  * Use `create(TokenStatsSchema)` to create a new message.
44
58
  */
45
59
  export declare const TokenStatsSchema: GenMessage<TokenStats>;
60
+ /**
61
+ * Holder and risk analytics for a launchpad token, polled from an analytics
62
+ * vendor on a slower cadence than the swap stream. Presence rule: the whole
63
+ * block is absent until the token has been polled (unknown, shown as a dash).
64
+ * Inside a present block every metric carries its own presence, because the
65
+ * vendor answers per metric and leaves some of them null: a field that is
66
+ * absent is unknown, a field that is present is measured, zero included (no
67
+ * snipers, no dev holdings). A producer must leave a metric absent rather
68
+ * than write a zero it did not measure. This is not the TokenStats rule,
69
+ * where a zero USD figure means unknown. Percentages are 0-100.
70
+ *
71
+ * @generated from message TokenAnalytics
72
+ */
73
+ export type TokenAnalytics = Message<"TokenAnalytics"> & {
74
+ /**
75
+ * Distinct wallets holding the token
76
+ *
77
+ * @generated from field: optional uint32 holders = 1;
78
+ */
79
+ holders?: number;
80
+ /**
81
+ * Share of supply held by the ten largest holders, 0-100
82
+ *
83
+ * @generated from field: optional double top10_holders_pct = 2;
84
+ */
85
+ top10HoldersPct?: number;
86
+ /**
87
+ * Share of supply held by the creator wallet, 0-100
88
+ *
89
+ * @generated from field: optional double dev_held_pct = 3;
90
+ */
91
+ devHeldPct?: number;
92
+ /**
93
+ * Wallets that bought in the launch block(s)
94
+ *
95
+ * @generated from field: optional uint32 snipers = 4;
96
+ */
97
+ snipers?: number;
98
+ /**
99
+ * Wallets that bought through bundled launch transactions
100
+ *
101
+ * @generated from field: optional uint32 bundlers = 5;
102
+ */
103
+ bundlers?: number;
104
+ /**
105
+ * Wallets linked to the creator that hold the token
106
+ *
107
+ * @generated from field: optional uint32 insiders = 6;
108
+ */
109
+ insiders?: number;
110
+ /**
111
+ * Vendor trending score, a unitless relative ranking
112
+ *
113
+ * @generated from field: optional double trending_score = 7;
114
+ */
115
+ trendingScore?: number;
116
+ /**
117
+ * When the vendor was last polled for this block
118
+ *
119
+ * @generated from field: Timestamp polled_at = 8;
120
+ */
121
+ polledAt?: Timestamp;
122
+ /**
123
+ * Price change over the last 5 minutes and the last hour as the vendor
124
+ * reports it, as of polled_at, as FRACTIONS of the earlier price: 0.18 is
125
+ * +18%, -0.5 is -50%. Absent when the vendor had no figure.
126
+ *
127
+ * @generated from field: optional double change_5m = 9;
128
+ */
129
+ change5m?: number;
130
+ /**
131
+ * @generated from field: optional double change_1h = 10;
132
+ */
133
+ change1h?: number;
134
+ };
135
+ /**
136
+ * Describes the message TokenAnalytics.
137
+ * Use `create(TokenAnalyticsSchema)` to create a new message.
138
+ */
139
+ export declare const TokenAnalyticsSchema: GenMessage<TokenAnalytics>;
140
+ /**
141
+ * Social links published for the token, absolute http or https URLs. The
142
+ * block is absent while no links are known; inside a present block an empty
143
+ * string means the token publishes no such link.
144
+ *
145
+ * @generated from message TokenSocials
146
+ */
147
+ export type TokenSocials = Message<"TokenSocials"> & {
148
+ /**
149
+ * @generated from field: string twitter = 1;
150
+ */
151
+ twitter: string;
152
+ /**
153
+ * @generated from field: string telegram = 2;
154
+ */
155
+ telegram: string;
156
+ /**
157
+ * @generated from field: string website = 3;
158
+ */
159
+ website: string;
160
+ };
161
+ /**
162
+ * Describes the message TokenSocials.
163
+ * Use `create(TokenSocialsSchema)` to create a new message.
164
+ */
165
+ export declare const TokenSocialsSchema: GenMessage<TokenSocials>;
46
166
  /**
47
167
  * Identity and lifecycle snapshot of a launchpad token (memecoin) as observed
48
168
  * on chain. Every token of a chain rides one MEMECOIN_TOKEN_STATE series whose symbol
49
169
  * is the chain slug, so a client subscribes once and receives new and
50
170
  * graduating tokens as they appear. market_symbol names the TRADE series of
51
171
  * the token's current venue on the same exchange. Derived USD fields and the
52
- * stats windows are zero when the producer cannot value them.
172
+ * stats windows are zero when the producer cannot value them. The analytics
173
+ * and socials blocks follow a different rule: absent when unknown; inside a
174
+ * present analytics block each metric is absent when unknown and measured
175
+ * when present (zero included), and inside a present socials block an empty
176
+ * string means the token publishes no such link.
53
177
  *
54
178
  * @generated from message MemecoinTokenState
55
179
  */
@@ -131,7 +255,8 @@ export type MemecoinTokenState = Message<"MemecoinTokenState"> & {
131
255
  */
132
256
  graduationPct: number;
133
257
  /**
134
- * Protocol plus creator fee on the current venue, basis points
258
+ * Every fee a swap pays on the current venue (protocol, creator and LP fee
259
+ * included), basis points
135
260
  *
136
261
  * @generated from field: uint32 tax_bps = 15;
137
262
  */
@@ -181,6 +306,32 @@ export type MemecoinTokenState = Message<"MemecoinTokenState"> & {
181
306
  * @generated from field: double quote_usd = 25;
182
307
  */
183
308
  quoteUsd: number;
309
+ /**
310
+ * Shorter and longer windows beside stats_1h and stats_24h, under the same
311
+ * TokenStats rule: counts are real, USD figures are zero when unknown (for
312
+ * example the quote token had no fresh USD mark). A window is absent while
313
+ * the producer has not computed it.
314
+ *
315
+ * @generated from field: TokenStats stats_5m = 26;
316
+ */
317
+ stats5m?: TokenStats;
318
+ /**
319
+ * @generated from field: TokenStats stats_4h = 27;
320
+ */
321
+ stats4h?: TokenStats;
322
+ /**
323
+ * Absent until the first analytics poll; see TokenAnalytics for the
324
+ * per-metric presence rule
325
+ *
326
+ * @generated from field: TokenAnalytics analytics = 28;
327
+ */
328
+ analytics?: TokenAnalytics;
329
+ /**
330
+ * Absent while no social links are known
331
+ *
332
+ * @generated from field: TokenSocials socials = 29;
333
+ */
334
+ socials?: TokenSocials;
184
335
  };
185
336
  /**
186
337
  * Describes the message MemecoinTokenState.
@@ -1 +1 @@
1
- {"version":3,"file":"memecoin_token_state_pb.d.ts","sourceRoot":"","sources":["../src/gen/memecoin_token_state_pb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,OACqjC,CAAC;AAE9lC;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG;IAC/C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,UAAU,CACT,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAAG;IAC/D;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,UAAU,CAAC;IAElB;;;;OAIG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,UAAU,CAAC,kBAAkB,CACzB,CAAC"}
1
+ {"version":3,"file":"memecoin_token_state_pb.d.ts","sourceRoot":"","sources":["../src/gen/memecoin_token_state_pb.ts"],"names":[],"mappings":"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"}
@@ -7,14 +7,24 @@ import { file_enums } from "./enums_pb.js";
7
7
  /**
8
8
  * Describes the file memecoin_token_state.proto.
9
9
  */
10
- export const file_memecoin_token_state = /*@__PURE__*/ fileDesc("ChptZW1lY29pbl90b2tlbl9zdGF0ZS5wcm90byJ8CgpUb2tlblN0YXRzEhIKCnZvbHVtZV91c2QYASABKAESDgoGdHJhZGVzGAIgASgNEgwKBGJ1eXMYAyABKA0SDQoFc2VsbHMYBCABKA0SFQoNdW5pcXVlX2J1eWVycxgFIAEoDRIWCg51bmlxdWVfc2VsbGVycxgGIAEoDSLsBAoSTWVtZWNvaW5Ub2tlblN0YXRlEh0KCXRpbWVzdGFtcBgBIAEoCzIKLlRpbWVzdGFtcBIPCgdhZGRyZXNzGAIgASgJEg4KBnN5bWJvbBgDIAEoCRIMCgRuYW1lGAQgASgJEhQKDG1ldGFkYXRhX3VyaRgFIAEoCRIQCghkZWNpbWFscxgGIAEoDRIPCgdjcmVhdG9yGAcgASgJEhEKCWxhdW5jaHBhZBgIIAEoCRIaCgVwaGFzZRgJIAEoDjILLlRva2VuUGhhc2USJAoNcG9vbF9wcm90b2NvbBgKIAEoDjINLlBvb2xQcm90b2NvbBIVCg12ZW51ZV9hZGRyZXNzGAsgASgJEhsKE3F1b3RlX3Rva2VuX2FkZHJlc3MYDCABKAkSFQoNbWFya2V0X3N5bWJvbBgNIAEoCRIWCg5ncmFkdWF0aW9uX3BjdBgOIAEoARIPCgd0YXhfYnBzGA8gASgNEg4KBnN1cHBseRgQIAEoCRIfCgtsYXVuY2hlZF9hdBgRIAEoCzIKLlRpbWVzdGFtcBIgCgxjb21wbGV0ZWRfYXQYEiABKAsyCi5UaW1lc3RhbXASHwoLbWlncmF0ZWRfYXQYEyABKAsyCi5UaW1lc3RhbXASEQoJcHJpY2VfdXNkGBQgASgBEhYKDm1hcmtldF9jYXBfdXNkGBUgASgBEhUKDWxpcXVpZGl0eV91c2QYFiABKAESHQoIc3RhdHNfMWgYFyABKAsyCy5Ub2tlblN0YXRzEh4KCXN0YXRzXzI0aBgYIAEoCzILLlRva2VuU3RhdHMSEQoJcXVvdGVfdXNkGBkgASgBQgpaCHR5cGVzL3BiYgZwcm90bzM", [file_timestamp_timestamp, file_enums]);
10
+ export const file_memecoin_token_state = /*@__PURE__*/ fileDesc("ChptZW1lY29pbl90b2tlbl9zdGF0ZS5wcm90byKtAQoKVG9rZW5TdGF0cxISCgp2b2x1bWVfdXNkGAEgASgBEg4KBnRyYWRlcxgCIAEoDRIMCgRidXlzGAMgASgNEg0KBXNlbGxzGAQgASgNEhUKDXVuaXF1ZV9idXllcnMYBSABKA0SFgoOdW5pcXVlX3NlbGxlcnMYBiABKA0SFgoOYnV5X3ZvbHVtZV91c2QYByABKAESFwoPc2VsbF92b2x1bWVfdXNkGAggASgBIpkDCg5Ub2tlbkFuYWx5dGljcxIUCgdob2xkZXJzGAEgASgNSACIAQESHgoRdG9wMTBfaG9sZGVyc19wY3QYAiABKAFIAYgBARIZCgxkZXZfaGVsZF9wY3QYAyABKAFIAogBARIUCgdzbmlwZXJzGAQgASgNSAOIAQESFQoIYnVuZGxlcnMYBSABKA1IBIgBARIVCghpbnNpZGVycxgGIAEoDUgFiAEBEhsKDnRyZW5kaW5nX3Njb3JlGAcgASgBSAaIAQESHQoJcG9sbGVkX2F0GAggASgLMgouVGltZXN0YW1wEhYKCWNoYW5nZV81bRgJIAEoAUgHiAEBEhYKCWNoYW5nZV8xaBgKIAEoAUgIiAEBQgoKCF9ob2xkZXJzQhQKEl90b3AxMF9ob2xkZXJzX3BjdEIPCg1fZGV2X2hlbGRfcGN0QgoKCF9zbmlwZXJzQgsKCV9idW5kbGVyc0ILCglfaW5zaWRlcnNCEQoPX3RyZW5kaW5nX3Njb3JlQgwKCl9jaGFuZ2VfNW1CDAoKX2NoYW5nZV8xaCJCCgxUb2tlblNvY2lhbHMSDwoHdHdpdHRlchgBIAEoCRIQCgh0ZWxlZ3JhbRgCIAEoCRIPCgd3ZWJzaXRlGAMgASgJIu4FChJNZW1lY29pblRva2VuU3RhdGUSHQoJdGltZXN0YW1wGAEgASgLMgouVGltZXN0YW1wEg8KB2FkZHJlc3MYAiABKAkSDgoGc3ltYm9sGAMgASgJEgwKBG5hbWUYBCABKAkSFAoMbWV0YWRhdGFfdXJpGAUgASgJEhAKCGRlY2ltYWxzGAYgASgNEg8KB2NyZWF0b3IYByABKAkSEQoJbGF1bmNocGFkGAggASgJEhoKBXBoYXNlGAkgASgOMgsuVG9rZW5QaGFzZRIkCg1wb29sX3Byb3RvY29sGAogASgOMg0uUG9vbFByb3RvY29sEhUKDXZlbnVlX2FkZHJlc3MYCyABKAkSGwoTcXVvdGVfdG9rZW5fYWRkcmVzcxgMIAEoCRIVCg1tYXJrZXRfc3ltYm9sGA0gASgJEhYKDmdyYWR1YXRpb25fcGN0GA4gASgBEg8KB3RheF9icHMYDyABKA0SDgoGc3VwcGx5GBAgASgJEh8KC2xhdW5jaGVkX2F0GBEgASgLMgouVGltZXN0YW1wEiAKDGNvbXBsZXRlZF9hdBgSIAEoCzIKLlRpbWVzdGFtcBIfCgttaWdyYXRlZF9hdBgTIAEoCzIKLlRpbWVzdGFtcBIRCglwcmljZV91c2QYFCABKAESFgoObWFya2V0X2NhcF91c2QYFSABKAESFQoNbGlxdWlkaXR5X3VzZBgWIAEoARIdCghzdGF0c18xaBgXIAEoCzILLlRva2VuU3RhdHMSHgoJc3RhdHNfMjRoGBggASgLMgsuVG9rZW5TdGF0cxIRCglxdW90ZV91c2QYGSABKAESHQoIc3RhdHNfNW0YGiABKAsyCy5Ub2tlblN0YXRzEh0KCHN0YXRzXzRoGBsgASgLMgsuVG9rZW5TdGF0cxIiCglhbmFseXRpY3MYHCABKAsyDy5Ub2tlbkFuYWx5dGljcxIeCgdzb2NpYWxzGB0gASgLMg0uVG9rZW5Tb2NpYWxzQgpaCHR5cGVzL3BiYgZwcm90bzM", [file_timestamp_timestamp, file_enums]);
11
11
  /**
12
12
  * Describes the message TokenStats.
13
13
  * Use `create(TokenStatsSchema)` to create a new message.
14
14
  */
15
15
  export const TokenStatsSchema = /*@__PURE__*/ messageDesc(file_memecoin_token_state, 0);
16
+ /**
17
+ * Describes the message TokenAnalytics.
18
+ * Use `create(TokenAnalyticsSchema)` to create a new message.
19
+ */
20
+ export const TokenAnalyticsSchema = /*@__PURE__*/ messageDesc(file_memecoin_token_state, 1);
21
+ /**
22
+ * Describes the message TokenSocials.
23
+ * Use `create(TokenSocialsSchema)` to create a new message.
24
+ */
25
+ export const TokenSocialsSchema = /*@__PURE__*/ messageDesc(file_memecoin_token_state, 2);
16
26
  /**
17
27
  * Describes the message MemecoinTokenState.
18
28
  * Use `create(MemecoinTokenStateSchema)` to create a new message.
19
29
  */
20
- export const MemecoinTokenStateSchema = /*@__PURE__*/ messageDesc(file_memecoin_token_state, 1);
30
+ export const MemecoinTokenStateSchema = /*@__PURE__*/ messageDesc(file_memecoin_token_state, 3);
@@ -2,7 +2,7 @@ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobu
2
2
  import type { HttpBodySchema } from "../google/api/httpbody_pb.js";
3
3
  import type { Timestamp } from "../timestamp/timestamp_pb.js";
4
4
  import type { EmptySchema } from "../empty_pb.js";
5
- import type { AggregationInterval, AssetClass, Category, Chain, Exchange, FredCategory, FredSeasonalAdjustment, FredUnit, FredUpdateFrequency, FundGroup, GetGapsCountIdentifier, Granularity, Issuer, OptionType, OrderSize, PolymarketAnalyticSortField, PolymarketAnalyticType, PolymarketDistributionBandPreset, PolymarketDistributionRankBy, PolymarketPnlComponent, PoolProtocol, PositionStatus, RateKind, Representation, SectorMainCategory, SectorSubCategory, Side, SkewKind, SortDirection, Source, Tenor, TPOSession, TradingHour, TradingHoursMode, Type, VipLevel } from "../enums_pb.js";
5
+ import type { AggregationInterval, AssetClass, Category, Chain, Exchange, FredCategory, FredSeasonalAdjustment, FredUnit, FredUpdateFrequency, FundGroup, GetGapsCountIdentifier, Granularity, Issuer, MemecoinAnalyticSortField, MemecoinAnalyticType, OptionType, OrderSize, PolymarketAnalyticSortField, PolymarketAnalyticType, PolymarketDistributionBandPreset, PolymarketDistributionRankBy, PolymarketPnlComponent, PoolProtocol, PositionStatus, RateKind, Representation, SectorMainCategory, SectorSubCategory, Side, SkewKind, SortDirection, Source, Tenor, TPOSession, TradingHour, TradingHoursMode, Type, VipLevel } from "../enums_pb.js";
6
6
  import type { PongMessage } from "../ping_pong_pb.js";
7
7
  import type { TimeSeries, TimeSeriesSchema } from "../series_pb.js";
8
8
  import type { GroupByType, Transform } from "../transform_pb.js";
@@ -1680,10 +1680,11 @@ export type GetOptionChainSummaryRequest = Message<"GetOptionChainSummaryRequest
1680
1680
  export declare const GetOptionChainSummaryRequestSchema: GenMessage<GetOptionChainSummaryRequest>;
1681
1681
  /**
1682
1682
  * OptionChainQuote is one side's latest quote: the newest OPTION_SUMMARY
1683
- * row of the instrument plus its volume for the current UTC day. Every
1684
- * market field is optional because venues (and the CME settlement
1685
- * synthesis) fill different subsets; absent means the venue did not report
1686
- * it.
1683
+ * row of the instrument plus its volume for the current trading day: the
1684
+ * session from the 17:00 America/Chicago open on CME Group venues, the UTC
1685
+ * day elsewhere. Every market field is optional because venues (and the CME
1686
+ * settlement synthesis) fill different subsets; absent means the venue did
1687
+ * not report it.
1687
1688
  *
1688
1689
  * @generated from message OptionChainQuote
1689
1690
  */
@@ -1783,6 +1784,15 @@ export type OptionChainQuote = Message<"OptionChainQuote"> & {
1783
1784
  * @generated from field: int64 settlementDate = 21;
1784
1785
  */
1785
1786
  settlementDate: bigint;
1787
+ /**
1788
+ * The contract's display title, e.g. "E-mini S&P 500 Tuesday Weekly
1789
+ * Options - Week 5 29 Sep 2026 Call 7750"; absent when the contract's
1790
+ * product is not catalogued (only CME Group options are, today). Per side
1791
+ * rather than per expiry: series sharing an expiry carry different names.
1792
+ *
1793
+ * @generated from field: optional string fullName = 22;
1794
+ */
1795
+ fullName?: string;
1786
1796
  };
1787
1797
  /**
1788
1798
  * Describes the message OptionChainQuote.
@@ -2762,6 +2772,17 @@ export type RPCResponse = Message<"RPCResponse"> & {
2762
2772
  * @generated from field: repeated MarketStats marketStats = 41;
2763
2773
  */
2764
2774
  marketStats: MarketStats[];
2775
+ /**
2776
+ * StreamMemecoinAnalytics answers, one list per MemecoinAnalyticType,
2777
+ * flattened like the Polymarket analytics lists above.
2778
+ *
2779
+ * @generated from field: repeated MemecoinTraderProfile memecoinTraderProfiles = 42;
2780
+ */
2781
+ memecoinTraderProfiles: MemecoinTraderProfile[];
2782
+ /**
2783
+ * @generated from field: repeated MemecoinTokenHolder memecoinTokenHolders = 43;
2784
+ */
2785
+ memecoinTokenHolders: MemecoinTokenHolder[];
2765
2786
  };
2766
2787
  /**
2767
2788
  * Describes the message RPCResponse.
@@ -5474,6 +5495,219 @@ export type GetPolymarketAnalyticsResponse = Message<"GetPolymarketAnalyticsResp
5474
5495
  * Use `create(GetPolymarketAnalyticsResponseSchema)` to create a new message.
5475
5496
  */
5476
5497
  export declare const GetPolymarketAnalyticsResponseSchema: GenMessage<GetPolymarketAnalyticsResponse>;
5498
+ /**
5499
+ * @generated from message GetMemecoinAnalyticsRequest
5500
+ */
5501
+ export type GetMemecoinAnalyticsRequest = Message<"GetMemecoinAnalyticsRequest"> & {
5502
+ /**
5503
+ * @generated from field: MemecoinAnalyticType type = 1;
5504
+ */
5505
+ type: MemecoinAnalyticType;
5506
+ /**
5507
+ * @generated from field: Chain chain = 2;
5508
+ */
5509
+ chain: Chain;
5510
+ /**
5511
+ * The token's mint or contract address. Keyed by token, not by one venue
5512
+ * symbol: every venue of the mint (bonding curve and the pools it migrated
5513
+ * to) counts, since a trader's cost basis spans them.
5514
+ *
5515
+ * @generated from field: string token_address = 3;
5516
+ */
5517
+ tokenAddress: string;
5518
+ /**
5519
+ * Only these wallets' rows (a user's own position); empty = every wallet.
5520
+ *
5521
+ * @generated from field: repeated string user_wallet = 4;
5522
+ */
5523
+ userWallet: string[];
5524
+ /**
5525
+ * Pagination over the ranked list; limit absent = 50, at most 200.
5526
+ *
5527
+ * @generated from field: optional int64 offset = 5;
5528
+ */
5529
+ offset?: bigint;
5530
+ /**
5531
+ * @generated from field: optional int64 limit = 6;
5532
+ */
5533
+ limit?: bigint;
5534
+ /**
5535
+ * Ranking; absent = the type's default (LIST_TRADERS: realized PnL
5536
+ * descending; LIST_HOLDERS: balance descending). Ties break by wallet
5537
+ * ascending. A sort field the type does not support is an error.
5538
+ *
5539
+ * @generated from field: optional MemecoinAnalyticSortField sort_by = 7;
5540
+ */
5541
+ sortBy?: MemecoinAnalyticSortField;
5542
+ /**
5543
+ * @generated from field: optional SortDirection sort_direction = 8;
5544
+ */
5545
+ sortDirection?: SortDirection;
5546
+ };
5547
+ /**
5548
+ * Describes the message GetMemecoinAnalyticsRequest.
5549
+ * Use `create(GetMemecoinAnalyticsRequestSchema)` to create a new message.
5550
+ */
5551
+ export declare const GetMemecoinAnalyticsRequestSchema: GenMessage<GetMemecoinAnalyticsRequest>;
5552
+ /**
5553
+ * One wallet's aggregate over every fill the gateway still stores for a token,
5554
+ * across all venues of its mint (MEMECOIN_ANALYTICS_LIST_TRADERS). Raw swap
5555
+ * retention is short (currently about 2 days), so these are lifetime figures
5556
+ * only for a token younger than that. Token amounts are whole tokens as decimal
5557
+ * strings (mint decimals applied); USD amounts are valued at each fill's
5558
+ * quote_usd, and only fills with a quote_usd are priced. Every number is
5559
+ * finite: the gateway never emits NaN or Inf.
5560
+ *
5561
+ * @generated from message MemecoinTraderProfile
5562
+ */
5563
+ export type MemecoinTraderProfile = Message<"MemecoinTraderProfile"> & {
5564
+ /**
5565
+ * @generated from field: string wallet_address = 1;
5566
+ */
5567
+ walletAddress: string;
5568
+ /**
5569
+ * @generated from field: double total_bought_usd = 2;
5570
+ */
5571
+ totalBoughtUsd: number;
5572
+ /**
5573
+ * @generated from field: double total_sold_usd = 3;
5574
+ */
5575
+ totalSoldUsd: number;
5576
+ /**
5577
+ * Whole tokens, decimal string, every stored fill
5578
+ *
5579
+ * @generated from field: string tokens_bought = 4;
5580
+ */
5581
+ tokensBought: string;
5582
+ /**
5583
+ * @generated from field: string tokens_sold = 5;
5584
+ */
5585
+ tokensSold: string;
5586
+ /**
5587
+ * tokens_bought - tokens_sold floored at 0, whole tokens, decimal string
5588
+ *
5589
+ * @generated from field: string remaining_tokens = 6;
5590
+ */
5591
+ remainingTokens: string;
5592
+ /**
5593
+ * @generated from field: int64 buy_count = 7;
5594
+ */
5595
+ buyCount: bigint;
5596
+ /**
5597
+ * @generated from field: int64 sell_count = 8;
5598
+ */
5599
+ sellCount: bigint;
5600
+ /**
5601
+ * First and last stored fill of the wallet for the token, unix seconds, UTC
5602
+ *
5603
+ * @generated from field: int64 first_trade_ts = 9;
5604
+ */
5605
+ firstTradeTs: bigint;
5606
+ /**
5607
+ * @generated from field: int64 latest_trade_ts = 10;
5608
+ */
5609
+ latestTradeTs: bigint;
5610
+ /**
5611
+ * Average USD paid per token over the priced buys; 0 when none was priced
5612
+ *
5613
+ * @generated from field: double avg_buy_price_usd = 11;
5614
+ */
5615
+ avgBuyPriceUsd: number;
5616
+ /**
5617
+ * Realized PnL on matched priced tokens: matched = min(priced tokens sold,
5618
+ * priced tokens bought) and total_realized_pnl = matched x (average sell
5619
+ * price - average buy price), both averages over the priced fills. Tokens
5620
+ * sold beyond those bought add nothing, so an incomplete cost basis never
5621
+ * reads as a gain.
5622
+ *
5623
+ * @generated from field: double total_realized_pnl = 12;
5624
+ */
5625
+ totalRealizedPnl: number;
5626
+ /**
5627
+ * (average sell price / average buy price - 1) x 100; 0 when nothing priced
5628
+ * was both bought and sold.
5629
+ *
5630
+ * @generated from field: double total_roi = 13;
5631
+ */
5632
+ totalRoi: number;
5633
+ /**
5634
+ * PARTIAL_BASIS when the stored fills cannot carry the wallet's whole cost
5635
+ * basis (tokens sold beyond those bought, or an unpriced fill).
5636
+ *
5637
+ * @generated from field: repeated string labels = 14;
5638
+ */
5639
+ labels: string[];
5640
+ };
5641
+ /**
5642
+ * Describes the message MemecoinTraderProfile.
5643
+ * Use `create(MemecoinTraderProfileSchema)` to create a new message.
5644
+ */
5645
+ export declare const MemecoinTraderProfileSchema: GenMessage<MemecoinTraderProfile>;
5646
+ /**
5647
+ * One holder of a token (MEMECOIN_ANALYTICS_LIST_HOLDERS). Not served yet: the
5648
+ * gateway answers LIST_HOLDERS with UNIMPLEMENTED until a holder source lands.
5649
+ *
5650
+ * @generated from message MemecoinTokenHolder
5651
+ */
5652
+ export type MemecoinTokenHolder = Message<"MemecoinTokenHolder"> & {
5653
+ /**
5654
+ * @generated from field: string wallet_address = 1;
5655
+ */
5656
+ walletAddress: string;
5657
+ /**
5658
+ * Whole tokens, decimal string
5659
+ *
5660
+ * @generated from field: string balance = 2;
5661
+ */
5662
+ balance: string;
5663
+ /**
5664
+ * @generated from field: double balance_usd = 3;
5665
+ */
5666
+ balanceUsd: number;
5667
+ /**
5668
+ * Share of supply, 0-100
5669
+ *
5670
+ * @generated from field: double pct_of_supply = 4;
5671
+ */
5672
+ pctOfSupply: number;
5673
+ /**
5674
+ * When the wallet first held the token, unix seconds, UTC; 0 when unknown
5675
+ *
5676
+ * @generated from field: int64 first_held_ts = 5;
5677
+ */
5678
+ firstHeldTs: bigint;
5679
+ /**
5680
+ * @generated from field: HolderCategory category = 6;
5681
+ */
5682
+ category: HolderCategory;
5683
+ };
5684
+ /**
5685
+ * Describes the message MemecoinTokenHolder.
5686
+ * Use `create(MemecoinTokenHolderSchema)` to create a new message.
5687
+ */
5688
+ export declare const MemecoinTokenHolderSchema: GenMessage<MemecoinTokenHolder>;
5689
+ /**
5690
+ * @generated from message GetMemecoinAnalyticsResponse
5691
+ */
5692
+ export type GetMemecoinAnalyticsResponse = Message<"GetMemecoinAnalyticsResponse"> & {
5693
+ /**
5694
+ * MEMECOIN_ANALYTICS_LIST_TRADERS
5695
+ *
5696
+ * @generated from field: repeated MemecoinTraderProfile trader_profiles = 1;
5697
+ */
5698
+ traderProfiles: MemecoinTraderProfile[];
5699
+ /**
5700
+ * MEMECOIN_ANALYTICS_LIST_HOLDERS
5701
+ *
5702
+ * @generated from field: repeated MemecoinTokenHolder holders = 2;
5703
+ */
5704
+ holders: MemecoinTokenHolder[];
5705
+ };
5706
+ /**
5707
+ * Describes the message GetMemecoinAnalyticsResponse.
5708
+ * Use `create(GetMemecoinAnalyticsResponseSchema)` to create a new message.
5709
+ */
5710
+ export declare const GetMemecoinAnalyticsResponseSchema: GenMessage<GetMemecoinAnalyticsResponse>;
5477
5711
  /**
5478
5712
  * @generated from message GetPolymarketCategoriesResponse
5479
5713
  */
@@ -5866,6 +6100,35 @@ export declare enum OptionChainTiming {
5866
6100
  * Describes the enum OptionChainTiming.
5867
6101
  */
5868
6102
  export declare const OptionChainTimingSchema: GenEnum<OptionChainTiming>;
6103
+ /**
6104
+ * @generated from enum HolderCategory
6105
+ */
6106
+ export declare enum HolderCategory {
6107
+ /**
6108
+ * @generated from enum value: HOLDER_CATEGORY_UNSPECIFIED = 0;
6109
+ */
6110
+ UNSPECIFIED = 0,
6111
+ /**
6112
+ * Liquidity pool or bonding curve account
6113
+ *
6114
+ * @generated from enum value: HOLDER_CATEGORY_POOL = 1;
6115
+ */
6116
+ POOL = 1,
6117
+ /**
6118
+ * The wallet that launched the token
6119
+ *
6120
+ * @generated from enum value: HOLDER_CATEGORY_CREATOR = 2;
6121
+ */
6122
+ CREATOR = 2,
6123
+ /**
6124
+ * @generated from enum value: HOLDER_CATEGORY_NORMAL = 3;
6125
+ */
6126
+ NORMAL = 3
6127
+ }
6128
+ /**
6129
+ * Describes the enum HolderCategory.
6130
+ */
6131
+ export declare const HolderCategorySchema: GenEnum<HolderCategory>;
5869
6132
  /**
5870
6133
  * tsdb-gateway is a service that provides access to a time-series database.
5871
6134
  *
@@ -6273,6 +6536,26 @@ export declare const Gateway: GenService<{
6273
6536
  input: typeof GetPolymarketAnalyticsRequestSchema;
6274
6537
  output: typeof GetPolymarketAnalyticsResponseSchema;
6275
6538
  };
6539
+ /**
6540
+ * GetMemecoinAnalytics answers the token-page analytics of the memecoin
6541
+ * lane, one MemecoinAnalyticType per request, the way GetPolymarketAnalytics
6542
+ * does for Polymarket: the response carries the list of the requested type.
6543
+ *
6544
+ * @generated from rpc Gateway.GetMemecoinAnalytics
6545
+ */
6546
+ getMemecoinAnalytics: {
6547
+ methodKind: "unary";
6548
+ input: typeof GetMemecoinAnalyticsRequestSchema;
6549
+ output: typeof GetMemecoinAnalyticsResponseSchema;
6550
+ };
6551
+ /**
6552
+ * @generated from rpc Gateway.StreamMemecoinAnalytics
6553
+ */
6554
+ streamMemecoinAnalytics: {
6555
+ methodKind: "server_streaming";
6556
+ input: typeof GetMemecoinAnalyticsRequestSchema;
6557
+ output: typeof GetMemecoinAnalyticsResponseSchema;
6558
+ };
6276
6559
  /**
6277
6560
  * @generated from rpc Gateway.GetLatestSnapshots
6278
6561
  */