@openmarket/market-data-proto 12.60.0 → 12.61.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";
@@ -2762,6 +2762,17 @@ export type RPCResponse = Message<"RPCResponse"> & {
2762
2762
  * @generated from field: repeated MarketStats marketStats = 41;
2763
2763
  */
2764
2764
  marketStats: MarketStats[];
2765
+ /**
2766
+ * StreamMemecoinAnalytics answers, one list per MemecoinAnalyticType,
2767
+ * flattened like the Polymarket analytics lists above.
2768
+ *
2769
+ * @generated from field: repeated MemecoinTraderProfile memecoinTraderProfiles = 42;
2770
+ */
2771
+ memecoinTraderProfiles: MemecoinTraderProfile[];
2772
+ /**
2773
+ * @generated from field: repeated MemecoinTokenHolder memecoinTokenHolders = 43;
2774
+ */
2775
+ memecoinTokenHolders: MemecoinTokenHolder[];
2765
2776
  };
2766
2777
  /**
2767
2778
  * Describes the message RPCResponse.
@@ -5474,6 +5485,219 @@ export type GetPolymarketAnalyticsResponse = Message<"GetPolymarketAnalyticsResp
5474
5485
  * Use `create(GetPolymarketAnalyticsResponseSchema)` to create a new message.
5475
5486
  */
5476
5487
  export declare const GetPolymarketAnalyticsResponseSchema: GenMessage<GetPolymarketAnalyticsResponse>;
