@pidgr/proto 0.36.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.
@@ -0,0 +1,579 @@
1
+ // @generated by protoc-gen-es v2.11.0 with parameter "target=ts"
2
+ // @generated from file pidgr/v1/heatmap.proto (package pidgr.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
8
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
9
+ import type { Message } from "@bufbuild/protobuf";
10
+
11
+ /**
12
+ * Describes the file pidgr/v1/heatmap.proto.
13
+ */
14
+ export const file_pidgr_v1_heatmap: GenFile = /*@__PURE__*/
15
+ fileDesc("ChZwaWRnci92MS9oZWF0bWFwLnByb3RvEghwaWRnci52MSLQAQoKVG91Y2hFdmVudBITCgtzY3JlZW5fbmFtZRgBIAEoCRINCgV4X3BjdBgCIAEoAhINCgV5X3BjdBgDIAEoAhIsCgpldmVudF90eXBlGAQgASgOMhgucGlkZ3IudjEuVG91Y2hFdmVudFR5cGUSFAoMc2NyZWVuX3dpZHRoGAUgASgFEhUKDXNjcmVlbl9oZWlnaHQYBiABKAUSNAoQY2xpZW50X3RpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiQAoYSW5nZXN0VG91Y2hFdmVudHNSZXF1ZXN0EiQKBmV2ZW50cxgBIAMoCzIULnBpZGdyLnYxLlRvdWNoRXZlbnQiMwoZSW5nZXN0VG91Y2hFdmVudHNSZXNwb25zZRIWCg5pbmdlc3RlZF9jb3VudBgBIAEoBSI/ChBIZWF0bWFwRGF0YVBvaW50Eg0KBXhfcGN0GAEgASgCEg0KBXlfcGN0GAIgASgCEg0KBXZhbHVlGAMgASgCIkQKDlVzZXJUb3VjaENvdW50Eg8KB3VzZXJfaWQYASABKAkSDQoFY291bnQYAiABKAUSEgoKdXNlcl9lbWFpbBgDIAEoCSKdAgoXUXVlcnlIZWF0bWFwRGF0YVJlcXVlc3QSEwoLc2NyZWVuX25hbWUYASABKAkSLQoJZGF0ZV9mcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdkYXRlX3RvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtjYW1wYWlnbl9pZBgEIAEoCRIPCgd1c2VyX2lkGAUgASgJEhcKD2dyaWRfcmVzb2x1dGlvbhgGIAEoAhIjCgRtb2RlGAcgASgOMhUucGlkZ3IudjEuSGVhdG1hcE1vZGUSLQoLZXZlbnRfdHlwZXMYCCADKA4yGC5waWRnci52MS5Ub3VjaEV2ZW50VHlwZSKYAQoYUXVlcnlIZWF0bWFwRGF0YVJlc3BvbnNlEi8KC2RhdGFfcG9pbnRzGAEgAygLMhoucGlkZ3IudjEuSGVhdG1hcERhdGFQb2ludBIzChF1c2VyX3RvdWNoX2NvdW50cxgCIAMoCzIYLnBpZGdyLnYxLlVzZXJUb3VjaENvdW50EhYKDnNjcmVlbnNob3RfdXJsGAMgASgJIlcKF1VwbG9hZFNjcmVlbnNob3RSZXF1ZXN0EhMKC3NjcmVlbl9uYW1lGAEgASgJEhMKC2FwcF92ZXJzaW9uGAIgASgJEhIKCmltYWdlX2RhdGEYAyABKAwiJwoYVXBsb2FkU2NyZWVuc2hvdFJlc3BvbnNlEgsKA3VybBgBIAEoCSJJChBTY3JlZW5TY3JlZW5zaG90EhMKC3NjcmVlbl9uYW1lGAEgASgJEgsKA3VybBgCIAEoCRITCgthcHBfdmVyc2lvbhgDIAEoCSIYChZMaXN0U2NyZWVuc2hvdHNSZXF1ZXN0IkoKF0xpc3RTY3JlZW5zaG90c1Jlc3BvbnNlEi8KC3NjcmVlbnNob3RzGAEgAygLMhoucGlkZ3IudjEuU2NyZWVuU2NyZWVuc2hvdCqtAQoOVG91Y2hFdmVudFR5cGUSIAocVE9VQ0hfRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEhgKFFRPVUNIX0VWRU5UX1RZUEVfVEFQEAESHwobVE9VQ0hfRVZFTlRfVFlQRV9MT05HX1BSRVNTEAISGwoXVE9VQ0hfRVZFTlRfVFlQRV9TQ1JPTEwQAxIhCh1UT1VDSF9FVkVOVF9UWVBFX0FDVElPTl9DTElDSxAEKnwKC0hlYXRtYXBNb2RlEhwKGEhFQVRNQVBfTU9ERV9VTlNQRUNJRklFRBAAEhYKEkhFQVRNQVBfTU9ERV9UT1RBTBABEhcKE0hFQVRNQVBfTU9ERV9NRURJQU4QAhIeChpIRUFUTUFQX01PREVfVVNFUl9TUEVDSUZJQxADMvwCCg5IZWF0bWFwU2VydmljZRJcChFJbmdlc3RUb3VjaEV2ZW50cxIiLnBpZGdyLnYxLkluZ2VzdFRvdWNoRXZlbnRzUmVxdWVzdBojLnBpZGdyLnYxLkluZ2VzdFRvdWNoRXZlbnRzUmVzcG9uc2USWQoQUXVlcnlIZWF0bWFwRGF0YRIhLnBpZGdyLnYxLlF1ZXJ5SGVhdG1hcERhdGFSZXF1ZXN0GiIucGlkZ3IudjEuUXVlcnlIZWF0bWFwRGF0YVJlc3BvbnNlElYKD0xpc3RTY3JlZW5zaG90cxIgLnBpZGdyLnYxLkxpc3RTY3JlZW5zaG90c1JlcXVlc3QaIS5waWRnci52MS5MaXN0U2NyZWVuc2hvdHNSZXNwb25zZRJZChBVcGxvYWRTY3JlZW5zaG90EiEucGlkZ3IudjEuVXBsb2FkU2NyZWVuc2hvdFJlcXVlc3QaIi5waWRnci52MS5VcGxvYWRTY3JlZW5zaG90UmVzcG9uc2VCNlo0Z2l0aHViLmNvbS9waWRnci9waWRnci1wcm90by9nZW4vZ28vcGlkZ3IvdjE7cGlkZ3J2MWIGcHJvdG8z", [file_google_protobuf_timestamp]);
16
+
17
+ /**
18
+ * A single touch event captured from the mobile app.
19
+ *
20
+ * @generated from message pidgr.v1.TouchEvent
21
+ */
22
+ export type TouchEvent = Message<"pidgr.v1.TouchEvent"> & {
23
+ /**
24
+ * Screen name from React Navigation route.
25
+ * Constraints: Max length 200 characters.
26
+ *
27
+ * @generated from field: string screen_name = 1;
28
+ */
29
+ screenName: string;
30
+
31
+ /**
32
+ * Horizontal coordinate as a percentage of screen width (0.0–1.0).
33
+ * Constraints: Range 0.0 to 1.0 inclusive.
34
+ *
35
+ * @generated from field: float x_pct = 2;
36
+ */
37
+ xPct: number;
38
+
39
+ /**
40
+ * Vertical coordinate as a percentage of screen height (0.0–1.0).
41
+ * Constraints: Range 0.0 to 1.0 inclusive.
42
+ *
43
+ * @generated from field: float y_pct = 3;
44
+ */
45
+ yPct: number;
46
+
47
+ /**
48
+ * Type of touch event.
49
+ *
50
+ * @generated from field: pidgr.v1.TouchEventType event_type = 4;
51
+ */
52
+ eventType: TouchEventType;
53
+
54
+ /**
55
+ * Screen width in device pixels at the time of capture.
56
+ *
57
+ * @generated from field: int32 screen_width = 5;
58
+ */
59
+ screenWidth: number;
60
+
61
+ /**
62
+ * Screen height in device pixels at the time of capture.
63
+ *
64
+ * @generated from field: int32 screen_height = 6;
65
+ */
66
+ screenHeight: number;
67
+
68
+ /**
69
+ * Client-side timestamp when the touch occurred.
70
+ *
71
+ * @generated from field: google.protobuf.Timestamp client_timestamp = 7;
72
+ */
73
+ clientTimestamp?: Timestamp;
74
+ };
75
+
76
+ /**
77
+ * Describes the message pidgr.v1.TouchEvent.
78
+ * Use `create(TouchEventSchema)` to create a new message.
79
+ */
80
+ export const TouchEventSchema: GenMessage<TouchEvent> = /*@__PURE__*/
81
+ messageDesc(file_pidgr_v1_heatmap, 0);
82
+
83
+ /**
84
+ * Request to ingest a batch of touch events from the mobile app.
85
+ *
86
+ * @generated from message pidgr.v1.IngestTouchEventsRequest
87
+ */
88
+ export type IngestTouchEventsRequest = Message<"pidgr.v1.IngestTouchEventsRequest"> & {
89
+ /**
90
+ * Batch of touch events to ingest.
91
+ * Constraints: Max 100 events per batch.
92
+ *
93
+ * @generated from field: repeated pidgr.v1.TouchEvent events = 1;
94
+ */
95
+ events: TouchEvent[];
96
+ };
97
+
98
+ /**
99
+ * Describes the message pidgr.v1.IngestTouchEventsRequest.
100
+ * Use `create(IngestTouchEventsRequestSchema)` to create a new message.
101
+ */
102
+ export const IngestTouchEventsRequestSchema: GenMessage<IngestTouchEventsRequest> = /*@__PURE__*/
103
+ messageDesc(file_pidgr_v1_heatmap, 1);
104
+
105
+ /**
106
+ * Response after ingesting touch events.
107
+ *
108
+ * @generated from message pidgr.v1.IngestTouchEventsResponse
109
+ */
110
+ export type IngestTouchEventsResponse = Message<"pidgr.v1.IngestTouchEventsResponse"> & {
111
+ /**
112
+ * Number of events successfully ingested.
113
+ *
114
+ * @generated from field: int32 ingested_count = 1;
115
+ */
116
+ ingestedCount: number;
117
+ };
118
+
119
+ /**
120
+ * Describes the message pidgr.v1.IngestTouchEventsResponse.
121
+ * Use `create(IngestTouchEventsResponseSchema)` to create a new message.
122
+ */
123
+ export const IngestTouchEventsResponseSchema: GenMessage<IngestTouchEventsResponse> = /*@__PURE__*/
124
+ messageDesc(file_pidgr_v1_heatmap, 2);
125
+
126
+ /**
127
+ * A single aggregated data point in a heatmap grid cell.
128
+ *
129
+ * @generated from message pidgr.v1.HeatmapDataPoint
130
+ */
131
+ export type HeatmapDataPoint = Message<"pidgr.v1.HeatmapDataPoint"> & {
132
+ /**
133
+ * Grid cell horizontal center as a percentage (0.0–1.0).
134
+ *
135
+ * @generated from field: float x_pct = 1;
136
+ */
137
+ xPct: number;
138
+
139
+ /**
140
+ * Grid cell vertical center as a percentage (0.0–1.0).
141
+ *
142
+ * @generated from field: float y_pct = 2;
143
+ */
144
+ yPct: number;
145
+
146
+ /**
147
+ * Aggregated value for this cell (count, median, or z-score depending on mode).
148
+ *
149
+ * @generated from field: float value = 3;
150
+ */
151
+ value: number;
152
+ };
153
+
154
+ /**
155
+ * Describes the message pidgr.v1.HeatmapDataPoint.
156
+ * Use `create(HeatmapDataPointSchema)` to create a new message.
157
+ */
158
+ export const HeatmapDataPointSchema: GenMessage<HeatmapDataPoint> = /*@__PURE__*/
159
+ messageDesc(file_pidgr_v1_heatmap, 3);
160
+
161
+ /**
162
+ * Per-user touch count for distribution analysis.
163
+ *
164
+ * @generated from message pidgr.v1.UserTouchCount
165
+ */
166
+ export type UserTouchCount = Message<"pidgr.v1.UserTouchCount"> & {
167
+ /**
168
+ * User ID.
169
+ *
170
+ * @generated from field: string user_id = 1;
171
+ */
172
+ userId: string;
173
+
174
+ /**
175
+ * Total touch count for the user in the query range.
176
+ *
177
+ * @generated from field: int32 count = 2;
178
+ */
179
+ count: number;
180
+
181
+ /**
182
+ * Resolved email for display.
183
+ *
184
+ * @generated from field: string user_email = 3;
185
+ */
186
+ userEmail: string;
187
+ };
188
+
189
+ /**
190
+ * Describes the message pidgr.v1.UserTouchCount.
191
+ * Use `create(UserTouchCountSchema)` to create a new message.
192
+ */
193
+ export const UserTouchCountSchema: GenMessage<UserTouchCount> = /*@__PURE__*/
194
+ messageDesc(file_pidgr_v1_heatmap, 4);
195
+
196
+ /**
197
+ * Request to query aggregated heatmap data for a screen.
198
+ *
199
+ * @generated from message pidgr.v1.QueryHeatmapDataRequest
200
+ */
201
+ export type QueryHeatmapDataRequest = Message<"pidgr.v1.QueryHeatmapDataRequest"> & {
202
+ /**
203
+ * Screen name to query.
204
+ * Constraints: Max length 200 characters.
205
+ *
206
+ * @generated from field: string screen_name = 1;
207
+ */
208
+ screenName: string;
209
+
210
+ /**
211
+ * Start of the time range filter (inclusive).
212
+ *
213
+ * @generated from field: google.protobuf.Timestamp date_from = 2;
214
+ */
215
+ dateFrom?: Timestamp;
216
+
217
+ /**
218
+ * End of the time range filter (inclusive).
219
+ *
220
+ * @generated from field: google.protobuf.Timestamp date_to = 3;
221
+ */
222
+ dateTo?: Timestamp;
223
+
224
+ /**
225
+ * Optional: filter by campaign ID.
226
+ * Constraints: UUID format (36 characters).
227
+ *
228
+ * @generated from field: string campaign_id = 4;
229
+ */
230
+ campaignId: string;
231
+
232
+ /**
233
+ * Optional: filter by user ID (required for USER_SPECIFIC mode).
234
+ * Constraints: UUID format (36 characters).
235
+ *
236
+ * @generated from field: string user_id = 5;
237
+ */
238
+ userId: string;
239
+
240
+ /**
241
+ * Grid resolution for coordinate rounding. Default: 0.02 (50×50 grid).
242
+ * Constraints: Range 0.005 to 0.1.
243
+ *
244
+ * @generated from field: float grid_resolution = 6;
245
+ */
246
+ gridResolution: number;
247
+
248
+ /**
249
+ * Aggregation mode.
250
+ *
251
+ * @generated from field: pidgr.v1.HeatmapMode mode = 7;
252
+ */
253
+ mode: HeatmapMode;
254
+
255
+ /**
256
+ * Optional: filter by event types. Empty list means all types.
257
+ *
258
+ * @generated from field: repeated pidgr.v1.TouchEventType event_types = 8;
259
+ */
260
+ eventTypes: TouchEventType[];
261
+ };
262
+
263
+ /**
264
+ * Describes the message pidgr.v1.QueryHeatmapDataRequest.
265
+ * Use `create(QueryHeatmapDataRequestSchema)` to create a new message.
266
+ */
267
+ export const QueryHeatmapDataRequestSchema: GenMessage<QueryHeatmapDataRequest> = /*@__PURE__*/
268
+ messageDesc(file_pidgr_v1_heatmap, 5);
269
+
270
+ /**
271
+ * Response containing aggregated heatmap data.
272
+ *
273
+ * @generated from message pidgr.v1.QueryHeatmapDataResponse
274
+ */
275
+ export type QueryHeatmapDataResponse = Message<"pidgr.v1.QueryHeatmapDataResponse"> & {
276
+ /**
277
+ * Aggregated data points for heatmap rendering.
278
+ *
279
+ * @generated from field: repeated pidgr.v1.HeatmapDataPoint data_points = 1;
280
+ */
281
+ dataPoints: HeatmapDataPoint[];
282
+
283
+ /**
284
+ * Per-user touch counts for distribution chart rendering.
285
+ * Only populated when mode is TOTAL or MEDIAN.
286
+ *
287
+ * @generated from field: repeated pidgr.v1.UserTouchCount user_touch_counts = 2;
288
+ */
289
+ userTouchCounts: UserTouchCount[];
290
+
291
+ /**
292
+ * URL to a mobile-captured screenshot for this screen, if available.
293
+ * Empty string when no screenshot exists.
294
+ *
295
+ * @generated from field: string screenshot_url = 3;
296
+ */
297
+ screenshotUrl: string;
298
+ };
299
+
300
+ /**
301
+ * Describes the message pidgr.v1.QueryHeatmapDataResponse.
302
+ * Use `create(QueryHeatmapDataResponseSchema)` to create a new message.
303
+ */
304
+ export const QueryHeatmapDataResponseSchema: GenMessage<QueryHeatmapDataResponse> = /*@__PURE__*/
305
+ messageDesc(file_pidgr_v1_heatmap, 6);
306
+
307
+ /**
308
+ * Request to upload a screenshot captured from the mobile app.
309
+ *
310
+ * @generated from message pidgr.v1.UploadScreenshotRequest
311
+ */
312
+ export type UploadScreenshotRequest = Message<"pidgr.v1.UploadScreenshotRequest"> & {
313
+ /**
314
+ * Screen name matching React Navigation route (e.g. "MessageDetail::<campaign_uuid>").
315
+ * Constraints: Max length 200 characters.
316
+ *
317
+ * @generated from field: string screen_name = 1;
318
+ */
319
+ screenName: string;
320
+
321
+ /**
322
+ * App version that captured the screenshot (e.g. "1.15.0").
323
+ *
324
+ * @generated from field: string app_version = 2;
325
+ */
326
+ appVersion: string;
327
+
328
+ /**
329
+ * PNG image data.
330
+ * Constraints: Max 512KB.
331
+ *
332
+ * @generated from field: bytes image_data = 3;
333
+ */
334
+ imageData: Uint8Array;
335
+ };
336
+
337
+ /**
338
+ * Describes the message pidgr.v1.UploadScreenshotRequest.
339
+ * Use `create(UploadScreenshotRequestSchema)` to create a new message.
340
+ */
341
+ export const UploadScreenshotRequestSchema: GenMessage<UploadScreenshotRequest> = /*@__PURE__*/
342
+ messageDesc(file_pidgr_v1_heatmap, 7);
343
+
344
+ /**
345
+ * Response after uploading a screenshot.
346
+ *
347
+ * @generated from message pidgr.v1.UploadScreenshotResponse
348
+ */
349
+ export type UploadScreenshotResponse = Message<"pidgr.v1.UploadScreenshotResponse"> & {
350
+ /**
351
+ * S3 URL where the screenshot was stored.
352
+ *
353
+ * @generated from field: string url = 1;
354
+ */
355
+ url: string;
356
+ };
357
+
358
+ /**
359
+ * Describes the message pidgr.v1.UploadScreenshotResponse.
360
+ * Use `create(UploadScreenshotResponseSchema)` to create a new message.
361
+ */
362
+ export const UploadScreenshotResponseSchema: GenMessage<UploadScreenshotResponse> = /*@__PURE__*/
363
+ messageDesc(file_pidgr_v1_heatmap, 8);
364
+
365
+ /**
366
+ * A screen screenshot stored as a static asset.
367
+ *
368
+ * @generated from message pidgr.v1.ScreenScreenshot
369
+ */
370
+ export type ScreenScreenshot = Message<"pidgr.v1.ScreenScreenshot"> & {
371
+ /**
372
+ * Screen name matching React Navigation route.
373
+ *
374
+ * @generated from field: string screen_name = 1;
375
+ */
376
+ screenName: string;
377
+
378
+ /**
379
+ * S3 URL to the screenshot image.
380
+ *
381
+ * @generated from field: string url = 2;
382
+ */
383
+ url: string;
384
+
385
+ /**
386
+ * App version this screenshot corresponds to.
387
+ *
388
+ * @generated from field: string app_version = 3;
389
+ */
390
+ appVersion: string;
391
+ };
392
+
393
+ /**
394
+ * Describes the message pidgr.v1.ScreenScreenshot.
395
+ * Use `create(ScreenScreenshotSchema)` to create a new message.
396
+ */
397
+ export const ScreenScreenshotSchema: GenMessage<ScreenScreenshot> = /*@__PURE__*/
398
+ messageDesc(file_pidgr_v1_heatmap, 9);
399
+
400
+ /**
401
+ * Request to list available screen screenshots.
402
+ *
403
+ * @generated from message pidgr.v1.ListScreenshotsRequest
404
+ */
405
+ export type ListScreenshotsRequest = Message<"pidgr.v1.ListScreenshotsRequest"> & {
406
+ };
407
+
408
+ /**
409
+ * Describes the message pidgr.v1.ListScreenshotsRequest.
410
+ * Use `create(ListScreenshotsRequestSchema)` to create a new message.
411
+ */
412
+ export const ListScreenshotsRequestSchema: GenMessage<ListScreenshotsRequest> = /*@__PURE__*/
413
+ messageDesc(file_pidgr_v1_heatmap, 10);
414
+
415
+ /**
416
+ * Response containing available screen screenshots.
417
+ *
418
+ * @generated from message pidgr.v1.ListScreenshotsResponse
419
+ */
420
+ export type ListScreenshotsResponse = Message<"pidgr.v1.ListScreenshotsResponse"> & {
421
+ /**
422
+ * Available screen screenshots with their URLs and versions.
423
+ *
424
+ * @generated from field: repeated pidgr.v1.ScreenScreenshot screenshots = 1;
425
+ */
426
+ screenshots: ScreenScreenshot[];
427
+ };
428
+
429
+ /**
430
+ * Describes the message pidgr.v1.ListScreenshotsResponse.
431
+ * Use `create(ListScreenshotsResponseSchema)` to create a new message.
432
+ */
433
+ export const ListScreenshotsResponseSchema: GenMessage<ListScreenshotsResponse> = /*@__PURE__*/
434
+ messageDesc(file_pidgr_v1_heatmap, 11);
435
+
436
+ /**
437
+ * Type of touch event captured on the mobile app.
438
+ *
439
+ * @generated from enum pidgr.v1.TouchEventType
440
+ */
441
+ export enum TouchEventType {
442
+ /**
443
+ * Default value; not a valid event type.
444
+ *
445
+ * @generated from enum value: TOUCH_EVENT_TYPE_UNSPECIFIED = 0;
446
+ */
447
+ UNSPECIFIED = 0,
448
+
449
+ /**
450
+ * A single tap on the screen.
451
+ *
452
+ * @generated from enum value: TOUCH_EVENT_TYPE_TAP = 1;
453
+ */
454
+ TAP = 1,
455
+
456
+ /**
457
+ * A long press (held for 500ms+).
458
+ *
459
+ * @generated from enum value: TOUCH_EVENT_TYPE_LONG_PRESS = 2;
460
+ */
461
+ LONG_PRESS = 2,
462
+
463
+ /**
464
+ * A periodic scroll position sample (viewport midpoint every 2s).
465
+ *
466
+ * @generated from enum value: TOUCH_EVENT_TYPE_SCROLL = 3;
467
+ */
468
+ SCROLL = 3,
469
+
470
+ /**
471
+ * The user tapped an action button (e.g. "Acknowledge").
472
+ *
473
+ * @generated from enum value: TOUCH_EVENT_TYPE_ACTION_CLICK = 4;
474
+ */
475
+ ACTION_CLICK = 4,
476
+ }
477
+
478
+ /**
479
+ * Describes the enum pidgr.v1.TouchEventType.
480
+ */
481
+ export const TouchEventTypeSchema: GenEnum<TouchEventType> = /*@__PURE__*/
482
+ enumDesc(file_pidgr_v1_heatmap, 0);
483
+
484
+ /**
485
+ * Aggregation mode for heatmap data queries.
486
+ *
487
+ * @generated from enum pidgr.v1.HeatmapMode
488
+ */
489
+ export enum HeatmapMode {
490
+ /**
491
+ * Default value; not a valid mode.
492
+ *
493
+ * @generated from enum value: HEATMAP_MODE_UNSPECIFIED = 0;
494
+ */
495
+ UNSPECIFIED = 0,
496
+
497
+ /**
498
+ * Sum of all users' touches per grid cell (default).
499
+ *
500
+ * @generated from enum value: HEATMAP_MODE_TOTAL = 1;
501
+ */
502
+ TOTAL = 1,
503
+
504
+ /**
505
+ * Median touch count per grid cell across all users.
506
+ *
507
+ * @generated from enum value: HEATMAP_MODE_MEDIAN = 2;
508
+ */
509
+ MEDIAN = 2,
510
+
511
+ /**
512
+ * Highlight cells where a specific user deviates more than 2σ from the median.
513
+ * Requires user_id to be set in the query request.
514
+ *
515
+ * @generated from enum value: HEATMAP_MODE_USER_SPECIFIC = 3;
516
+ */
517
+ USER_SPECIFIC = 3,
518
+ }
519
+
520
+ /**
521
+ * Describes the enum pidgr.v1.HeatmapMode.
522
+ */
523
+ export const HeatmapModeSchema: GenEnum<HeatmapMode> = /*@__PURE__*/
524
+ enumDesc(file_pidgr_v1_heatmap, 1);
525
+
526
+ /**
527
+ * Manages touch event ingestion, heatmap data aggregation, and screen screenshots
528
+ * for mobile app interaction analytics.
529
+ *
530
+ * @generated from service pidgr.v1.HeatmapService
531
+ */
532
+ export const HeatmapService: GenService<{
533
+ /**
534
+ * Ingest a batch of touch events from the mobile app.
535
+ * Authorization: Authenticated mobile user.
536
+ *
537
+ * @generated from rpc pidgr.v1.HeatmapService.IngestTouchEvents
538
+ */
539
+ ingestTouchEvents: {
540
+ methodKind: "unary";
541
+ input: typeof IngestTouchEventsRequestSchema;
542
+ output: typeof IngestTouchEventsResponseSchema;
543
+ },
544
+ /**
545
+ * Query aggregated touch data for heatmap rendering.
546
+ * Authorization: Requires CAMPAIGNS_READ permission.
547
+ *
548
+ * @generated from rpc pidgr.v1.HeatmapService.QueryHeatmapData
549
+ */
550
+ queryHeatmapData: {
551
+ methodKind: "unary";
552
+ input: typeof QueryHeatmapDataRequestSchema;
553
+ output: typeof QueryHeatmapDataResponseSchema;
554
+ },
555
+ /**
556
+ * List available screen screenshots for heatmap backgrounds.
557
+ * Authorization: Requires CAMPAIGNS_READ permission.
558
+ *
559
+ * @generated from rpc pidgr.v1.HeatmapService.ListScreenshots
560
+ */
561
+ listScreenshots: {
562
+ methodKind: "unary";
563
+ input: typeof ListScreenshotsRequestSchema;
564
+ output: typeof ListScreenshotsResponseSchema;
565
+ },
566
+ /**
567
+ * Upload a screenshot captured from the mobile app for heatmap backdrops.
568
+ * Authorization: Authenticated mobile user.
569
+ *
570
+ * @generated from rpc pidgr.v1.HeatmapService.UploadScreenshot
571
+ */
572
+ uploadScreenshot: {
573
+ methodKind: "unary";
574
+ input: typeof UploadScreenshotRequestSchema;
575
+ output: typeof UploadScreenshotResponseSchema;
576
+ },
577
+ }> = /*@__PURE__*/
578
+ serviceDesc(file_pidgr_v1_heatmap, 0);
579
+