5488
+ /**
5489
+ * @generated from message GetMemecoinAnalyticsRequest
5490
+ */
5491
+ export type GetMemecoinAnalyticsRequest = Message<"GetMemecoinAnalyticsRequest"> & {
5492
+ /**
5493
+ * @generated from field: MemecoinAnalyticType type = 1;
5494
+ */
5495
+ type: MemecoinAnalyticType;
5496
+ /**
5497
+ * @generated from field: Chain chain = 2;
5498
+ */
5499
+ chain: Chain;
5500
+ /**
5501
+ * The token's mint or contract address. Keyed by token, not by one venue
5502
+ * symbol: every venue of the mint (bonding curve and the pools it migrated
5503
+ * to) counts, since a trader's cost basis spans them.
5504
+ *
5505
+ * @generated from field: string token_address = 3;
5506
+ */
5507
+ tokenAddress: string;
5508
+ /**
5509
+ * Only these wallets' rows (a user's own position); empty = every wallet.
5510
+ *
5511
+ * @generated from field: repeated string user_wallet = 4;
5512
+ */
5513
+ userWallet: string[];
5514
+ /**
5515
+ * Pagination over the ranked list; limit absent = 50, at most 200.
5516
+ *
5517
+ * @generated from field: optional int64 offset = 5;
5518
+ */
5519
+ offset?: bigint;
5520
+ /**
5521
+ * @generated from field: optional int64 limit = 6;
5522
+ */
5523
+ limit?: bigint;
5524
+ /**
5525
+ * Ranking; absent = the type's default (LIST_TRADERS: realized PnL
5526
+ * descending; LIST_HOLDERS: balance descending). Ties break by wallet
5527
+ * ascending. A sort field the type does not support is an error.
5528
+ *
5529
+ * @generated from field: optional MemecoinAnalyticSortField sort_by = 7;
5530
+ */
5531
+ sortBy?: MemecoinAnalyticSortField;
5532
+ /**
5533
+ * @generated from field: optional SortDirection sort_direction = 8;
5534
+ */
5535
+ sortDirection?: SortDirection;
5536
+ };
5537
+ /**
5538
+ * Describes the message GetMemecoinAnalyticsRequest.
5539
+ * Use `create(GetMemecoinAnalyticsRequestSchema)` to create a new message.
5540
+ */
5541
+ export declare const GetMemecoinAnalyticsRequestSchema: GenMessage<GetMemecoinAnalyticsRequest>;
5542
+ /**
5543
+ * One wallet's aggregate over every fill the gateway still stores for a token,
5544
+ * across all venues of its mint (MEMECOIN_ANALYTICS_LIST_TRADERS). Raw swap
5545
+ * retention is short (currently about 2 days), so these are lifetime figures
5546
+ * only for a token younger than that. Token amounts are whole tokens as decimal
5547
+ * strings (mint decimals applied); USD amounts are valued at each fill's
5548
+ * quote_usd, and only fills with a quote_usd are priced. Every number is
5549
+ * finite: the gateway never emits NaN or Inf.
5550
+ *
5551
+ * @generated from message MemecoinTraderProfile
5552
+ */
5553
+ export type MemecoinTraderProfile = Message<"MemecoinTraderProfile"> & {
5554
+ /**
5555
+ * @generated from field: string wallet_address = 1;
5556
+ */
5557
+ walletAddress: string;
5558
+ /**
5559
+ * @generated from field: double total_bought_usd = 2;
5560
+ */
5561
+ totalBoughtUsd: number;
5562
+ /**
5563
+ * @generated from field: double total_sold_usd = 3;
5564
+ */
5565
+ totalSoldUsd: number;
5566
+ /**
5567
+ * Whole tokens, decimal string, every stored fill
5568
+ *
5569
+ * @generated from field: string tokens_bought = 4;
5570
+ */
5571
+ tokensBought: string;
5572
+ /**
5573
+ * @generated from field: string tokens_sold = 5;
5574
+ */
5575
+ tokensSold: string;
5576
+ /**
5577
+ * tokens_bought - tokens_sold floored at 0, whole tokens, decimal string
5578
+ *
5579
+ * @generated from field: string remaining_tokens = 6;
5580
+ */
5581
+ remainingTokens: string;
5582
+ /**
5583
+ * @generated from field: int64 buy_count = 7;
5584
+ */
5585
+ buyCount: bigint;
5586
+ /**
5587
+ * @generated from field: int64 sell_count = 8;
5588
+ */
5589
+ sellCount: bigint;
5590
+ /**
5591
+ * First and last stored fill of the wallet for the token, unix seconds, UTC
5592
+ *
5593
+ * @generated from field: int64 first_trade_ts = 9;
5594
+ */
5595
+ firstTradeTs: bigint;
5596
+ /**
5597
+ * @generated from field: int64 latest_trade_ts = 10;
5598
+ */
5599
+ latestTradeTs: bigint;
5600
+ /**
5601
+ * Average USD paid per token over the priced buys; 0 when none was priced
5602
+ *
5603
+ * @generated from field: double avg_buy_price_usd = 11;
5604
+ */
5605
+ avgBuyPriceUsd: number;
5606
+ /**
5607
+ * Realized PnL on matched priced tokens: matched = min(priced tokens sold,
5608
+ * priced tokens bought) and total_realized_pnl = matched x (average sell
5609
+ * price - average buy price), both averages over the priced fills. Tokens
5610
+ * sold beyond those bought add nothing, so an incomplete cost basis never
5611
+ * reads as a gain.
5612
+ *
5613
+ * @generated from field: double total_realized_pnl = 12;
5614
+ */
5615
+ totalRealizedPnl: number;
5616
+ /**
5617
+ * (average sell price / average buy price - 1) x 100; 0 when nothing priced
5618
+ * was both bought and sold.
5619
+ *
5620
+ * @generated from field: double total_roi = 13;
5621
+ */
5622
+ totalRoi: number;
5623
+ /**
5624
+ * PARTIAL_BASIS when the stored fills cannot carry the wallet's whole cost
5625
+ * basis (tokens sold beyond those bought, or an unpriced fill).
5626
+ *
5627
+ * @generated from field: repeated string labels = 14;
5628
+ */
5629
+ labels: string[];
5630
+ };
5631
+ /**
5632
+ * Describes the message MemecoinTraderProfile.
5633
+ * Use `create(MemecoinTraderProfileSchema)` to create a new message.
5634
+ */
5635
+ export declare const MemecoinTraderProfileSchema: GenMessage<MemecoinTraderProfile>;
5636
+ /**
5637
+ * One holder of a token (MEMECOIN_ANALYTICS_LIST_HOLDERS). Not served yet: the
5638
+ * gateway answers LIST_HOLDERS with UNIMPLEMENTED until a holder source lands.
5639
+ *
5640
+ * @generated from message MemecoinTokenHolder
5641
+ */
5642
+ export type MemecoinTokenHolder = Message<"MemecoinTokenHolder"> & {
5643
+ /**
5644
+ * @generated from field: string wallet_address = 1;
5645
+ */
5646
+ walletAddress: string;
5647
+ /**
5648
+ * Whole tokens, decimal string
5649
+ *
5650
+ * @generated from field: string balance = 2;
5651
+ */
5652
+ balance: string;
5653
+ /**
5654
+ * @generated from field: double balance_usd = 3;
5655
+ */
5656
+ balanceUsd: number;
5657
+ /**
5658
+ * Share of supply, 0-100
5659
+ *
5660
+ * @generated from field: double pct_of_supply = 4;
5661
+ */
5662
+ pctOfSupply: number;
5663
+ /**
5664
+ * When the wallet first held the token, unix seconds, UTC; 0 when unknown
5665
+ *
5666
+ * @generated from field: int64 first_held_ts = 5;
5667
+ */
5668
+ firstHeldTs: bigint;
5669
+ /**
5670
+ * @generated from field: HolderCategory category = 6;
5671
+ */
5672
+ category: HolderCategory;
5673
+ };
5674
+ /**
5675
+ * Describes the message MemecoinTokenHolder.
5676
+ * Use `create(MemecoinTokenHolderSchema)` to create a new message.
5677
+ */
5678
+ export declare const MemecoinTokenHolderSchema: GenMessage<MemecoinTokenHolder>;
5679
+ /**
5680
+ * @generated from message GetMemecoinAnalyticsResponse
5681
+ */
5682
+ export type GetMemecoinAnalyticsResponse = Message<"GetMemecoinAnalyticsResponse"> & {
5683
+ /**
5684
+ * MEMECOIN_ANALYTICS_LIST_TRADERS
5685
+ *
5686
+ * @generated from field: repeated MemecoinTraderProfile trader_profiles = 1;
5687
+ */
5688
+ traderProfiles: MemecoinTraderProfile[];
5689
+ /**
5690
+ * MEMECOIN_ANALYTICS_LIST_HOLDERS
5691
+ *
5692
+ * @generated from field: repeated MemecoinTokenHolder holders = 2;
5693
+ */
5694
+ holders: MemecoinTokenHolder[];
5695
+ };
5696
+ /**
5697
+ * Describes the message GetMemecoinAnalyticsResponse.
5698
+ * Use `create(GetMemecoinAnalyticsResponseSchema)` to create a new message.
5699
+ */
5700
+ export declare const GetMemecoinAnalyticsResponseSchema: GenMessage<GetMemecoinAnalyticsResponse>;
5477
5701
  /**
5478
5702
  * @generated from message GetPolymarketCategoriesResponse
5479
5703
  */
@@ -5866,6 +6090,35 @@ export declare enum OptionChainTiming {
5866
6090
  * Describes the enum OptionChainTiming.
5867
6091
  */
5868
6092
  export declare const OptionChainTimingSchema: GenEnum<OptionChainTiming>;
6093
+ /**
6094
+ * @generated from enum HolderCategory
6095
+ */
6096
+ export declare enum HolderCategory {
6097
+ /**
6098
+ * @generated from enum value: HOLDER_CATEGORY_UNSPECIFIED = 0;
6099
+ */
6100
+ UNSPECIFIED = 0,
6101
+ /**
6102
+ * Liquidity pool or bonding curve account
6103
+ *
6104
+ * @generated from enum value: HOLDER_CATEGORY_POOL = 1;
6105
+ */
6106
+ POOL = 1,
6107
+ /**
6108
+ * The wallet that launched the token
6109
+ *
6110
+ * @generated from enum value: HOLDER_CATEGORY_CREATOR = 2;
6111
+ */
6112
+ CREATOR = 2,
6113
+ /**
6114
+ * @generated from enum value: HOLDER_CATEGORY_NORMAL = 3;
6115
+ */
6116
+ NORMAL = 3
6117
+ }
6118
+ /**
6119
+ * Describes the enum HolderCategory.
6120
+ */
6121
+ export declare const HolderCategorySchema: GenEnum<HolderCategory>;
5869
6122
  /**
5870
6123
  * tsdb-gateway is a service that provides access to a time-series database.
5871
6124
  *
@@ -6273,6 +6526,26 @@ export declare const Gateway: GenService<{
6273
6526
  input: typeof GetPolymarketAnalyticsRequestSchema;
6274
6527
  output: typeof GetPolymarketAnalyticsResponseSchema;
6275
6528
  };
6529
+ /**
6530
+ * GetMemecoinAnalytics answers the token-page analytics of the memecoin
6531
+ * lane, one MemecoinAnalyticType per request, the way GetPolymarketAnalytics
6532
+ * does for Polymarket: the response carries the list of the requested type.
6533
+ *
6534
+ * @generated from rpc Gateway.GetMemecoinAnalytics
6535
+ */
6536
+ getMemecoinAnalytics: {
6537
+ methodKind: "unary";
6538
+ input: typeof GetMemecoinAnalyticsRequestSchema;
6539
+ output: typeof GetMemecoinAnalyticsResponseSchema;
6540
+ };
6541
+ /**
6542
+ * @generated from rpc Gateway.StreamMemecoinAnalytics
6543
+ */
6544
+ streamMemecoinAnalytics: {
6545
+ methodKind: "server_streaming";
6546
+ input: typeof GetMemecoinAnalyticsRequestSchema;
6547
+ output: typeof GetMemecoinAnalyticsResponseSchema;
6548
+ };
6276
6549
  /**
6277
6550
  * @generated from rpc Gateway.GetLatestSnapshots
6278
6551
  */