@playcademy/sdk 0.0.4 → 0.0.6

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.
Files changed (46) hide show
  1. package/dist/index.d.ts +3998 -7
  2. package/dist/index.js +1770 -1750
  3. package/dist/types.d.ts +4224 -28
  4. package/dist/types.js +1 -748
  5. package/package.json +5 -3
  6. package/dist/core/auth/flows/popup.d.ts +0 -14
  7. package/dist/core/auth/flows/redirect.d.ts +0 -15
  8. package/dist/core/auth/flows/unified.d.ts +0 -11
  9. package/dist/core/auth/login.d.ts +0 -20
  10. package/dist/core/auth/oauth.d.ts +0 -115
  11. package/dist/core/auth/utils.d.ts +0 -23
  12. package/dist/core/cache/cooldown-cache.d.ts +0 -31
  13. package/dist/core/cache/index.d.ts +0 -14
  14. package/dist/core/cache/permanent-cache.d.ts +0 -39
  15. package/dist/core/cache/singleton-cache.d.ts +0 -29
  16. package/dist/core/cache/ttl-cache.d.ts +0 -54
  17. package/dist/core/cache/types.d.ts +0 -23
  18. package/dist/core/client.d.ts +0 -520
  19. package/dist/core/errors.d.ts +0 -11
  20. package/dist/core/namespaces/achievements.d.ts +0 -84
  21. package/dist/core/namespaces/admin.d.ts +0 -385
  22. package/dist/core/namespaces/auth.d.ts +0 -54
  23. package/dist/core/namespaces/character.d.ts +0 -205
  24. package/dist/core/namespaces/credits.d.ts +0 -51
  25. package/dist/core/namespaces/dev.d.ts +0 -323
  26. package/dist/core/namespaces/games.d.ts +0 -173
  27. package/dist/core/namespaces/identity.d.ts +0 -91
  28. package/dist/core/namespaces/index.d.ts +0 -19
  29. package/dist/core/namespaces/leaderboard.d.ts +0 -48
  30. package/dist/core/namespaces/levels.d.ts +0 -90
  31. package/dist/core/namespaces/maps.d.ts +0 -93
  32. package/dist/core/namespaces/realtime.client.d.ts +0 -129
  33. package/dist/core/namespaces/realtime.d.ts +0 -90
  34. package/dist/core/namespaces/runtime.d.ts +0 -222
  35. package/dist/core/namespaces/scores.d.ts +0 -55
  36. package/dist/core/namespaces/shop.d.ts +0 -25
  37. package/dist/core/namespaces/sprites.d.ts +0 -35
  38. package/dist/core/namespaces/telemetry.d.ts +0 -28
  39. package/dist/core/namespaces/timeback.d.ts +0 -111
  40. package/dist/core/namespaces/users.d.ts +0 -172
  41. package/dist/core/request.d.ts +0 -24
  42. package/dist/core/static/identity.d.ts +0 -37
  43. package/dist/core/static/index.d.ts +0 -3
  44. package/dist/core/static/init.d.ts +0 -21
  45. package/dist/core/static/login.d.ts +0 -34
  46. package/dist/messaging.d.ts +0 -544
package/dist/types.d.ts CHANGED
@@ -1,17 +1,4184 @@
1
- export type * from '@playcademy/data/types';
2
- export { CURRENCIES, BADGES } from '@playcademy/data/constants';
3
- export type { AuthenticatedUser as PlaycademyUser } from '@playcademy/data/types';
4
- export type { PlaycademyClient } from './core/client';
5
- export interface ClientConfig {
1
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
2
+ import * as drizzle_zod from 'drizzle-zod';
3
+ import { z } from 'zod';
4
+ import * as _playcademy_realtime_server_types from '@playcademy/realtime/server/types';
5
+
6
+ declare const AuthProvider: {
7
+ readonly TIMEBACK: "TIMEBACK";
8
+ };
9
+
10
+ declare const userRoleEnum: drizzle_orm_pg_core.PgEnum<["admin", "player", "developer"]>;
11
+ declare const users: drizzle_orm_pg_core.PgTableWithColumns<{
12
+ name: "user";
13
+ schema: undefined;
14
+ columns: {
15
+ id: drizzle_orm_pg_core.PgColumn<{
16
+ name: "id";
17
+ tableName: "user";
18
+ dataType: "string";
19
+ columnType: "PgText";
20
+ data: string;
21
+ driverParam: string;
22
+ notNull: true;
23
+ hasDefault: true;
24
+ isPrimaryKey: true;
25
+ isAutoincrement: false;
26
+ hasRuntimeDefault: true;
27
+ enumValues: [string, ...string[]];
28
+ baseColumn: never;
29
+ identity: undefined;
30
+ generated: undefined;
31
+ }, {}, {}>;
32
+ name: drizzle_orm_pg_core.PgColumn<{
33
+ name: "name";
34
+ tableName: "user";
35
+ dataType: "string";
36
+ columnType: "PgText";
37
+ data: string;
38
+ driverParam: string;
39
+ notNull: true;
40
+ hasDefault: false;
41
+ isPrimaryKey: false;
42
+ isAutoincrement: false;
43
+ hasRuntimeDefault: false;
44
+ enumValues: [string, ...string[]];
45
+ baseColumn: never;
46
+ identity: undefined;
47
+ generated: undefined;
48
+ }, {}, {}>;
49
+ username: drizzle_orm_pg_core.PgColumn<{
50
+ name: "username";
51
+ tableName: "user";
52
+ dataType: "string";
53
+ columnType: "PgText";
54
+ data: string;
55
+ driverParam: string;
56
+ notNull: false;
57
+ hasDefault: false;
58
+ isPrimaryKey: false;
59
+ isAutoincrement: false;
60
+ hasRuntimeDefault: false;
61
+ enumValues: [string, ...string[]];
62
+ baseColumn: never;
63
+ identity: undefined;
64
+ generated: undefined;
65
+ }, {}, {}>;
66
+ email: drizzle_orm_pg_core.PgColumn<{
67
+ name: "email";
68
+ tableName: "user";
69
+ dataType: "string";
70
+ columnType: "PgText";
71
+ data: string;
72
+ driverParam: string;
73
+ notNull: true;
74
+ hasDefault: false;
75
+ isPrimaryKey: false;
76
+ isAutoincrement: false;
77
+ hasRuntimeDefault: false;
78
+ enumValues: [string, ...string[]];
79
+ baseColumn: never;
80
+ identity: undefined;
81
+ generated: undefined;
82
+ }, {}, {}>;
83
+ timebackId: drizzle_orm_pg_core.PgColumn<{
84
+ name: "timeback_id";
85
+ tableName: "user";
86
+ dataType: "string";
87
+ columnType: "PgText";
88
+ data: string;
89
+ driverParam: string;
90
+ notNull: false;
91
+ hasDefault: false;
92
+ isPrimaryKey: false;
93
+ isAutoincrement: false;
94
+ hasRuntimeDefault: false;
95
+ enumValues: [string, ...string[]];
96
+ baseColumn: never;
97
+ identity: undefined;
98
+ generated: undefined;
99
+ }, {}, {}>;
100
+ emailVerified: drizzle_orm_pg_core.PgColumn<{
101
+ name: "email_verified";
102
+ tableName: "user";
103
+ dataType: "boolean";
104
+ columnType: "PgBoolean";
105
+ data: boolean;
106
+ driverParam: boolean;
107
+ notNull: true;
108
+ hasDefault: true;
109
+ isPrimaryKey: false;
110
+ isAutoincrement: false;
111
+ hasRuntimeDefault: false;
112
+ enumValues: undefined;
113
+ baseColumn: never;
114
+ identity: undefined;
115
+ generated: undefined;
116
+ }, {}, {}>;
117
+ image: drizzle_orm_pg_core.PgColumn<{
118
+ name: "image";
119
+ tableName: "user";
120
+ dataType: "string";
121
+ columnType: "PgText";
122
+ data: string;
123
+ driverParam: string;
124
+ notNull: false;
125
+ hasDefault: false;
126
+ isPrimaryKey: false;
127
+ isAutoincrement: false;
128
+ hasRuntimeDefault: false;
129
+ enumValues: [string, ...string[]];
130
+ baseColumn: never;
131
+ identity: undefined;
132
+ generated: undefined;
133
+ }, {}, {}>;
134
+ role: drizzle_orm_pg_core.PgColumn<{
135
+ name: "role";
136
+ tableName: "user";
137
+ dataType: "string";
138
+ columnType: "PgEnumColumn";
139
+ data: "admin" | "player" | "developer";
140
+ driverParam: string;
141
+ notNull: true;
142
+ hasDefault: true;
143
+ isPrimaryKey: false;
144
+ isAutoincrement: false;
145
+ hasRuntimeDefault: false;
146
+ enumValues: ["admin", "player", "developer"];
147
+ baseColumn: never;
148
+ identity: undefined;
149
+ generated: undefined;
150
+ }, {}, {}>;
151
+ developerStatus: drizzle_orm_pg_core.PgColumn<{
152
+ name: "developer_status";
153
+ tableName: "user";
154
+ dataType: "string";
155
+ columnType: "PgEnumColumn";
156
+ data: "none" | "pending" | "approved";
157
+ driverParam: string;
158
+ notNull: true;
159
+ hasDefault: true;
160
+ isPrimaryKey: false;
161
+ isAutoincrement: false;
162
+ hasRuntimeDefault: false;
163
+ enumValues: ["none", "pending", "approved"];
164
+ baseColumn: never;
165
+ identity: undefined;
166
+ generated: undefined;
167
+ }, {}, {}>;
168
+ characterCreated: drizzle_orm_pg_core.PgColumn<{
169
+ name: "character_created";
170
+ tableName: "user";
171
+ dataType: "boolean";
172
+ columnType: "PgBoolean";
173
+ data: boolean;
174
+ driverParam: boolean;
175
+ notNull: true;
176
+ hasDefault: true;
177
+ isPrimaryKey: false;
178
+ isAutoincrement: false;
179
+ hasRuntimeDefault: false;
180
+ enumValues: undefined;
181
+ baseColumn: never;
182
+ identity: undefined;
183
+ generated: undefined;
184
+ }, {}, {}>;
185
+ createdAt: drizzle_orm_pg_core.PgColumn<{
186
+ name: "created_at";
187
+ tableName: "user";
188
+ dataType: "date";
189
+ columnType: "PgTimestamp";
190
+ data: Date;
191
+ driverParam: string;
192
+ notNull: true;
193
+ hasDefault: false;
194
+ isPrimaryKey: false;
195
+ isAutoincrement: false;
196
+ hasRuntimeDefault: false;
197
+ enumValues: undefined;
198
+ baseColumn: never;
199
+ identity: undefined;
200
+ generated: undefined;
201
+ }, {}, {}>;
202
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
203
+ name: "updated_at";
204
+ tableName: "user";
205
+ dataType: "date";
206
+ columnType: "PgTimestamp";
207
+ data: Date;
208
+ driverParam: string;
209
+ notNull: true;
210
+ hasDefault: false;
211
+ isPrimaryKey: false;
212
+ isAutoincrement: false;
213
+ hasRuntimeDefault: false;
214
+ enumValues: undefined;
215
+ baseColumn: never;
216
+ identity: undefined;
217
+ generated: undefined;
218
+ }, {}, {}>;
219
+ };
220
+ dialect: "pg";
221
+ }>;
222
+
223
+ declare const developerKeys: drizzle_orm_pg_core.PgTableWithColumns<{
224
+ name: "developer_keys";
225
+ schema: undefined;
226
+ columns: {
227
+ id: drizzle_orm_pg_core.PgColumn<{
228
+ name: "id";
229
+ tableName: "developer_keys";
230
+ dataType: "string";
231
+ columnType: "PgUUID";
232
+ data: string;
233
+ driverParam: string;
234
+ notNull: true;
235
+ hasDefault: true;
236
+ isPrimaryKey: true;
237
+ isAutoincrement: false;
238
+ hasRuntimeDefault: false;
239
+ enumValues: undefined;
240
+ baseColumn: never;
241
+ identity: undefined;
242
+ generated: undefined;
243
+ }, {}, {}>;
244
+ userId: drizzle_orm_pg_core.PgColumn<{
245
+ name: "user_id";
246
+ tableName: "developer_keys";
247
+ dataType: "string";
248
+ columnType: "PgText";
249
+ data: string;
250
+ driverParam: string;
251
+ notNull: true;
252
+ hasDefault: false;
253
+ isPrimaryKey: false;
254
+ isAutoincrement: false;
255
+ hasRuntimeDefault: false;
256
+ enumValues: [string, ...string[]];
257
+ baseColumn: never;
258
+ identity: undefined;
259
+ generated: undefined;
260
+ }, {}, {}>;
261
+ label: drizzle_orm_pg_core.PgColumn<{
262
+ name: "label";
263
+ tableName: "developer_keys";
264
+ dataType: "string";
265
+ columnType: "PgVarchar";
266
+ data: string;
267
+ driverParam: string;
268
+ notNull: false;
269
+ hasDefault: false;
270
+ isPrimaryKey: false;
271
+ isAutoincrement: false;
272
+ hasRuntimeDefault: false;
273
+ enumValues: [string, ...string[]];
274
+ baseColumn: never;
275
+ identity: undefined;
276
+ generated: undefined;
277
+ }, {}, {
278
+ length: 255;
279
+ }>;
280
+ keyHash: drizzle_orm_pg_core.PgColumn<{
281
+ name: "key_hash";
282
+ tableName: "developer_keys";
283
+ dataType: "string";
284
+ columnType: "PgText";
285
+ data: string;
286
+ driverParam: string;
287
+ notNull: true;
288
+ hasDefault: false;
289
+ isPrimaryKey: false;
290
+ isAutoincrement: false;
291
+ hasRuntimeDefault: false;
292
+ enumValues: [string, ...string[]];
293
+ baseColumn: never;
294
+ identity: undefined;
295
+ generated: undefined;
296
+ }, {}, {}>;
297
+ createdAt: drizzle_orm_pg_core.PgColumn<{
298
+ name: "created_at";
299
+ tableName: "developer_keys";
300
+ dataType: "date";
301
+ columnType: "PgTimestamp";
302
+ data: Date;
303
+ driverParam: string;
304
+ notNull: true;
305
+ hasDefault: true;
306
+ isPrimaryKey: false;
307
+ isAutoincrement: false;
308
+ hasRuntimeDefault: false;
309
+ enumValues: undefined;
310
+ baseColumn: never;
311
+ identity: undefined;
312
+ generated: undefined;
313
+ }, {}, {}>;
314
+ };
315
+ dialect: "pg";
316
+ }>;
317
+
318
+ type GameMetadata = {
319
+ description?: string;
320
+ emoji?: string;
321
+ [key: string]: unknown;
322
+ };
323
+ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
324
+ name: "games";
325
+ schema: undefined;
326
+ columns: {
327
+ id: drizzle_orm_pg_core.PgColumn<{
328
+ name: "id";
329
+ tableName: "games";
330
+ dataType: "string";
331
+ columnType: "PgUUID";
332
+ data: string;
333
+ driverParam: string;
334
+ notNull: true;
335
+ hasDefault: true;
336
+ isPrimaryKey: true;
337
+ isAutoincrement: false;
338
+ hasRuntimeDefault: false;
339
+ enumValues: undefined;
340
+ baseColumn: never;
341
+ identity: undefined;
342
+ generated: undefined;
343
+ }, {}, {}>;
344
+ developerId: drizzle_orm_pg_core.PgColumn<{
345
+ name: "developer_id";
346
+ tableName: "games";
347
+ dataType: "string";
348
+ columnType: "PgText";
349
+ data: string;
350
+ driverParam: string;
351
+ notNull: false;
352
+ hasDefault: false;
353
+ isPrimaryKey: false;
354
+ isAutoincrement: false;
355
+ hasRuntimeDefault: false;
356
+ enumValues: [string, ...string[]];
357
+ baseColumn: never;
358
+ identity: undefined;
359
+ generated: undefined;
360
+ }, {}, {}>;
361
+ slug: drizzle_orm_pg_core.PgColumn<{
362
+ name: "slug";
363
+ tableName: "games";
364
+ dataType: "string";
365
+ columnType: "PgVarchar";
366
+ data: string;
367
+ driverParam: string;
368
+ notNull: true;
369
+ hasDefault: false;
370
+ isPrimaryKey: false;
371
+ isAutoincrement: false;
372
+ hasRuntimeDefault: false;
373
+ enumValues: [string, ...string[]];
374
+ baseColumn: never;
375
+ identity: undefined;
376
+ generated: undefined;
377
+ }, {}, {
378
+ length: 255;
379
+ }>;
380
+ displayName: drizzle_orm_pg_core.PgColumn<{
381
+ name: "display_name";
382
+ tableName: "games";
383
+ dataType: "string";
384
+ columnType: "PgVarchar";
385
+ data: string;
386
+ driverParam: string;
387
+ notNull: true;
388
+ hasDefault: false;
389
+ isPrimaryKey: false;
390
+ isAutoincrement: false;
391
+ hasRuntimeDefault: false;
392
+ enumValues: [string, ...string[]];
393
+ baseColumn: never;
394
+ identity: undefined;
395
+ generated: undefined;
396
+ }, {}, {
397
+ length: 255;
398
+ }>;
399
+ version: drizzle_orm_pg_core.PgColumn<{
400
+ name: "version";
401
+ tableName: "games";
402
+ dataType: "string";
403
+ columnType: "PgVarchar";
404
+ data: string;
405
+ driverParam: string;
406
+ notNull: true;
407
+ hasDefault: false;
408
+ isPrimaryKey: false;
409
+ isAutoincrement: false;
410
+ hasRuntimeDefault: false;
411
+ enumValues: [string, ...string[]];
412
+ baseColumn: never;
413
+ identity: undefined;
414
+ generated: undefined;
415
+ }, {}, {
416
+ length: 50;
417
+ }>;
418
+ gameType: drizzle_orm_pg_core.PgColumn<{
419
+ name: "game_type";
420
+ tableName: "games";
421
+ dataType: "string";
422
+ columnType: "PgEnumColumn";
423
+ data: "hosted" | "external";
424
+ driverParam: string;
425
+ notNull: true;
426
+ hasDefault: true;
427
+ isPrimaryKey: false;
428
+ isAutoincrement: false;
429
+ hasRuntimeDefault: false;
430
+ enumValues: ["hosted", "external"];
431
+ baseColumn: never;
432
+ identity: undefined;
433
+ generated: undefined;
434
+ }, {}, {}>;
435
+ assetBundleBase: drizzle_orm_pg_core.PgColumn<{
436
+ name: "asset_bundle_base";
437
+ tableName: "games";
438
+ dataType: "string";
439
+ columnType: "PgText";
440
+ data: string;
441
+ driverParam: string;
442
+ notNull: false;
443
+ hasDefault: false;
444
+ isPrimaryKey: false;
445
+ isAutoincrement: false;
446
+ hasRuntimeDefault: false;
447
+ enumValues: [string, ...string[]];
448
+ baseColumn: never;
449
+ identity: undefined;
450
+ generated: undefined;
451
+ }, {}, {}>;
452
+ externalUrl: drizzle_orm_pg_core.PgColumn<{
453
+ name: "external_url";
454
+ tableName: "games";
455
+ dataType: "string";
456
+ columnType: "PgText";
457
+ data: string;
458
+ driverParam: string;
459
+ notNull: false;
460
+ hasDefault: false;
461
+ isPrimaryKey: false;
462
+ isAutoincrement: false;
463
+ hasRuntimeDefault: false;
464
+ enumValues: [string, ...string[]];
465
+ baseColumn: never;
466
+ identity: undefined;
467
+ generated: undefined;
468
+ }, {}, {}>;
469
+ platform: drizzle_orm_pg_core.PgColumn<{
470
+ name: "platform";
471
+ tableName: "games";
472
+ dataType: "string";
473
+ columnType: "PgEnumColumn";
474
+ data: "web" | "godot" | "unity";
475
+ driverParam: string;
476
+ notNull: true;
477
+ hasDefault: true;
478
+ isPrimaryKey: false;
479
+ isAutoincrement: false;
480
+ hasRuntimeDefault: false;
481
+ enumValues: ["web", "godot", "unity"];
482
+ baseColumn: never;
483
+ identity: undefined;
484
+ generated: undefined;
485
+ }, {}, {}>;
486
+ mapElementId: drizzle_orm_pg_core.PgColumn<{
487
+ name: "map_element_id";
488
+ tableName: "games";
489
+ dataType: "string";
490
+ columnType: "PgUUID";
491
+ data: string;
492
+ driverParam: string;
493
+ notNull: false;
494
+ hasDefault: false;
495
+ isPrimaryKey: false;
496
+ isAutoincrement: false;
497
+ hasRuntimeDefault: false;
498
+ enumValues: undefined;
499
+ baseColumn: never;
500
+ identity: undefined;
501
+ generated: undefined;
502
+ }, {}, {}>;
503
+ metadata: drizzle_orm_pg_core.PgColumn<{
504
+ name: "metadata";
505
+ tableName: "games";
506
+ dataType: "json";
507
+ columnType: "PgJsonb";
508
+ data: GameMetadata;
509
+ driverParam: unknown;
510
+ notNull: true;
511
+ hasDefault: true;
512
+ isPrimaryKey: false;
513
+ isAutoincrement: false;
514
+ hasRuntimeDefault: false;
515
+ enumValues: undefined;
516
+ baseColumn: never;
517
+ identity: undefined;
518
+ generated: undefined;
519
+ }, {}, {
520
+ $type: GameMetadata;
521
+ }>;
522
+ createdAt: drizzle_orm_pg_core.PgColumn<{
523
+ name: "created_at";
524
+ tableName: "games";
525
+ dataType: "date";
526
+ columnType: "PgTimestamp";
527
+ data: Date;
528
+ driverParam: string;
529
+ notNull: false;
530
+ hasDefault: true;
531
+ isPrimaryKey: false;
532
+ isAutoincrement: false;
533
+ hasRuntimeDefault: false;
534
+ enumValues: undefined;
535
+ baseColumn: never;
536
+ identity: undefined;
537
+ generated: undefined;
538
+ }, {}, {}>;
539
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
540
+ name: "updated_at";
541
+ tableName: "games";
542
+ dataType: "date";
543
+ columnType: "PgTimestamp";
544
+ data: Date;
545
+ driverParam: string;
546
+ notNull: false;
547
+ hasDefault: true;
548
+ isPrimaryKey: false;
549
+ isAutoincrement: false;
550
+ hasRuntimeDefault: false;
551
+ enumValues: undefined;
552
+ baseColumn: never;
553
+ identity: undefined;
554
+ generated: undefined;
555
+ }, {}, {}>;
556
+ };
557
+ dialect: "pg";
558
+ }>;
559
+ declare const gameSessions: drizzle_orm_pg_core.PgTableWithColumns<{
560
+ name: "game_sessions";
561
+ schema: undefined;
562
+ columns: {
563
+ id: drizzle_orm_pg_core.PgColumn<{
564
+ name: "id";
565
+ tableName: "game_sessions";
566
+ dataType: "string";
567
+ columnType: "PgUUID";
568
+ data: string;
569
+ driverParam: string;
570
+ notNull: true;
571
+ hasDefault: true;
572
+ isPrimaryKey: true;
573
+ isAutoincrement: false;
574
+ hasRuntimeDefault: false;
575
+ enumValues: undefined;
576
+ baseColumn: never;
577
+ identity: undefined;
578
+ generated: undefined;
579
+ }, {}, {}>;
580
+ userId: drizzle_orm_pg_core.PgColumn<{
581
+ name: "user_id";
582
+ tableName: "game_sessions";
583
+ dataType: "string";
584
+ columnType: "PgText";
585
+ data: string;
586
+ driverParam: string;
587
+ notNull: true;
588
+ hasDefault: false;
589
+ isPrimaryKey: false;
590
+ isAutoincrement: false;
591
+ hasRuntimeDefault: false;
592
+ enumValues: [string, ...string[]];
593
+ baseColumn: never;
594
+ identity: undefined;
595
+ generated: undefined;
596
+ }, {}, {}>;
597
+ gameId: drizzle_orm_pg_core.PgColumn<{
598
+ name: "game_id";
599
+ tableName: "game_sessions";
600
+ dataType: "string";
601
+ columnType: "PgUUID";
602
+ data: string;
603
+ driverParam: string;
604
+ notNull: true;
605
+ hasDefault: false;
606
+ isPrimaryKey: false;
607
+ isAutoincrement: false;
608
+ hasRuntimeDefault: false;
609
+ enumValues: undefined;
610
+ baseColumn: never;
611
+ identity: undefined;
612
+ generated: undefined;
613
+ }, {}, {}>;
614
+ startedAt: drizzle_orm_pg_core.PgColumn<{
615
+ name: "started_at";
616
+ tableName: "game_sessions";
617
+ dataType: "date";
618
+ columnType: "PgTimestamp";
619
+ data: Date;
620
+ driverParam: string;
621
+ notNull: true;
622
+ hasDefault: true;
623
+ isPrimaryKey: false;
624
+ isAutoincrement: false;
625
+ hasRuntimeDefault: false;
626
+ enumValues: undefined;
627
+ baseColumn: never;
628
+ identity: undefined;
629
+ generated: undefined;
630
+ }, {}, {}>;
631
+ endedAt: drizzle_orm_pg_core.PgColumn<{
632
+ name: "ended_at";
633
+ tableName: "game_sessions";
634
+ dataType: "date";
635
+ columnType: "PgTimestamp";
636
+ data: Date;
637
+ driverParam: string;
638
+ notNull: false;
639
+ hasDefault: false;
640
+ isPrimaryKey: false;
641
+ isAutoincrement: false;
642
+ hasRuntimeDefault: false;
643
+ enumValues: undefined;
644
+ baseColumn: never;
645
+ identity: undefined;
646
+ generated: undefined;
647
+ }, {}, {}>;
648
+ };
649
+ dialect: "pg";
650
+ }>;
651
+ declare const items: drizzle_orm_pg_core.PgTableWithColumns<{
652
+ name: "items";
653
+ schema: undefined;
654
+ columns: {
655
+ id: drizzle_orm_pg_core.PgColumn<{
656
+ name: "id";
657
+ tableName: "items";
658
+ dataType: "string";
659
+ columnType: "PgUUID";
660
+ data: string;
661
+ driverParam: string;
662
+ notNull: true;
663
+ hasDefault: true;
664
+ isPrimaryKey: true;
665
+ isAutoincrement: false;
666
+ hasRuntimeDefault: false;
667
+ enumValues: undefined;
668
+ baseColumn: never;
669
+ identity: undefined;
670
+ generated: undefined;
671
+ }, {}, {}>;
672
+ slug: drizzle_orm_pg_core.PgColumn<{
673
+ name: "slug";
674
+ tableName: "items";
675
+ dataType: "string";
676
+ columnType: "PgText";
677
+ data: string;
678
+ driverParam: string;
679
+ notNull: true;
680
+ hasDefault: false;
681
+ isPrimaryKey: false;
682
+ isAutoincrement: false;
683
+ hasRuntimeDefault: false;
684
+ enumValues: [string, ...string[]];
685
+ baseColumn: never;
686
+ identity: undefined;
687
+ generated: undefined;
688
+ }, {}, {}>;
689
+ gameId: drizzle_orm_pg_core.PgColumn<{
690
+ name: "game_id";
691
+ tableName: "items";
692
+ dataType: "string";
693
+ columnType: "PgUUID";
694
+ data: string;
695
+ driverParam: string;
696
+ notNull: false;
697
+ hasDefault: false;
698
+ isPrimaryKey: false;
699
+ isAutoincrement: false;
700
+ hasRuntimeDefault: false;
701
+ enumValues: undefined;
702
+ baseColumn: never;
703
+ identity: undefined;
704
+ generated: undefined;
705
+ }, {}, {}>;
706
+ displayName: drizzle_orm_pg_core.PgColumn<{
707
+ name: "display_name";
708
+ tableName: "items";
709
+ dataType: "string";
710
+ columnType: "PgText";
711
+ data: string;
712
+ driverParam: string;
713
+ notNull: true;
714
+ hasDefault: false;
715
+ isPrimaryKey: false;
716
+ isAutoincrement: false;
717
+ hasRuntimeDefault: false;
718
+ enumValues: [string, ...string[]];
719
+ baseColumn: never;
720
+ identity: undefined;
721
+ generated: undefined;
722
+ }, {}, {}>;
723
+ description: drizzle_orm_pg_core.PgColumn<{
724
+ name: "description";
725
+ tableName: "items";
726
+ dataType: "string";
727
+ columnType: "PgText";
728
+ data: string;
729
+ driverParam: string;
730
+ notNull: false;
731
+ hasDefault: false;
732
+ isPrimaryKey: false;
733
+ isAutoincrement: false;
734
+ hasRuntimeDefault: false;
735
+ enumValues: [string, ...string[]];
736
+ baseColumn: never;
737
+ identity: undefined;
738
+ generated: undefined;
739
+ }, {}, {}>;
740
+ type: drizzle_orm_pg_core.PgColumn<{
741
+ name: "type";
742
+ tableName: "items";
743
+ dataType: "string";
744
+ columnType: "PgEnumColumn";
745
+ data: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
746
+ driverParam: string;
747
+ notNull: true;
748
+ hasDefault: true;
749
+ isPrimaryKey: false;
750
+ isAutoincrement: false;
751
+ hasRuntimeDefault: false;
752
+ enumValues: ["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"];
753
+ baseColumn: never;
754
+ identity: undefined;
755
+ generated: undefined;
756
+ }, {}, {}>;
757
+ isPlaceable: drizzle_orm_pg_core.PgColumn<{
758
+ name: "is_placeable";
759
+ tableName: "items";
760
+ dataType: "boolean";
761
+ columnType: "PgBoolean";
762
+ data: boolean;
763
+ driverParam: boolean;
764
+ notNull: true;
765
+ hasDefault: true;
766
+ isPrimaryKey: false;
767
+ isAutoincrement: false;
768
+ hasRuntimeDefault: false;
769
+ enumValues: undefined;
770
+ baseColumn: never;
771
+ identity: undefined;
772
+ generated: undefined;
773
+ }, {}, {}>;
774
+ imageUrl: drizzle_orm_pg_core.PgColumn<{
775
+ name: "image_url";
776
+ tableName: "items";
777
+ dataType: "string";
778
+ columnType: "PgText";
779
+ data: string;
780
+ driverParam: string;
781
+ notNull: false;
782
+ hasDefault: false;
783
+ isPrimaryKey: false;
784
+ isAutoincrement: false;
785
+ hasRuntimeDefault: false;
786
+ enumValues: [string, ...string[]];
787
+ baseColumn: never;
788
+ identity: undefined;
789
+ generated: undefined;
790
+ }, {}, {}>;
791
+ metadata: drizzle_orm_pg_core.PgColumn<{
792
+ name: "metadata";
793
+ tableName: "items";
794
+ dataType: "json";
795
+ columnType: "PgJsonb";
796
+ data: unknown;
797
+ driverParam: unknown;
798
+ notNull: false;
799
+ hasDefault: true;
800
+ isPrimaryKey: false;
801
+ isAutoincrement: false;
802
+ hasRuntimeDefault: false;
803
+ enumValues: undefined;
804
+ baseColumn: never;
805
+ identity: undefined;
806
+ generated: undefined;
807
+ }, {}, {}>;
808
+ createdAt: drizzle_orm_pg_core.PgColumn<{
809
+ name: "created_at";
810
+ tableName: "items";
811
+ dataType: "date";
812
+ columnType: "PgTimestamp";
813
+ data: Date;
814
+ driverParam: string;
815
+ notNull: true;
816
+ hasDefault: true;
817
+ isPrimaryKey: false;
818
+ isAutoincrement: false;
819
+ hasRuntimeDefault: false;
820
+ enumValues: undefined;
821
+ baseColumn: never;
822
+ identity: undefined;
823
+ generated: undefined;
824
+ }, {}, {}>;
825
+ };
826
+ dialect: "pg";
827
+ }>;
828
+ declare const inventoryItems: drizzle_orm_pg_core.PgTableWithColumns<{
829
+ name: "inventory_items";
830
+ schema: undefined;
831
+ columns: {
832
+ id: drizzle_orm_pg_core.PgColumn<{
833
+ name: "id";
834
+ tableName: "inventory_items";
835
+ dataType: "string";
836
+ columnType: "PgUUID";
837
+ data: string;
838
+ driverParam: string;
839
+ notNull: true;
840
+ hasDefault: true;
841
+ isPrimaryKey: true;
842
+ isAutoincrement: false;
843
+ hasRuntimeDefault: false;
844
+ enumValues: undefined;
845
+ baseColumn: never;
846
+ identity: undefined;
847
+ generated: undefined;
848
+ }, {}, {}>;
849
+ userId: drizzle_orm_pg_core.PgColumn<{
850
+ name: "user_id";
851
+ tableName: "inventory_items";
852
+ dataType: "string";
853
+ columnType: "PgText";
854
+ data: string;
855
+ driverParam: string;
856
+ notNull: true;
857
+ hasDefault: false;
858
+ isPrimaryKey: false;
859
+ isAutoincrement: false;
860
+ hasRuntimeDefault: false;
861
+ enumValues: [string, ...string[]];
862
+ baseColumn: never;
863
+ identity: undefined;
864
+ generated: undefined;
865
+ }, {}, {}>;
866
+ itemId: drizzle_orm_pg_core.PgColumn<{
867
+ name: "item_id";
868
+ tableName: "inventory_items";
869
+ dataType: "string";
870
+ columnType: "PgUUID";
871
+ data: string;
872
+ driverParam: string;
873
+ notNull: true;
874
+ hasDefault: false;
875
+ isPrimaryKey: false;
876
+ isAutoincrement: false;
877
+ hasRuntimeDefault: false;
878
+ enumValues: undefined;
879
+ baseColumn: never;
880
+ identity: undefined;
881
+ generated: undefined;
882
+ }, {}, {}>;
883
+ quantity: drizzle_orm_pg_core.PgColumn<{
884
+ name: "quantity";
885
+ tableName: "inventory_items";
886
+ dataType: "number";
887
+ columnType: "PgInteger";
888
+ data: number;
889
+ driverParam: string | number;
890
+ notNull: true;
891
+ hasDefault: true;
892
+ isPrimaryKey: false;
893
+ isAutoincrement: false;
894
+ hasRuntimeDefault: false;
895
+ enumValues: undefined;
896
+ baseColumn: never;
897
+ identity: undefined;
898
+ generated: undefined;
899
+ }, {}, {}>;
900
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
901
+ name: "updated_at";
902
+ tableName: "inventory_items";
903
+ dataType: "date";
904
+ columnType: "PgTimestamp";
905
+ data: Date;
906
+ driverParam: string;
907
+ notNull: false;
908
+ hasDefault: true;
909
+ isPrimaryKey: false;
910
+ isAutoincrement: false;
911
+ hasRuntimeDefault: false;
912
+ enumValues: undefined;
913
+ baseColumn: never;
914
+ identity: undefined;
915
+ generated: undefined;
916
+ }, {}, {}>;
917
+ };
918
+ dialect: "pg";
919
+ }>;
920
+ declare const currencies: drizzle_orm_pg_core.PgTableWithColumns<{
921
+ name: "currencies";
922
+ schema: undefined;
923
+ columns: {
924
+ id: drizzle_orm_pg_core.PgColumn<{
925
+ name: "id";
926
+ tableName: "currencies";
927
+ dataType: "string";
928
+ columnType: "PgUUID";
929
+ data: string;
930
+ driverParam: string;
931
+ notNull: true;
932
+ hasDefault: true;
933
+ isPrimaryKey: true;
934
+ isAutoincrement: false;
935
+ hasRuntimeDefault: false;
936
+ enumValues: undefined;
937
+ baseColumn: never;
938
+ identity: undefined;
939
+ generated: undefined;
940
+ }, {}, {}>;
941
+ itemId: drizzle_orm_pg_core.PgColumn<{
942
+ name: "item_id";
943
+ tableName: "currencies";
944
+ dataType: "string";
945
+ columnType: "PgUUID";
946
+ data: string;
947
+ driverParam: string;
948
+ notNull: true;
949
+ hasDefault: false;
950
+ isPrimaryKey: false;
951
+ isAutoincrement: false;
952
+ hasRuntimeDefault: false;
953
+ enumValues: undefined;
954
+ baseColumn: never;
955
+ identity: undefined;
956
+ generated: undefined;
957
+ }, {}, {}>;
958
+ symbol: drizzle_orm_pg_core.PgColumn<{
959
+ name: "symbol";
960
+ tableName: "currencies";
961
+ dataType: "string";
962
+ columnType: "PgText";
963
+ data: string;
964
+ driverParam: string;
965
+ notNull: false;
966
+ hasDefault: false;
967
+ isPrimaryKey: false;
968
+ isAutoincrement: false;
969
+ hasRuntimeDefault: false;
970
+ enumValues: [string, ...string[]];
971
+ baseColumn: never;
972
+ identity: undefined;
973
+ generated: undefined;
974
+ }, {}, {}>;
975
+ isPrimary: drizzle_orm_pg_core.PgColumn<{
976
+ name: "is_primary";
977
+ tableName: "currencies";
978
+ dataType: "boolean";
979
+ columnType: "PgBoolean";
980
+ data: boolean;
981
+ driverParam: boolean;
982
+ notNull: true;
983
+ hasDefault: true;
984
+ isPrimaryKey: false;
985
+ isAutoincrement: false;
986
+ hasRuntimeDefault: false;
987
+ enumValues: undefined;
988
+ baseColumn: never;
989
+ identity: undefined;
990
+ generated: undefined;
991
+ }, {}, {}>;
992
+ createdAt: drizzle_orm_pg_core.PgColumn<{
993
+ name: "created_at";
994
+ tableName: "currencies";
995
+ dataType: "date";
996
+ columnType: "PgTimestamp";
997
+ data: Date;
998
+ driverParam: string;
999
+ notNull: true;
1000
+ hasDefault: true;
1001
+ isPrimaryKey: false;
1002
+ isAutoincrement: false;
1003
+ hasRuntimeDefault: false;
1004
+ enumValues: undefined;
1005
+ baseColumn: never;
1006
+ identity: undefined;
1007
+ generated: undefined;
1008
+ }, {}, {}>;
1009
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
1010
+ name: "updated_at";
1011
+ tableName: "currencies";
1012
+ dataType: "date";
1013
+ columnType: "PgTimestamp";
1014
+ data: Date;
1015
+ driverParam: string;
1016
+ notNull: false;
1017
+ hasDefault: true;
1018
+ isPrimaryKey: false;
1019
+ isAutoincrement: false;
1020
+ hasRuntimeDefault: false;
1021
+ enumValues: undefined;
1022
+ baseColumn: never;
1023
+ identity: undefined;
1024
+ generated: undefined;
1025
+ }, {}, {}>;
1026
+ };
1027
+ dialect: "pg";
1028
+ }>;
1029
+ declare const shopListings: drizzle_orm_pg_core.PgTableWithColumns<{
1030
+ name: "shop_listings";
1031
+ schema: undefined;
1032
+ columns: {
1033
+ id: drizzle_orm_pg_core.PgColumn<{
1034
+ name: "id";
1035
+ tableName: "shop_listings";
1036
+ dataType: "string";
1037
+ columnType: "PgUUID";
1038
+ data: string;
1039
+ driverParam: string;
1040
+ notNull: true;
1041
+ hasDefault: true;
1042
+ isPrimaryKey: true;
1043
+ isAutoincrement: false;
1044
+ hasRuntimeDefault: false;
1045
+ enumValues: undefined;
1046
+ baseColumn: never;
1047
+ identity: undefined;
1048
+ generated: undefined;
1049
+ }, {}, {}>;
1050
+ itemId: drizzle_orm_pg_core.PgColumn<{
1051
+ name: "item_id";
1052
+ tableName: "shop_listings";
1053
+ dataType: "string";
1054
+ columnType: "PgUUID";
1055
+ data: string;
1056
+ driverParam: string;
1057
+ notNull: true;
1058
+ hasDefault: false;
1059
+ isPrimaryKey: false;
1060
+ isAutoincrement: false;
1061
+ hasRuntimeDefault: false;
1062
+ enumValues: undefined;
1063
+ baseColumn: never;
1064
+ identity: undefined;
1065
+ generated: undefined;
1066
+ }, {}, {}>;
1067
+ currencyId: drizzle_orm_pg_core.PgColumn<{
1068
+ name: "currency_id";
1069
+ tableName: "shop_listings";
1070
+ dataType: "string";
1071
+ columnType: "PgUUID";
1072
+ data: string;
1073
+ driverParam: string;
1074
+ notNull: true;
1075
+ hasDefault: false;
1076
+ isPrimaryKey: false;
1077
+ isAutoincrement: false;
1078
+ hasRuntimeDefault: false;
1079
+ enumValues: undefined;
1080
+ baseColumn: never;
1081
+ identity: undefined;
1082
+ generated: undefined;
1083
+ }, {}, {}>;
1084
+ price: drizzle_orm_pg_core.PgColumn<{
1085
+ name: "price";
1086
+ tableName: "shop_listings";
1087
+ dataType: "number";
1088
+ columnType: "PgInteger";
1089
+ data: number;
1090
+ driverParam: string | number;
1091
+ notNull: true;
1092
+ hasDefault: false;
1093
+ isPrimaryKey: false;
1094
+ isAutoincrement: false;
1095
+ hasRuntimeDefault: false;
1096
+ enumValues: undefined;
1097
+ baseColumn: never;
1098
+ identity: undefined;
1099
+ generated: undefined;
1100
+ }, {}, {}>;
1101
+ sellBackPercentage: drizzle_orm_pg_core.PgColumn<{
1102
+ name: "sell_back_percentage";
1103
+ tableName: "shop_listings";
1104
+ dataType: "number";
1105
+ columnType: "PgInteger";
1106
+ data: number;
1107
+ driverParam: string | number;
1108
+ notNull: false;
1109
+ hasDefault: false;
1110
+ isPrimaryKey: false;
1111
+ isAutoincrement: false;
1112
+ hasRuntimeDefault: false;
1113
+ enumValues: undefined;
1114
+ baseColumn: never;
1115
+ identity: undefined;
1116
+ generated: undefined;
1117
+ }, {}, {}>;
1118
+ stock: drizzle_orm_pg_core.PgColumn<{
1119
+ name: "stock";
1120
+ tableName: "shop_listings";
1121
+ dataType: "number";
1122
+ columnType: "PgInteger";
1123
+ data: number;
1124
+ driverParam: string | number;
1125
+ notNull: false;
1126
+ hasDefault: false;
1127
+ isPrimaryKey: false;
1128
+ isAutoincrement: false;
1129
+ hasRuntimeDefault: false;
1130
+ enumValues: undefined;
1131
+ baseColumn: never;
1132
+ identity: undefined;
1133
+ generated: undefined;
1134
+ }, {}, {}>;
1135
+ isActive: drizzle_orm_pg_core.PgColumn<{
1136
+ name: "is_active";
1137
+ tableName: "shop_listings";
1138
+ dataType: "boolean";
1139
+ columnType: "PgBoolean";
1140
+ data: boolean;
1141
+ driverParam: boolean;
1142
+ notNull: true;
1143
+ hasDefault: true;
1144
+ isPrimaryKey: false;
1145
+ isAutoincrement: false;
1146
+ hasRuntimeDefault: false;
1147
+ enumValues: undefined;
1148
+ baseColumn: never;
1149
+ identity: undefined;
1150
+ generated: undefined;
1151
+ }, {}, {}>;
1152
+ availableFrom: drizzle_orm_pg_core.PgColumn<{
1153
+ name: "available_from";
1154
+ tableName: "shop_listings";
1155
+ dataType: "date";
1156
+ columnType: "PgTimestamp";
1157
+ data: Date;
1158
+ driverParam: string;
1159
+ notNull: false;
1160
+ hasDefault: false;
1161
+ isPrimaryKey: false;
1162
+ isAutoincrement: false;
1163
+ hasRuntimeDefault: false;
1164
+ enumValues: undefined;
1165
+ baseColumn: never;
1166
+ identity: undefined;
1167
+ generated: undefined;
1168
+ }, {}, {}>;
1169
+ availableUntil: drizzle_orm_pg_core.PgColumn<{
1170
+ name: "available_until";
1171
+ tableName: "shop_listings";
1172
+ dataType: "date";
1173
+ columnType: "PgTimestamp";
1174
+ data: Date;
1175
+ driverParam: string;
1176
+ notNull: false;
1177
+ hasDefault: false;
1178
+ isPrimaryKey: false;
1179
+ isAutoincrement: false;
1180
+ hasRuntimeDefault: false;
1181
+ enumValues: undefined;
1182
+ baseColumn: never;
1183
+ identity: undefined;
1184
+ generated: undefined;
1185
+ }, {}, {}>;
1186
+ createdAt: drizzle_orm_pg_core.PgColumn<{
1187
+ name: "created_at";
1188
+ tableName: "shop_listings";
1189
+ dataType: "date";
1190
+ columnType: "PgTimestamp";
1191
+ data: Date;
1192
+ driverParam: string;
1193
+ notNull: true;
1194
+ hasDefault: true;
1195
+ isPrimaryKey: false;
1196
+ isAutoincrement: false;
1197
+ hasRuntimeDefault: false;
1198
+ enumValues: undefined;
1199
+ baseColumn: never;
1200
+ identity: undefined;
1201
+ generated: undefined;
1202
+ }, {}, {}>;
1203
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
1204
+ name: "updated_at";
1205
+ tableName: "shop_listings";
1206
+ dataType: "date";
1207
+ columnType: "PgTimestamp";
1208
+ data: Date;
1209
+ driverParam: string;
1210
+ notNull: false;
1211
+ hasDefault: true;
1212
+ isPrimaryKey: false;
1213
+ isAutoincrement: false;
1214
+ hasRuntimeDefault: false;
1215
+ enumValues: undefined;
1216
+ baseColumn: never;
1217
+ identity: undefined;
1218
+ generated: undefined;
1219
+ }, {}, {}>;
1220
+ };
1221
+ dialect: "pg";
1222
+ }>;
1223
+ declare const maps: drizzle_orm_pg_core.PgTableWithColumns<{
1224
+ name: "maps";
1225
+ schema: undefined;
1226
+ columns: {
1227
+ id: drizzle_orm_pg_core.PgColumn<{
1228
+ name: "id";
1229
+ tableName: "maps";
1230
+ dataType: "string";
1231
+ columnType: "PgUUID";
1232
+ data: string;
1233
+ driverParam: string;
1234
+ notNull: true;
1235
+ hasDefault: true;
1236
+ isPrimaryKey: true;
1237
+ isAutoincrement: false;
1238
+ hasRuntimeDefault: false;
1239
+ enumValues: undefined;
1240
+ baseColumn: never;
1241
+ identity: undefined;
1242
+ generated: undefined;
1243
+ }, {}, {}>;
1244
+ identifier: drizzle_orm_pg_core.PgColumn<{
1245
+ name: "identifier";
1246
+ tableName: "maps";
1247
+ dataType: "string";
1248
+ columnType: "PgVarchar";
1249
+ data: string;
1250
+ driverParam: string;
1251
+ notNull: true;
1252
+ hasDefault: false;
1253
+ isPrimaryKey: false;
1254
+ isAutoincrement: false;
1255
+ hasRuntimeDefault: false;
1256
+ enumValues: [string, ...string[]];
1257
+ baseColumn: never;
1258
+ identity: undefined;
1259
+ generated: undefined;
1260
+ }, {}, {
1261
+ length: 255;
1262
+ }>;
1263
+ displayName: drizzle_orm_pg_core.PgColumn<{
1264
+ name: "display_name";
1265
+ tableName: "maps";
1266
+ dataType: "string";
1267
+ columnType: "PgVarchar";
1268
+ data: string;
1269
+ driverParam: string;
1270
+ notNull: true;
1271
+ hasDefault: false;
1272
+ isPrimaryKey: false;
1273
+ isAutoincrement: false;
1274
+ hasRuntimeDefault: false;
1275
+ enumValues: [string, ...string[]];
1276
+ baseColumn: never;
1277
+ identity: undefined;
1278
+ generated: undefined;
1279
+ }, {}, {
1280
+ length: 255;
1281
+ }>;
1282
+ filePath: drizzle_orm_pg_core.PgColumn<{
1283
+ name: "file_path";
1284
+ tableName: "maps";
1285
+ dataType: "string";
1286
+ columnType: "PgVarchar";
1287
+ data: string;
1288
+ driverParam: string;
1289
+ notNull: true;
1290
+ hasDefault: false;
1291
+ isPrimaryKey: false;
1292
+ isAutoincrement: false;
1293
+ hasRuntimeDefault: false;
1294
+ enumValues: [string, ...string[]];
1295
+ baseColumn: never;
1296
+ identity: undefined;
1297
+ generated: undefined;
1298
+ }, {}, {
1299
+ length: 255;
1300
+ }>;
1301
+ tilesetBasePath: drizzle_orm_pg_core.PgColumn<{
1302
+ name: "tileset_base_path";
1303
+ tableName: "maps";
1304
+ dataType: "string";
1305
+ columnType: "PgVarchar";
1306
+ data: string;
1307
+ driverParam: string;
1308
+ notNull: true;
1309
+ hasDefault: true;
1310
+ isPrimaryKey: false;
1311
+ isAutoincrement: false;
1312
+ hasRuntimeDefault: false;
1313
+ enumValues: [string, ...string[]];
1314
+ baseColumn: never;
1315
+ identity: undefined;
1316
+ generated: undefined;
1317
+ }, {}, {
1318
+ length: 255;
1319
+ }>;
1320
+ defaultSpawnTileX: drizzle_orm_pg_core.PgColumn<{
1321
+ name: "default_spawn_tile_x";
1322
+ tableName: "maps";
1323
+ dataType: "number";
1324
+ columnType: "PgDoublePrecision";
1325
+ data: number;
1326
+ driverParam: string | number;
1327
+ notNull: true;
1328
+ hasDefault: true;
1329
+ isPrimaryKey: false;
1330
+ isAutoincrement: false;
1331
+ hasRuntimeDefault: false;
1332
+ enumValues: undefined;
1333
+ baseColumn: never;
1334
+ identity: undefined;
1335
+ generated: undefined;
1336
+ }, {}, {}>;
1337
+ defaultSpawnTileY: drizzle_orm_pg_core.PgColumn<{
1338
+ name: "default_spawn_tile_y";
1339
+ tableName: "maps";
1340
+ dataType: "number";
1341
+ columnType: "PgDoublePrecision";
1342
+ data: number;
1343
+ driverParam: string | number;
1344
+ notNull: true;
1345
+ hasDefault: true;
1346
+ isPrimaryKey: false;
1347
+ isAutoincrement: false;
1348
+ hasRuntimeDefault: false;
1349
+ enumValues: undefined;
1350
+ baseColumn: never;
1351
+ identity: undefined;
1352
+ generated: undefined;
1353
+ }, {}, {}>;
1354
+ description: drizzle_orm_pg_core.PgColumn<{
1355
+ name: "description";
1356
+ tableName: "maps";
1357
+ dataType: "string";
1358
+ columnType: "PgText";
1359
+ data: string;
1360
+ driverParam: string;
1361
+ notNull: false;
1362
+ hasDefault: false;
1363
+ isPrimaryKey: false;
1364
+ isAutoincrement: false;
1365
+ hasRuntimeDefault: false;
1366
+ enumValues: [string, ...string[]];
1367
+ baseColumn: never;
1368
+ identity: undefined;
1369
+ generated: undefined;
1370
+ }, {}, {}>;
1371
+ };
1372
+ dialect: "pg";
1373
+ }>;
1374
+ declare const mapElements: drizzle_orm_pg_core.PgTableWithColumns<{
1375
+ name: "map_elements";
1376
+ schema: undefined;
1377
+ columns: {
1378
+ id: drizzle_orm_pg_core.PgColumn<{
1379
+ name: "id";
1380
+ tableName: "map_elements";
1381
+ dataType: "string";
1382
+ columnType: "PgUUID";
1383
+ data: string;
1384
+ driverParam: string;
1385
+ notNull: true;
1386
+ hasDefault: true;
1387
+ isPrimaryKey: true;
1388
+ isAutoincrement: false;
1389
+ hasRuntimeDefault: false;
1390
+ enumValues: undefined;
1391
+ baseColumn: never;
1392
+ identity: undefined;
1393
+ generated: undefined;
1394
+ }, {}, {}>;
1395
+ mapId: drizzle_orm_pg_core.PgColumn<{
1396
+ name: "map_id";
1397
+ tableName: "map_elements";
1398
+ dataType: "string";
1399
+ columnType: "PgUUID";
1400
+ data: string;
1401
+ driverParam: string;
1402
+ notNull: false;
1403
+ hasDefault: false;
1404
+ isPrimaryKey: false;
1405
+ isAutoincrement: false;
1406
+ hasRuntimeDefault: false;
1407
+ enumValues: undefined;
1408
+ baseColumn: never;
1409
+ identity: undefined;
1410
+ generated: undefined;
1411
+ }, {}, {}>;
1412
+ elementSlug: drizzle_orm_pg_core.PgColumn<{
1413
+ name: "element_slug";
1414
+ tableName: "map_elements";
1415
+ dataType: "string";
1416
+ columnType: "PgVarchar";
1417
+ data: string;
1418
+ driverParam: string;
1419
+ notNull: true;
1420
+ hasDefault: false;
1421
+ isPrimaryKey: false;
1422
+ isAutoincrement: false;
1423
+ hasRuntimeDefault: false;
1424
+ enumValues: [string, ...string[]];
1425
+ baseColumn: never;
1426
+ identity: undefined;
1427
+ generated: undefined;
1428
+ }, {}, {
1429
+ length: 255;
1430
+ }>;
1431
+ interactionType: drizzle_orm_pg_core.PgColumn<{
1432
+ name: "interaction_type";
1433
+ tableName: "map_elements";
1434
+ dataType: "string";
1435
+ columnType: "PgEnumColumn";
1436
+ data: "game_entry" | "game_registry" | "info" | "teleport" | "door_in" | "door_out" | "npc_interaction" | "quest_trigger";
1437
+ driverParam: string;
1438
+ notNull: true;
1439
+ hasDefault: false;
1440
+ isPrimaryKey: false;
1441
+ isAutoincrement: false;
1442
+ hasRuntimeDefault: false;
1443
+ enumValues: ["game_entry", "game_registry", "info", "teleport", "door_in", "door_out", "npc_interaction", "quest_trigger"];
1444
+ baseColumn: never;
1445
+ identity: undefined;
1446
+ generated: undefined;
1447
+ }, {}, {}>;
1448
+ gameId: drizzle_orm_pg_core.PgColumn<{
1449
+ name: "game_id";
1450
+ tableName: "map_elements";
1451
+ dataType: "string";
1452
+ columnType: "PgUUID";
1453
+ data: string;
1454
+ driverParam: string;
1455
+ notNull: false;
1456
+ hasDefault: false;
1457
+ isPrimaryKey: false;
1458
+ isAutoincrement: false;
1459
+ hasRuntimeDefault: false;
1460
+ enumValues: undefined;
1461
+ baseColumn: never;
1462
+ identity: undefined;
1463
+ generated: undefined;
1464
+ }, {}, {}>;
1465
+ metadata: drizzle_orm_pg_core.PgColumn<{
1466
+ name: "metadata";
1467
+ tableName: "map_elements";
1468
+ dataType: "json";
1469
+ columnType: "PgJsonb";
1470
+ data: Record<string, unknown>;
1471
+ driverParam: unknown;
1472
+ notNull: false;
1473
+ hasDefault: true;
1474
+ isPrimaryKey: false;
1475
+ isAutoincrement: false;
1476
+ hasRuntimeDefault: false;
1477
+ enumValues: undefined;
1478
+ baseColumn: never;
1479
+ identity: undefined;
1480
+ generated: undefined;
1481
+ }, {}, {
1482
+ $type: Record<string, unknown>;
1483
+ }>;
1484
+ };
1485
+ dialect: "pg";
1486
+ }>;
1487
+ declare const mapObjects: drizzle_orm_pg_core.PgTableWithColumns<{
1488
+ name: "map_objects";
1489
+ schema: undefined;
1490
+ columns: {
1491
+ id: drizzle_orm_pg_core.PgColumn<{
1492
+ name: "id";
1493
+ tableName: "map_objects";
1494
+ dataType: "string";
1495
+ columnType: "PgUUID";
1496
+ data: string;
1497
+ driverParam: string;
1498
+ notNull: true;
1499
+ hasDefault: true;
1500
+ isPrimaryKey: true;
1501
+ isAutoincrement: false;
1502
+ hasRuntimeDefault: false;
1503
+ enumValues: undefined;
1504
+ baseColumn: never;
1505
+ identity: undefined;
1506
+ generated: undefined;
1507
+ }, {}, {}>;
1508
+ userId: drizzle_orm_pg_core.PgColumn<{
1509
+ name: "user_id";
1510
+ tableName: "map_objects";
1511
+ dataType: "string";
1512
+ columnType: "PgText";
1513
+ data: string;
1514
+ driverParam: string;
1515
+ notNull: true;
1516
+ hasDefault: false;
1517
+ isPrimaryKey: false;
1518
+ isAutoincrement: false;
1519
+ hasRuntimeDefault: false;
1520
+ enumValues: [string, ...string[]];
1521
+ baseColumn: never;
1522
+ identity: undefined;
1523
+ generated: undefined;
1524
+ }, {}, {}>;
1525
+ mapId: drizzle_orm_pg_core.PgColumn<{
1526
+ name: "map_id";
1527
+ tableName: "map_objects";
1528
+ dataType: "string";
1529
+ columnType: "PgUUID";
1530
+ data: string;
1531
+ driverParam: string;
1532
+ notNull: true;
1533
+ hasDefault: false;
1534
+ isPrimaryKey: false;
1535
+ isAutoincrement: false;
1536
+ hasRuntimeDefault: false;
1537
+ enumValues: undefined;
1538
+ baseColumn: never;
1539
+ identity: undefined;
1540
+ generated: undefined;
1541
+ }, {}, {}>;
1542
+ itemId: drizzle_orm_pg_core.PgColumn<{
1543
+ name: "item_id";
1544
+ tableName: "map_objects";
1545
+ dataType: "string";
1546
+ columnType: "PgUUID";
1547
+ data: string;
1548
+ driverParam: string;
1549
+ notNull: true;
1550
+ hasDefault: false;
1551
+ isPrimaryKey: false;
1552
+ isAutoincrement: false;
1553
+ hasRuntimeDefault: false;
1554
+ enumValues: undefined;
1555
+ baseColumn: never;
1556
+ identity: undefined;
1557
+ generated: undefined;
1558
+ }, {}, {}>;
1559
+ worldX: drizzle_orm_pg_core.PgColumn<{
1560
+ name: "world_x";
1561
+ tableName: "map_objects";
1562
+ dataType: "number";
1563
+ columnType: "PgDoublePrecision";
1564
+ data: number;
1565
+ driverParam: string | number;
1566
+ notNull: true;
1567
+ hasDefault: false;
1568
+ isPrimaryKey: false;
1569
+ isAutoincrement: false;
1570
+ hasRuntimeDefault: false;
1571
+ enumValues: undefined;
1572
+ baseColumn: never;
1573
+ identity: undefined;
1574
+ generated: undefined;
1575
+ }, {}, {}>;
1576
+ worldY: drizzle_orm_pg_core.PgColumn<{
1577
+ name: "world_y";
1578
+ tableName: "map_objects";
1579
+ dataType: "number";
1580
+ columnType: "PgDoublePrecision";
1581
+ data: number;
1582
+ driverParam: string | number;
1583
+ notNull: true;
1584
+ hasDefault: false;
1585
+ isPrimaryKey: false;
1586
+ isAutoincrement: false;
1587
+ hasRuntimeDefault: false;
1588
+ enumValues: undefined;
1589
+ baseColumn: never;
1590
+ identity: undefined;
1591
+ generated: undefined;
1592
+ }, {}, {}>;
1593
+ rotation: drizzle_orm_pg_core.PgColumn<{
1594
+ name: "rotation";
1595
+ tableName: "map_objects";
1596
+ dataType: "number";
1597
+ columnType: "PgInteger";
1598
+ data: number;
1599
+ driverParam: string | number;
1600
+ notNull: true;
1601
+ hasDefault: true;
1602
+ isPrimaryKey: false;
1603
+ isAutoincrement: false;
1604
+ hasRuntimeDefault: false;
1605
+ enumValues: undefined;
1606
+ baseColumn: never;
1607
+ identity: undefined;
1608
+ generated: undefined;
1609
+ }, {}, {}>;
1610
+ scale: drizzle_orm_pg_core.PgColumn<{
1611
+ name: "scale";
1612
+ tableName: "map_objects";
1613
+ dataType: "number";
1614
+ columnType: "PgDoublePrecision";
1615
+ data: number;
1616
+ driverParam: string | number;
1617
+ notNull: true;
1618
+ hasDefault: true;
1619
+ isPrimaryKey: false;
1620
+ isAutoincrement: false;
1621
+ hasRuntimeDefault: false;
1622
+ enumValues: undefined;
1623
+ baseColumn: never;
1624
+ identity: undefined;
1625
+ generated: undefined;
1626
+ }, {}, {}>;
1627
+ createdAt: drizzle_orm_pg_core.PgColumn<{
1628
+ name: "created_at";
1629
+ tableName: "map_objects";
1630
+ dataType: "date";
1631
+ columnType: "PgTimestamp";
1632
+ data: Date;
1633
+ driverParam: string;
1634
+ notNull: true;
1635
+ hasDefault: true;
1636
+ isPrimaryKey: false;
1637
+ isAutoincrement: false;
1638
+ hasRuntimeDefault: false;
1639
+ enumValues: undefined;
1640
+ baseColumn: never;
1641
+ identity: undefined;
1642
+ generated: undefined;
1643
+ }, {}, {}>;
1644
+ };
1645
+ dialect: "pg";
1646
+ }>;
1647
+
1648
+ declare const userLevels: drizzle_orm_pg_core.PgTableWithColumns<{
1649
+ name: "user_levels";
1650
+ schema: undefined;
1651
+ columns: {
1652
+ userId: drizzle_orm_pg_core.PgColumn<{
1653
+ name: "user_id";
1654
+ tableName: "user_levels";
1655
+ dataType: "string";
1656
+ columnType: "PgText";
1657
+ data: string;
1658
+ driverParam: string;
1659
+ notNull: true;
1660
+ hasDefault: false;
1661
+ isPrimaryKey: true;
1662
+ isAutoincrement: false;
1663
+ hasRuntimeDefault: false;
1664
+ enumValues: [string, ...string[]];
1665
+ baseColumn: never;
1666
+ identity: undefined;
1667
+ generated: undefined;
1668
+ }, {}, {}>;
1669
+ currentLevel: drizzle_orm_pg_core.PgColumn<{
1670
+ name: "current_level";
1671
+ tableName: "user_levels";
1672
+ dataType: "number";
1673
+ columnType: "PgInteger";
1674
+ data: number;
1675
+ driverParam: string | number;
1676
+ notNull: true;
1677
+ hasDefault: true;
1678
+ isPrimaryKey: false;
1679
+ isAutoincrement: false;
1680
+ hasRuntimeDefault: false;
1681
+ enumValues: undefined;
1682
+ baseColumn: never;
1683
+ identity: undefined;
1684
+ generated: undefined;
1685
+ }, {}, {}>;
1686
+ currentXp: drizzle_orm_pg_core.PgColumn<{
1687
+ name: "current_xp";
1688
+ tableName: "user_levels";
1689
+ dataType: "number";
1690
+ columnType: "PgDoublePrecision";
1691
+ data: number;
1692
+ driverParam: string | number;
1693
+ notNull: true;
1694
+ hasDefault: true;
1695
+ isPrimaryKey: false;
1696
+ isAutoincrement: false;
1697
+ hasRuntimeDefault: false;
1698
+ enumValues: undefined;
1699
+ baseColumn: never;
1700
+ identity: undefined;
1701
+ generated: undefined;
1702
+ }, {}, {}>;
1703
+ totalXP: drizzle_orm_pg_core.PgColumn<{
1704
+ name: "total_xp";
1705
+ tableName: "user_levels";
1706
+ dataType: "number";
1707
+ columnType: "PgDoublePrecision";
1708
+ data: number;
1709
+ driverParam: string | number;
1710
+ notNull: true;
1711
+ hasDefault: true;
1712
+ isPrimaryKey: false;
1713
+ isAutoincrement: false;
1714
+ hasRuntimeDefault: false;
1715
+ enumValues: undefined;
1716
+ baseColumn: never;
1717
+ identity: undefined;
1718
+ generated: undefined;
1719
+ }, {}, {}>;
1720
+ lastLevelUpAt: drizzle_orm_pg_core.PgColumn<{
1721
+ name: "last_level_up_at";
1722
+ tableName: "user_levels";
1723
+ dataType: "date";
1724
+ columnType: "PgTimestamp";
1725
+ data: Date;
1726
+ driverParam: string;
1727
+ notNull: false;
1728
+ hasDefault: false;
1729
+ isPrimaryKey: false;
1730
+ isAutoincrement: false;
1731
+ hasRuntimeDefault: false;
1732
+ enumValues: undefined;
1733
+ baseColumn: never;
1734
+ identity: undefined;
1735
+ generated: undefined;
1736
+ }, {}, {}>;
1737
+ createdAt: drizzle_orm_pg_core.PgColumn<{
1738
+ name: "created_at";
1739
+ tableName: "user_levels";
1740
+ dataType: "date";
1741
+ columnType: "PgTimestamp";
1742
+ data: Date;
1743
+ driverParam: string;
1744
+ notNull: true;
1745
+ hasDefault: true;
1746
+ isPrimaryKey: false;
1747
+ isAutoincrement: false;
1748
+ hasRuntimeDefault: false;
1749
+ enumValues: undefined;
1750
+ baseColumn: never;
1751
+ identity: undefined;
1752
+ generated: undefined;
1753
+ }, {}, {}>;
1754
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
1755
+ name: "updated_at";
1756
+ tableName: "user_levels";
1757
+ dataType: "date";
1758
+ columnType: "PgTimestamp";
1759
+ data: Date;
1760
+ driverParam: string;
1761
+ notNull: false;
1762
+ hasDefault: true;
1763
+ isPrimaryKey: false;
1764
+ isAutoincrement: false;
1765
+ hasRuntimeDefault: false;
1766
+ enumValues: undefined;
1767
+ baseColumn: never;
1768
+ identity: undefined;
1769
+ generated: undefined;
1770
+ }, {}, {}>;
1771
+ };
1772
+ dialect: "pg";
1773
+ }>;
1774
+ declare const levelConfigs: drizzle_orm_pg_core.PgTableWithColumns<{
1775
+ name: "level_configs";
1776
+ schema: undefined;
1777
+ columns: {
1778
+ id: drizzle_orm_pg_core.PgColumn<{
1779
+ name: "id";
1780
+ tableName: "level_configs";
1781
+ dataType: "string";
1782
+ columnType: "PgUUID";
1783
+ data: string;
1784
+ driverParam: string;
1785
+ notNull: true;
1786
+ hasDefault: true;
1787
+ isPrimaryKey: true;
1788
+ isAutoincrement: false;
1789
+ hasRuntimeDefault: false;
1790
+ enumValues: undefined;
1791
+ baseColumn: never;
1792
+ identity: undefined;
1793
+ generated: undefined;
1794
+ }, {}, {}>;
1795
+ level: drizzle_orm_pg_core.PgColumn<{
1796
+ name: "level";
1797
+ tableName: "level_configs";
1798
+ dataType: "number";
1799
+ columnType: "PgInteger";
1800
+ data: number;
1801
+ driverParam: string | number;
1802
+ notNull: true;
1803
+ hasDefault: false;
1804
+ isPrimaryKey: false;
1805
+ isAutoincrement: false;
1806
+ hasRuntimeDefault: false;
1807
+ enumValues: undefined;
1808
+ baseColumn: never;
1809
+ identity: undefined;
1810
+ generated: undefined;
1811
+ }, {}, {}>;
1812
+ xpRequired: drizzle_orm_pg_core.PgColumn<{
1813
+ name: "xp_required";
1814
+ tableName: "level_configs";
1815
+ dataType: "number";
1816
+ columnType: "PgInteger";
1817
+ data: number;
1818
+ driverParam: string | number;
1819
+ notNull: true;
1820
+ hasDefault: false;
1821
+ isPrimaryKey: false;
1822
+ isAutoincrement: false;
1823
+ hasRuntimeDefault: false;
1824
+ enumValues: undefined;
1825
+ baseColumn: never;
1826
+ identity: undefined;
1827
+ generated: undefined;
1828
+ }, {}, {}>;
1829
+ creditsReward: drizzle_orm_pg_core.PgColumn<{
1830
+ name: "credits_reward";
1831
+ tableName: "level_configs";
1832
+ dataType: "number";
1833
+ columnType: "PgInteger";
1834
+ data: number;
1835
+ driverParam: string | number;
1836
+ notNull: true;
1837
+ hasDefault: true;
1838
+ isPrimaryKey: false;
1839
+ isAutoincrement: false;
1840
+ hasRuntimeDefault: false;
1841
+ enumValues: undefined;
1842
+ baseColumn: never;
1843
+ identity: undefined;
1844
+ generated: undefined;
1845
+ }, {}, {}>;
1846
+ createdAt: drizzle_orm_pg_core.PgColumn<{
1847
+ name: "created_at";
1848
+ tableName: "level_configs";
1849
+ dataType: "date";
1850
+ columnType: "PgTimestamp";
1851
+ data: Date;
1852
+ driverParam: string;
1853
+ notNull: true;
1854
+ hasDefault: true;
1855
+ isPrimaryKey: false;
1856
+ isAutoincrement: false;
1857
+ hasRuntimeDefault: false;
1858
+ enumValues: undefined;
1859
+ baseColumn: never;
1860
+ identity: undefined;
1861
+ generated: undefined;
1862
+ }, {}, {}>;
1863
+ };
1864
+ dialect: "pg";
1865
+ }>;
1866
+
1867
+ declare const spriteTemplates: drizzle_orm_pg_core.PgTableWithColumns<{
1868
+ name: "sprite_templates";
1869
+ schema: undefined;
1870
+ columns: {
1871
+ id: drizzle_orm_pg_core.PgColumn<{
1872
+ name: "id";
1873
+ tableName: "sprite_templates";
1874
+ dataType: "string";
1875
+ columnType: "PgUUID";
1876
+ data: string;
1877
+ driverParam: string;
1878
+ notNull: true;
1879
+ hasDefault: true;
1880
+ isPrimaryKey: true;
1881
+ isAutoincrement: false;
1882
+ hasRuntimeDefault: false;
1883
+ enumValues: undefined;
1884
+ baseColumn: never;
1885
+ identity: undefined;
1886
+ generated: undefined;
1887
+ }, {}, {}>;
1888
+ slug: drizzle_orm_pg_core.PgColumn<{
1889
+ name: "slug";
1890
+ tableName: "sprite_templates";
1891
+ dataType: "string";
1892
+ columnType: "PgVarchar";
1893
+ data: string;
1894
+ driverParam: string;
1895
+ notNull: true;
1896
+ hasDefault: false;
1897
+ isPrimaryKey: false;
1898
+ isAutoincrement: false;
1899
+ hasRuntimeDefault: false;
1900
+ enumValues: [string, ...string[]];
1901
+ baseColumn: never;
1902
+ identity: undefined;
1903
+ generated: undefined;
1904
+ }, {}, {
1905
+ length: 64;
1906
+ }>;
1907
+ url: drizzle_orm_pg_core.PgColumn<{
1908
+ name: "url";
1909
+ tableName: "sprite_templates";
1910
+ dataType: "string";
1911
+ columnType: "PgVarchar";
1912
+ data: string;
1913
+ driverParam: string;
1914
+ notNull: true;
1915
+ hasDefault: false;
1916
+ isPrimaryKey: false;
1917
+ isAutoincrement: false;
1918
+ hasRuntimeDefault: false;
1919
+ enumValues: [string, ...string[]];
1920
+ baseColumn: never;
1921
+ identity: undefined;
1922
+ generated: undefined;
1923
+ }, {}, {
1924
+ length: 255;
1925
+ }>;
1926
+ createdAt: drizzle_orm_pg_core.PgColumn<{
1927
+ name: "created_at";
1928
+ tableName: "sprite_templates";
1929
+ dataType: "date";
1930
+ columnType: "PgTimestamp";
1931
+ data: Date;
1932
+ driverParam: string;
1933
+ notNull: true;
1934
+ hasDefault: true;
1935
+ isPrimaryKey: false;
1936
+ isAutoincrement: false;
1937
+ hasRuntimeDefault: false;
1938
+ enumValues: undefined;
1939
+ baseColumn: never;
1940
+ identity: undefined;
1941
+ generated: undefined;
1942
+ }, {}, {}>;
1943
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
1944
+ name: "updated_at";
1945
+ tableName: "sprite_templates";
1946
+ dataType: "date";
1947
+ columnType: "PgTimestamp";
1948
+ data: Date;
1949
+ driverParam: string;
1950
+ notNull: true;
1951
+ hasDefault: true;
1952
+ isPrimaryKey: false;
1953
+ isAutoincrement: false;
1954
+ hasRuntimeDefault: false;
1955
+ enumValues: undefined;
1956
+ baseColumn: never;
1957
+ identity: undefined;
1958
+ generated: undefined;
1959
+ }, {}, {}>;
1960
+ };
1961
+ dialect: "pg";
1962
+ }>;
1963
+ declare const characterComponents: drizzle_orm_pg_core.PgTableWithColumns<{
1964
+ name: "character_components";
1965
+ schema: undefined;
1966
+ columns: {
1967
+ id: drizzle_orm_pg_core.PgColumn<{
1968
+ name: "id";
1969
+ tableName: "character_components";
1970
+ dataType: "string";
1971
+ columnType: "PgUUID";
1972
+ data: string;
1973
+ driverParam: string;
1974
+ notNull: true;
1975
+ hasDefault: true;
1976
+ isPrimaryKey: true;
1977
+ isAutoincrement: false;
1978
+ hasRuntimeDefault: false;
1979
+ enumValues: undefined;
1980
+ baseColumn: never;
1981
+ identity: undefined;
1982
+ generated: undefined;
1983
+ }, {}, {}>;
1984
+ componentType: drizzle_orm_pg_core.PgColumn<{
1985
+ name: "component_type";
1986
+ tableName: "character_components";
1987
+ dataType: "string";
1988
+ columnType: "PgEnumColumn";
1989
+ data: "accessory" | "body" | "outfit" | "hairstyle" | "eyes";
1990
+ driverParam: string;
1991
+ notNull: true;
1992
+ hasDefault: false;
1993
+ isPrimaryKey: false;
1994
+ isAutoincrement: false;
1995
+ hasRuntimeDefault: false;
1996
+ enumValues: ["body", "outfit", "hairstyle", "eyes", "accessory"];
1997
+ baseColumn: never;
1998
+ identity: undefined;
1999
+ generated: undefined;
2000
+ }, {}, {}>;
2001
+ slug: drizzle_orm_pg_core.PgColumn<{
2002
+ name: "slug";
2003
+ tableName: "character_components";
2004
+ dataType: "string";
2005
+ columnType: "PgVarchar";
2006
+ data: string;
2007
+ driverParam: string;
2008
+ notNull: true;
2009
+ hasDefault: false;
2010
+ isPrimaryKey: false;
2011
+ isAutoincrement: false;
2012
+ hasRuntimeDefault: false;
2013
+ enumValues: [string, ...string[]];
2014
+ baseColumn: never;
2015
+ identity: undefined;
2016
+ generated: undefined;
2017
+ }, {}, {
2018
+ length: 128;
2019
+ }>;
2020
+ displayName: drizzle_orm_pg_core.PgColumn<{
2021
+ name: "display_name";
2022
+ tableName: "character_components";
2023
+ dataType: "string";
2024
+ columnType: "PgVarchar";
2025
+ data: string;
2026
+ driverParam: string;
2027
+ notNull: true;
2028
+ hasDefault: false;
2029
+ isPrimaryKey: false;
2030
+ isAutoincrement: false;
2031
+ hasRuntimeDefault: false;
2032
+ enumValues: [string, ...string[]];
2033
+ baseColumn: never;
2034
+ identity: undefined;
2035
+ generated: undefined;
2036
+ }, {}, {
2037
+ length: 128;
2038
+ }>;
2039
+ slot: drizzle_orm_pg_core.PgColumn<{
2040
+ name: "slot";
2041
+ tableName: "character_components";
2042
+ dataType: "string";
2043
+ columnType: "PgVarchar";
2044
+ data: string;
2045
+ driverParam: string;
2046
+ notNull: true;
2047
+ hasDefault: false;
2048
+ isPrimaryKey: false;
2049
+ isAutoincrement: false;
2050
+ hasRuntimeDefault: false;
2051
+ enumValues: [string, ...string[]];
2052
+ baseColumn: never;
2053
+ identity: undefined;
2054
+ generated: undefined;
2055
+ }, {}, {
2056
+ length: 64;
2057
+ }>;
2058
+ spriteSheetId: drizzle_orm_pg_core.PgColumn<{
2059
+ name: "sprite_sheet_id";
2060
+ tableName: "character_components";
2061
+ dataType: "string";
2062
+ columnType: "PgUUID";
2063
+ data: string;
2064
+ driverParam: string;
2065
+ notNull: true;
2066
+ hasDefault: false;
2067
+ isPrimaryKey: false;
2068
+ isAutoincrement: false;
2069
+ hasRuntimeDefault: false;
2070
+ enumValues: undefined;
2071
+ baseColumn: never;
2072
+ identity: undefined;
2073
+ generated: undefined;
2074
+ }, {}, {}>;
2075
+ unlockLevel: drizzle_orm_pg_core.PgColumn<{
2076
+ name: "unlock_level";
2077
+ tableName: "character_components";
2078
+ dataType: "number";
2079
+ columnType: "PgInteger";
2080
+ data: number;
2081
+ driverParam: string | number;
2082
+ notNull: true;
2083
+ hasDefault: true;
2084
+ isPrimaryKey: false;
2085
+ isAutoincrement: false;
2086
+ hasRuntimeDefault: false;
2087
+ enumValues: undefined;
2088
+ baseColumn: never;
2089
+ identity: undefined;
2090
+ generated: undefined;
2091
+ }, {}, {}>;
2092
+ variant: drizzle_orm_pg_core.PgColumn<{
2093
+ name: "variant";
2094
+ tableName: "character_components";
2095
+ dataType: "number";
2096
+ columnType: "PgInteger";
2097
+ data: number;
2098
+ driverParam: string | number;
2099
+ notNull: true;
2100
+ hasDefault: true;
2101
+ isPrimaryKey: false;
2102
+ isAutoincrement: false;
2103
+ hasRuntimeDefault: false;
2104
+ enumValues: undefined;
2105
+ baseColumn: never;
2106
+ identity: undefined;
2107
+ generated: undefined;
2108
+ }, {}, {}>;
2109
+ createdAt: drizzle_orm_pg_core.PgColumn<{
2110
+ name: "created_at";
2111
+ tableName: "character_components";
2112
+ dataType: "date";
2113
+ columnType: "PgTimestamp";
2114
+ data: Date;
2115
+ driverParam: string;
2116
+ notNull: true;
2117
+ hasDefault: true;
2118
+ isPrimaryKey: false;
2119
+ isAutoincrement: false;
2120
+ hasRuntimeDefault: false;
2121
+ enumValues: undefined;
2122
+ baseColumn: never;
2123
+ identity: undefined;
2124
+ generated: undefined;
2125
+ }, {}, {}>;
2126
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
2127
+ name: "updated_at";
2128
+ tableName: "character_components";
2129
+ dataType: "date";
2130
+ columnType: "PgTimestamp";
2131
+ data: Date;
2132
+ driverParam: string;
2133
+ notNull: true;
2134
+ hasDefault: true;
2135
+ isPrimaryKey: false;
2136
+ isAutoincrement: false;
2137
+ hasRuntimeDefault: false;
2138
+ enumValues: undefined;
2139
+ baseColumn: never;
2140
+ identity: undefined;
2141
+ generated: undefined;
2142
+ }, {}, {}>;
2143
+ };
2144
+ dialect: "pg";
2145
+ }>;
2146
+ declare const playerCharacters: drizzle_orm_pg_core.PgTableWithColumns<{
2147
+ name: "player_characters";
2148
+ schema: undefined;
2149
+ columns: {
2150
+ id: drizzle_orm_pg_core.PgColumn<{
2151
+ name: "id";
2152
+ tableName: "player_characters";
2153
+ dataType: "string";
2154
+ columnType: "PgUUID";
2155
+ data: string;
2156
+ driverParam: string;
2157
+ notNull: true;
2158
+ hasDefault: true;
2159
+ isPrimaryKey: true;
2160
+ isAutoincrement: false;
2161
+ hasRuntimeDefault: false;
2162
+ enumValues: undefined;
2163
+ baseColumn: never;
2164
+ identity: undefined;
2165
+ generated: undefined;
2166
+ }, {}, {}>;
2167
+ userId: drizzle_orm_pg_core.PgColumn<{
2168
+ name: "user_id";
2169
+ tableName: "player_characters";
2170
+ dataType: "string";
2171
+ columnType: "PgText";
2172
+ data: string;
2173
+ driverParam: string;
2174
+ notNull: true;
2175
+ hasDefault: false;
2176
+ isPrimaryKey: false;
2177
+ isAutoincrement: false;
2178
+ hasRuntimeDefault: false;
2179
+ enumValues: [string, ...string[]];
2180
+ baseColumn: never;
2181
+ identity: undefined;
2182
+ generated: undefined;
2183
+ }, {}, {}>;
2184
+ bodyComponentId: drizzle_orm_pg_core.PgColumn<{
2185
+ name: "body_component_id";
2186
+ tableName: "player_characters";
2187
+ dataType: "string";
2188
+ columnType: "PgUUID";
2189
+ data: string;
2190
+ driverParam: string;
2191
+ notNull: true;
2192
+ hasDefault: false;
2193
+ isPrimaryKey: false;
2194
+ isAutoincrement: false;
2195
+ hasRuntimeDefault: false;
2196
+ enumValues: undefined;
2197
+ baseColumn: never;
2198
+ identity: undefined;
2199
+ generated: undefined;
2200
+ }, {}, {}>;
2201
+ eyesComponentId: drizzle_orm_pg_core.PgColumn<{
2202
+ name: "eyes_component_id";
2203
+ tableName: "player_characters";
2204
+ dataType: "string";
2205
+ columnType: "PgUUID";
2206
+ data: string;
2207
+ driverParam: string;
2208
+ notNull: true;
2209
+ hasDefault: false;
2210
+ isPrimaryKey: false;
2211
+ isAutoincrement: false;
2212
+ hasRuntimeDefault: false;
2213
+ enumValues: undefined;
2214
+ baseColumn: never;
2215
+ identity: undefined;
2216
+ generated: undefined;
2217
+ }, {}, {}>;
2218
+ hairstyleComponentId: drizzle_orm_pg_core.PgColumn<{
2219
+ name: "hairstyle_component_id";
2220
+ tableName: "player_characters";
2221
+ dataType: "string";
2222
+ columnType: "PgUUID";
2223
+ data: string;
2224
+ driverParam: string;
2225
+ notNull: true;
2226
+ hasDefault: false;
2227
+ isPrimaryKey: false;
2228
+ isAutoincrement: false;
2229
+ hasRuntimeDefault: false;
2230
+ enumValues: undefined;
2231
+ baseColumn: never;
2232
+ identity: undefined;
2233
+ generated: undefined;
2234
+ }, {}, {}>;
2235
+ outfitComponentId: drizzle_orm_pg_core.PgColumn<{
2236
+ name: "outfit_component_id";
2237
+ tableName: "player_characters";
2238
+ dataType: "string";
2239
+ columnType: "PgUUID";
2240
+ data: string;
2241
+ driverParam: string;
2242
+ notNull: true;
2243
+ hasDefault: false;
2244
+ isPrimaryKey: false;
2245
+ isAutoincrement: false;
2246
+ hasRuntimeDefault: false;
2247
+ enumValues: undefined;
2248
+ baseColumn: never;
2249
+ identity: undefined;
2250
+ generated: undefined;
2251
+ }, {}, {}>;
2252
+ createdAt: drizzle_orm_pg_core.PgColumn<{
2253
+ name: "created_at";
2254
+ tableName: "player_characters";
2255
+ dataType: "date";
2256
+ columnType: "PgTimestamp";
2257
+ data: Date;
2258
+ driverParam: string;
2259
+ notNull: true;
2260
+ hasDefault: true;
2261
+ isPrimaryKey: false;
2262
+ isAutoincrement: false;
2263
+ hasRuntimeDefault: false;
2264
+ enumValues: undefined;
2265
+ baseColumn: never;
2266
+ identity: undefined;
2267
+ generated: undefined;
2268
+ }, {}, {}>;
2269
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
2270
+ name: "updated_at";
2271
+ tableName: "player_characters";
2272
+ dataType: "date";
2273
+ columnType: "PgTimestamp";
2274
+ data: Date;
2275
+ driverParam: string;
2276
+ notNull: true;
2277
+ hasDefault: true;
2278
+ isPrimaryKey: false;
2279
+ isAutoincrement: false;
2280
+ hasRuntimeDefault: false;
2281
+ enumValues: undefined;
2282
+ baseColumn: never;
2283
+ identity: undefined;
2284
+ generated: undefined;
2285
+ }, {}, {}>;
2286
+ };
2287
+ dialect: "pg";
2288
+ }>;
2289
+ declare const playerCharacterAccessories: drizzle_orm_pg_core.PgTableWithColumns<{
2290
+ name: "player_character_accessories";
2291
+ schema: undefined;
2292
+ columns: {
2293
+ id: drizzle_orm_pg_core.PgColumn<{
2294
+ name: "id";
2295
+ tableName: "player_character_accessories";
2296
+ dataType: "string";
2297
+ columnType: "PgUUID";
2298
+ data: string;
2299
+ driverParam: string;
2300
+ notNull: true;
2301
+ hasDefault: true;
2302
+ isPrimaryKey: true;
2303
+ isAutoincrement: false;
2304
+ hasRuntimeDefault: false;
2305
+ enumValues: undefined;
2306
+ baseColumn: never;
2307
+ identity: undefined;
2308
+ generated: undefined;
2309
+ }, {}, {}>;
2310
+ playerCharacterId: drizzle_orm_pg_core.PgColumn<{
2311
+ name: "player_character_id";
2312
+ tableName: "player_character_accessories";
2313
+ dataType: "string";
2314
+ columnType: "PgUUID";
2315
+ data: string;
2316
+ driverParam: string;
2317
+ notNull: true;
2318
+ hasDefault: false;
2319
+ isPrimaryKey: false;
2320
+ isAutoincrement: false;
2321
+ hasRuntimeDefault: false;
2322
+ enumValues: undefined;
2323
+ baseColumn: never;
2324
+ identity: undefined;
2325
+ generated: undefined;
2326
+ }, {}, {}>;
2327
+ accessoryComponentId: drizzle_orm_pg_core.PgColumn<{
2328
+ name: "accessory_component_id";
2329
+ tableName: "player_character_accessories";
2330
+ dataType: "string";
2331
+ columnType: "PgUUID";
2332
+ data: string;
2333
+ driverParam: string;
2334
+ notNull: true;
2335
+ hasDefault: false;
2336
+ isPrimaryKey: false;
2337
+ isAutoincrement: false;
2338
+ hasRuntimeDefault: false;
2339
+ enumValues: undefined;
2340
+ baseColumn: never;
2341
+ identity: undefined;
2342
+ generated: undefined;
2343
+ }, {}, {}>;
2344
+ slot: drizzle_orm_pg_core.PgColumn<{
2345
+ name: "slot";
2346
+ tableName: "player_character_accessories";
2347
+ dataType: "string";
2348
+ columnType: "PgVarchar";
2349
+ data: string;
2350
+ driverParam: string;
2351
+ notNull: true;
2352
+ hasDefault: false;
2353
+ isPrimaryKey: false;
2354
+ isAutoincrement: false;
2355
+ hasRuntimeDefault: false;
2356
+ enumValues: [string, ...string[]];
2357
+ baseColumn: never;
2358
+ identity: undefined;
2359
+ generated: undefined;
2360
+ }, {}, {
2361
+ length: 64;
2362
+ }>;
2363
+ equippedAt: drizzle_orm_pg_core.PgColumn<{
2364
+ name: "equipped_at";
2365
+ tableName: "player_character_accessories";
2366
+ dataType: "date";
2367
+ columnType: "PgTimestamp";
2368
+ data: Date;
2369
+ driverParam: string;
2370
+ notNull: true;
2371
+ hasDefault: true;
2372
+ isPrimaryKey: false;
2373
+ isAutoincrement: false;
2374
+ hasRuntimeDefault: false;
2375
+ enumValues: undefined;
2376
+ baseColumn: never;
2377
+ identity: undefined;
2378
+ generated: undefined;
2379
+ }, {}, {}>;
2380
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
2381
+ name: "updated_at";
2382
+ tableName: "player_character_accessories";
2383
+ dataType: "date";
2384
+ columnType: "PgTimestamp";
2385
+ data: Date;
2386
+ driverParam: string;
2387
+ notNull: true;
2388
+ hasDefault: true;
2389
+ isPrimaryKey: false;
2390
+ isAutoincrement: false;
2391
+ hasRuntimeDefault: false;
2392
+ enumValues: undefined;
2393
+ baseColumn: never;
2394
+ identity: undefined;
2395
+ generated: undefined;
2396
+ }, {}, {}>;
2397
+ };
2398
+ dialect: "pg";
2399
+ }>;
2400
+
2401
+ declare const achievementIntervalEnum: drizzle_orm_pg_core.PgEnum<["daily", "weekly"]>;
2402
+ declare const achievements: drizzle_orm_pg_core.PgTableWithColumns<{
2403
+ name: "achievements";
2404
+ schema: undefined;
2405
+ columns: {
2406
+ id: drizzle_orm_pg_core.PgColumn<{
2407
+ name: "id";
2408
+ tableName: "achievements";
2409
+ dataType: "string";
2410
+ columnType: "PgVarchar";
2411
+ data: string;
2412
+ driverParam: string;
2413
+ notNull: true;
2414
+ hasDefault: false;
2415
+ isPrimaryKey: true;
2416
+ isAutoincrement: false;
2417
+ hasRuntimeDefault: false;
2418
+ enumValues: [string, ...string[]];
2419
+ baseColumn: never;
2420
+ identity: undefined;
2421
+ generated: undefined;
2422
+ }, {}, {
2423
+ length: 255;
2424
+ }>;
2425
+ title: drizzle_orm_pg_core.PgColumn<{
2426
+ name: "title";
2427
+ tableName: "achievements";
2428
+ dataType: "string";
2429
+ columnType: "PgVarchar";
2430
+ data: string;
2431
+ driverParam: string;
2432
+ notNull: true;
2433
+ hasDefault: false;
2434
+ isPrimaryKey: false;
2435
+ isAutoincrement: false;
2436
+ hasRuntimeDefault: false;
2437
+ enumValues: [string, ...string[]];
2438
+ baseColumn: never;
2439
+ identity: undefined;
2440
+ generated: undefined;
2441
+ }, {}, {
2442
+ length: 255;
2443
+ }>;
2444
+ description: drizzle_orm_pg_core.PgColumn<{
2445
+ name: "description";
2446
+ tableName: "achievements";
2447
+ dataType: "string";
2448
+ columnType: "PgText";
2449
+ data: string;
2450
+ driverParam: string;
2451
+ notNull: false;
2452
+ hasDefault: false;
2453
+ isPrimaryKey: false;
2454
+ isAutoincrement: false;
2455
+ hasRuntimeDefault: false;
2456
+ enumValues: [string, ...string[]];
2457
+ baseColumn: never;
2458
+ identity: undefined;
2459
+ generated: undefined;
2460
+ }, {}, {}>;
2461
+ intervalType: drizzle_orm_pg_core.PgColumn<{
2462
+ name: "interval_type";
2463
+ tableName: "achievements";
2464
+ dataType: "string";
2465
+ columnType: "PgEnumColumn";
2466
+ data: "daily" | "weekly";
2467
+ driverParam: string;
2468
+ notNull: true;
2469
+ hasDefault: false;
2470
+ isPrimaryKey: false;
2471
+ isAutoincrement: false;
2472
+ hasRuntimeDefault: false;
2473
+ enumValues: ["daily", "weekly"];
2474
+ baseColumn: never;
2475
+ identity: undefined;
2476
+ generated: undefined;
2477
+ }, {}, {}>;
2478
+ rewardCredits: drizzle_orm_pg_core.PgColumn<{
2479
+ name: "reward_credits";
2480
+ tableName: "achievements";
2481
+ dataType: "number";
2482
+ columnType: "PgInteger";
2483
+ data: number;
2484
+ driverParam: string | number;
2485
+ notNull: true;
2486
+ hasDefault: true;
2487
+ isPrimaryKey: false;
2488
+ isAutoincrement: false;
2489
+ hasRuntimeDefault: false;
2490
+ enumValues: undefined;
2491
+ baseColumn: never;
2492
+ identity: undefined;
2493
+ generated: undefined;
2494
+ }, {}, {}>;
2495
+ limitPerInterval: drizzle_orm_pg_core.PgColumn<{
2496
+ name: "limit_per_interval";
2497
+ tableName: "achievements";
2498
+ dataType: "number";
2499
+ columnType: "PgInteger";
2500
+ data: number;
2501
+ driverParam: string | number;
2502
+ notNull: true;
2503
+ hasDefault: true;
2504
+ isPrimaryKey: false;
2505
+ isAutoincrement: false;
2506
+ hasRuntimeDefault: false;
2507
+ enumValues: undefined;
2508
+ baseColumn: never;
2509
+ identity: undefined;
2510
+ generated: undefined;
2511
+ }, {}, {}>;
2512
+ completionType: drizzle_orm_pg_core.PgColumn<{
2513
+ name: "completion_type";
2514
+ tableName: "achievements";
2515
+ dataType: "string";
2516
+ columnType: "PgVarchar";
2517
+ data: string;
2518
+ driverParam: string;
2519
+ notNull: true;
2520
+ hasDefault: false;
2521
+ isPrimaryKey: false;
2522
+ isAutoincrement: false;
2523
+ hasRuntimeDefault: false;
2524
+ enumValues: [string, ...string[]];
2525
+ baseColumn: never;
2526
+ identity: undefined;
2527
+ generated: undefined;
2528
+ }, {}, {
2529
+ length: 50;
2530
+ }>;
2531
+ completionConfig: drizzle_orm_pg_core.PgColumn<{
2532
+ name: "completion_config";
2533
+ tableName: "achievements";
2534
+ dataType: "json";
2535
+ columnType: "PgJsonb";
2536
+ data: unknown;
2537
+ driverParam: unknown;
2538
+ notNull: true;
2539
+ hasDefault: true;
2540
+ isPrimaryKey: false;
2541
+ isAutoincrement: false;
2542
+ hasRuntimeDefault: false;
2543
+ enumValues: undefined;
2544
+ baseColumn: never;
2545
+ identity: undefined;
2546
+ generated: undefined;
2547
+ }, {}, {}>;
2548
+ scope: drizzle_orm_pg_core.PgColumn<{
2549
+ name: "scope";
2550
+ tableName: "achievements";
2551
+ dataType: "json";
2552
+ columnType: "PgJsonb";
2553
+ data: unknown;
2554
+ driverParam: unknown;
2555
+ notNull: true;
2556
+ hasDefault: true;
2557
+ isPrimaryKey: false;
2558
+ isAutoincrement: false;
2559
+ hasRuntimeDefault: false;
2560
+ enumValues: undefined;
2561
+ baseColumn: never;
2562
+ identity: undefined;
2563
+ generated: undefined;
2564
+ }, {}, {}>;
2565
+ active: drizzle_orm_pg_core.PgColumn<{
2566
+ name: "active";
2567
+ tableName: "achievements";
2568
+ dataType: "boolean";
2569
+ columnType: "PgBoolean";
2570
+ data: boolean;
2571
+ driverParam: boolean;
2572
+ notNull: true;
2573
+ hasDefault: true;
2574
+ isPrimaryKey: false;
2575
+ isAutoincrement: false;
2576
+ hasRuntimeDefault: false;
2577
+ enumValues: undefined;
2578
+ baseColumn: never;
2579
+ identity: undefined;
2580
+ generated: undefined;
2581
+ }, {}, {}>;
2582
+ createdAt: drizzle_orm_pg_core.PgColumn<{
2583
+ name: "created_at";
2584
+ tableName: "achievements";
2585
+ dataType: "date";
2586
+ columnType: "PgTimestamp";
2587
+ data: Date;
2588
+ driverParam: string;
2589
+ notNull: false;
2590
+ hasDefault: true;
2591
+ isPrimaryKey: false;
2592
+ isAutoincrement: false;
2593
+ hasRuntimeDefault: false;
2594
+ enumValues: undefined;
2595
+ baseColumn: never;
2596
+ identity: undefined;
2597
+ generated: undefined;
2598
+ }, {}, {}>;
2599
+ updatedAt: drizzle_orm_pg_core.PgColumn<{
2600
+ name: "updated_at";
2601
+ tableName: "achievements";
2602
+ dataType: "date";
2603
+ columnType: "PgTimestamp";
2604
+ data: Date;
2605
+ driverParam: string;
2606
+ notNull: false;
2607
+ hasDefault: true;
2608
+ isPrimaryKey: false;
2609
+ isAutoincrement: false;
2610
+ hasRuntimeDefault: false;
2611
+ enumValues: undefined;
2612
+ baseColumn: never;
2613
+ identity: undefined;
2614
+ generated: undefined;
2615
+ }, {}, {}>;
2616
+ };
2617
+ dialect: "pg";
2618
+ }>;
2619
+ declare const DeveloperStatusResponseSchema: z.ZodObject<{
2620
+ status: z.ZodEnum<["none", "pending", "approved"]>;
2621
+ }, "strip", z.ZodTypeAny, {
2622
+ status: "none" | "pending" | "approved";
2623
+ }, {
2624
+ status: "none" | "pending" | "approved";
2625
+ }>;
2626
+ declare const UpsertGameMetadataSchema: z.ZodEffects<z.ZodObject<{
2627
+ displayName: z.ZodString;
2628
+ mapElementId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
2629
+ platform: z.ZodEnum<["web", "godot", "unity"]>;
2630
+ metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2631
+ gameType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["hosted", "external"]>>>;
2632
+ externalUrl: z.ZodOptional<z.ZodString>;
2633
+ }, "strip", z.ZodTypeAny, {
2634
+ displayName: string;
2635
+ gameType: "hosted" | "external";
2636
+ platform: "web" | "godot" | "unity";
2637
+ metadata: Record<string, unknown>;
2638
+ externalUrl?: string | undefined;
2639
+ mapElementId?: string | null | undefined;
2640
+ }, {
2641
+ displayName: string;
2642
+ platform: "web" | "godot" | "unity";
2643
+ gameType?: "hosted" | "external" | undefined;
2644
+ externalUrl?: string | undefined;
2645
+ mapElementId?: string | null | undefined;
2646
+ metadata?: Record<string, unknown> | undefined;
2647
+ }>, {
2648
+ displayName: string;
2649
+ gameType: "hosted" | "external";
2650
+ platform: "web" | "godot" | "unity";
2651
+ metadata: Record<string, unknown>;
2652
+ externalUrl?: string | undefined;
2653
+ mapElementId?: string | null | undefined;
2654
+ }, {
2655
+ displayName: string;
2656
+ platform: "web" | "godot" | "unity";
2657
+ gameType?: "hosted" | "external" | undefined;
2658
+ externalUrl?: string | undefined;
2659
+ mapElementId?: string | null | undefined;
2660
+ metadata?: Record<string, unknown> | undefined;
2661
+ }>;
2662
+ declare const ManifestV1Schema: z.ZodObject<{
2663
+ version: z.ZodString;
2664
+ bootMode: z.ZodEnum<["iframe", "module"]>;
2665
+ entryPoint: z.ZodEffects<z.ZodString, string, string>;
2666
+ /**
2667
+ * An array of relative paths to CSS stylesheets.
2668
+ * Currently, this property is ONLY utilized by the 'module' boot mode
2669
+ * (`apps/cademy/src/lib/loader/boot-module.ts`) to load external
2670
+ * stylesheets into the game's shadow DOM.
2671
+ *
2672
+ * This property is under review for potential deprecation and removal.
2673
+ * The 'module' boot mode itself has not yet seen significant adoption
2674
+ * or clear use-cases, and if support for module loading is removed in
2675
+ * the future, this 'styles' property would become obsolete.
2676
+ *
2677
+ * If module-based games need styling, alternative approaches might involve
2678
+ * bundling CSS within their JavaScript or managing style injection internally.
2679
+ */
2680
+ styles: z.ZodEffects<z.ZodOptional<z.ZodArray<z.ZodString, "many">>, string[] | undefined, string[] | undefined>;
2681
+ /**
2682
+ * Specifies the game or development platform.
2683
+ * Current values include 'web', 'godot', and 'unity'.
2684
+ * The default in the database is 'web'.
2685
+ *
2686
+ * IMPORTANT: This property is NOT CURRENTLY USED by the core loader
2687
+ * or runtime systems in any functional way. It is present in the manifest
2688
+ * but does not drive any specific behavior in `boot-iframe.ts` or
2689
+ * `boot-module.ts` beyond being a piece of metadata.
2690
+ *
2691
+ * Potential Future Uses (Speculative):
2692
+ * - Analytics: Could be used to gather stats on platform popularity/usage.
2693
+ * - Developer Portal: Might inform UI/UX in the dev portal, e.g., showing
2694
+ * platform-specific guides or settings.
2695
+ * - Loader Optimizations: In the future, the loader could potentially use this
2696
+ * to apply platform-specific loading strategies or workarounds, though this
2697
+ * is unlikely given the current generic boot process.
2698
+ * - Asset Pipeline: Could hint to future asset pipeline tools about expected
2699
+ * project structures or build artifacts for different platforms.
2700
+ *
2701
+ * The field is intentionally kept somewhat generic. If finer-grained
2702
+ * distinctions are ever needed (e.g., specific web frameworks like 'phaser',
2703
+ * 'three'), this schema might need to be revisited or a separate
2704
+ * 'platformVersion' or 'framework' field could be added.
2705
+ */
2706
+ platform: z.ZodEnum<["web", "godot", "unity"]>;
2707
+ createdAt: z.ZodString;
2708
+ }, "strip", z.ZodTypeAny, {
2709
+ createdAt: string;
2710
+ version: string;
2711
+ platform: "web" | "godot" | "unity";
2712
+ bootMode: "iframe" | "module";
2713
+ entryPoint: string;
2714
+ styles?: string[] | undefined;
2715
+ }, {
2716
+ createdAt: string;
2717
+ version: string;
2718
+ platform: "web" | "godot" | "unity";
2719
+ bootMode: "iframe" | "module";
2720
+ entryPoint: string;
2721
+ styles?: string[] | undefined;
2722
+ }>;
2723
+ declare const InsertItemSchema: drizzle_zod.BuildSchema<"insert", {
2724
+ id: drizzle_orm_pg_core.PgColumn<{
2725
+ name: "id";
2726
+ tableName: "items";
2727
+ dataType: "string";
2728
+ columnType: "PgUUID";
2729
+ data: string;
2730
+ driverParam: string;
2731
+ notNull: true;
2732
+ hasDefault: true;
2733
+ isPrimaryKey: true;
2734
+ isAutoincrement: false;
2735
+ hasRuntimeDefault: false;
2736
+ enumValues: undefined;
2737
+ baseColumn: never;
2738
+ identity: undefined;
2739
+ generated: undefined;
2740
+ }, {}, {}>;
2741
+ slug: drizzle_orm_pg_core.PgColumn<{
2742
+ name: "slug";
2743
+ tableName: "items";
2744
+ dataType: "string";
2745
+ columnType: "PgText";
2746
+ data: string;
2747
+ driverParam: string;
2748
+ notNull: true;
2749
+ hasDefault: false;
2750
+ isPrimaryKey: false;
2751
+ isAutoincrement: false;
2752
+ hasRuntimeDefault: false;
2753
+ enumValues: [string, ...string[]];
2754
+ baseColumn: never;
2755
+ identity: undefined;
2756
+ generated: undefined;
2757
+ }, {}, {}>;
2758
+ gameId: drizzle_orm_pg_core.PgColumn<{
2759
+ name: "game_id";
2760
+ tableName: "items";
2761
+ dataType: "string";
2762
+ columnType: "PgUUID";
2763
+ data: string;
2764
+ driverParam: string;
2765
+ notNull: false;
2766
+ hasDefault: false;
2767
+ isPrimaryKey: false;
2768
+ isAutoincrement: false;
2769
+ hasRuntimeDefault: false;
2770
+ enumValues: undefined;
2771
+ baseColumn: never;
2772
+ identity: undefined;
2773
+ generated: undefined;
2774
+ }, {}, {}>;
2775
+ displayName: drizzle_orm_pg_core.PgColumn<{
2776
+ name: "display_name";
2777
+ tableName: "items";
2778
+ dataType: "string";
2779
+ columnType: "PgText";
2780
+ data: string;
2781
+ driverParam: string;
2782
+ notNull: true;
2783
+ hasDefault: false;
2784
+ isPrimaryKey: false;
2785
+ isAutoincrement: false;
2786
+ hasRuntimeDefault: false;
2787
+ enumValues: [string, ...string[]];
2788
+ baseColumn: never;
2789
+ identity: undefined;
2790
+ generated: undefined;
2791
+ }, {}, {}>;
2792
+ description: drizzle_orm_pg_core.PgColumn<{
2793
+ name: "description";
2794
+ tableName: "items";
2795
+ dataType: "string";
2796
+ columnType: "PgText";
2797
+ data: string;
2798
+ driverParam: string;
2799
+ notNull: false;
2800
+ hasDefault: false;
2801
+ isPrimaryKey: false;
2802
+ isAutoincrement: false;
2803
+ hasRuntimeDefault: false;
2804
+ enumValues: [string, ...string[]];
2805
+ baseColumn: never;
2806
+ identity: undefined;
2807
+ generated: undefined;
2808
+ }, {}, {}>;
2809
+ type: drizzle_orm_pg_core.PgColumn<{
2810
+ name: "type";
2811
+ tableName: "items";
2812
+ dataType: "string";
2813
+ columnType: "PgEnumColumn";
2814
+ data: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
2815
+ driverParam: string;
2816
+ notNull: true;
2817
+ hasDefault: true;
2818
+ isPrimaryKey: false;
2819
+ isAutoincrement: false;
2820
+ hasRuntimeDefault: false;
2821
+ enumValues: ["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"];
2822
+ baseColumn: never;
2823
+ identity: undefined;
2824
+ generated: undefined;
2825
+ }, {}, {}>;
2826
+ isPlaceable: drizzle_orm_pg_core.PgColumn<{
2827
+ name: "is_placeable";
2828
+ tableName: "items";
2829
+ dataType: "boolean";
2830
+ columnType: "PgBoolean";
2831
+ data: boolean;
2832
+ driverParam: boolean;
2833
+ notNull: true;
2834
+ hasDefault: true;
2835
+ isPrimaryKey: false;
2836
+ isAutoincrement: false;
2837
+ hasRuntimeDefault: false;
2838
+ enumValues: undefined;
2839
+ baseColumn: never;
2840
+ identity: undefined;
2841
+ generated: undefined;
2842
+ }, {}, {}>;
2843
+ imageUrl: drizzle_orm_pg_core.PgColumn<{
2844
+ name: "image_url";
2845
+ tableName: "items";
2846
+ dataType: "string";
2847
+ columnType: "PgText";
2848
+ data: string;
2849
+ driverParam: string;
2850
+ notNull: false;
2851
+ hasDefault: false;
2852
+ isPrimaryKey: false;
2853
+ isAutoincrement: false;
2854
+ hasRuntimeDefault: false;
2855
+ enumValues: [string, ...string[]];
2856
+ baseColumn: never;
2857
+ identity: undefined;
2858
+ generated: undefined;
2859
+ }, {}, {}>;
2860
+ metadata: drizzle_orm_pg_core.PgColumn<{
2861
+ name: "metadata";
2862
+ tableName: "items";
2863
+ dataType: "json";
2864
+ columnType: "PgJsonb";
2865
+ data: unknown;
2866
+ driverParam: unknown;
2867
+ notNull: false;
2868
+ hasDefault: true;
2869
+ isPrimaryKey: false;
2870
+ isAutoincrement: false;
2871
+ hasRuntimeDefault: false;
2872
+ enumValues: undefined;
2873
+ baseColumn: never;
2874
+ identity: undefined;
2875
+ generated: undefined;
2876
+ }, {}, {}>;
2877
+ createdAt: drizzle_orm_pg_core.PgColumn<{
2878
+ name: "created_at";
2879
+ tableName: "items";
2880
+ dataType: "date";
2881
+ columnType: "PgTimestamp";
2882
+ data: Date;
2883
+ driverParam: string;
2884
+ notNull: true;
2885
+ hasDefault: true;
2886
+ isPrimaryKey: false;
2887
+ isAutoincrement: false;
2888
+ hasRuntimeDefault: false;
2889
+ enumValues: undefined;
2890
+ baseColumn: never;
2891
+ identity: undefined;
2892
+ generated: undefined;
2893
+ }, {}, {}>;
2894
+ }, {
2895
+ imageUrl: z.ZodNullable<z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>>;
2896
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2897
+ }>;
2898
+ declare const UpdateItemSchema: z.ZodObject<Omit<{
2899
+ id: z.ZodOptional<z.ZodString>;
2900
+ slug: z.ZodOptional<z.ZodString>;
2901
+ gameId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2902
+ displayName: z.ZodOptional<z.ZodString>;
2903
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2904
+ type: z.ZodOptional<z.ZodEnum<["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"]>>;
2905
+ isPlaceable: z.ZodOptional<z.ZodBoolean>;
2906
+ imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2907
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2908
+ createdAt: z.ZodOptional<z.ZodDate>;
2909
+ }, "id" | "createdAt">, "strip", z.ZodTypeAny, {
2910
+ description?: string | null | undefined;
2911
+ displayName?: string | undefined;
2912
+ slug?: string | undefined;
2913
+ metadata?: Record<string, unknown> | undefined;
2914
+ gameId?: string | null | undefined;
2915
+ type?: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other" | undefined;
2916
+ isPlaceable?: boolean | undefined;
2917
+ imageUrl?: string | null | undefined;
2918
+ }, {
2919
+ description?: string | null | undefined;
2920
+ displayName?: string | undefined;
2921
+ slug?: string | undefined;
2922
+ metadata?: Record<string, unknown> | undefined;
2923
+ gameId?: string | null | undefined;
2924
+ type?: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other" | undefined;
2925
+ isPlaceable?: boolean | undefined;
2926
+ imageUrl?: string | null | undefined;
2927
+ }>;
2928
+ declare const InsertCurrencySchema: z.ZodObject<Omit<{
2929
+ id: z.ZodOptional<z.ZodString>;
2930
+ itemId: z.ZodString;
2931
+ symbol: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2932
+ isPrimary: z.ZodDefault<z.ZodBoolean>;
2933
+ createdAt: z.ZodOptional<z.ZodDate>;
2934
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
2935
+ }, "id" | "createdAt" | "updatedAt">, "strip", z.ZodTypeAny, {
2936
+ itemId: string;
2937
+ isPrimary: boolean;
2938
+ symbol?: string | null | undefined;
2939
+ }, {
2940
+ itemId: string;
2941
+ symbol?: string | null | undefined;
2942
+ isPrimary?: boolean | undefined;
2943
+ }>;
2944
+ declare const UpdateCurrencySchema: z.ZodObject<{
2945
+ symbol: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
2946
+ itemId: z.ZodOptional<z.ZodString>;
2947
+ isPrimary: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2948
+ }, "strip", z.ZodTypeAny, {
2949
+ symbol?: string | null | undefined;
2950
+ itemId?: string | undefined;
2951
+ isPrimary?: boolean | undefined;
2952
+ }, {
2953
+ symbol?: string | null | undefined;
2954
+ itemId?: string | undefined;
2955
+ isPrimary?: boolean | undefined;
2956
+ }>;
2957
+ declare const InsertShopListingSchema: z.ZodObject<Omit<{
2958
+ id: z.ZodOptional<z.ZodString>;
2959
+ itemId: z.ZodString;
2960
+ currencyId: z.ZodString;
2961
+ price: z.ZodNumber;
2962
+ sellBackPercentage: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
2963
+ stock: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
2964
+ isActive: z.ZodDefault<z.ZodBoolean>;
2965
+ availableFrom: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
2966
+ availableUntil: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
2967
+ createdAt: z.ZodOptional<z.ZodDate>;
2968
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
2969
+ }, "id" | "createdAt" | "updatedAt">, "strip", z.ZodTypeAny, {
2970
+ itemId: string;
2971
+ currencyId: string;
2972
+ price: number;
2973
+ isActive: boolean;
2974
+ sellBackPercentage?: number | null | undefined;
2975
+ stock?: number | null | undefined;
2976
+ availableFrom?: Date | null | undefined;
2977
+ availableUntil?: Date | null | undefined;
2978
+ }, {
2979
+ itemId: string;
2980
+ currencyId: string;
2981
+ price: number;
2982
+ sellBackPercentage?: number | null | undefined;
2983
+ stock?: number | null | undefined;
2984
+ isActive?: boolean | undefined;
2985
+ availableFrom?: Date | null | undefined;
2986
+ availableUntil?: Date | null | undefined;
2987
+ }>;
2988
+ declare const UpdateShopListingSchema: z.ZodObject<{
2989
+ itemId: z.ZodOptional<z.ZodString>;
2990
+ currencyId: z.ZodOptional<z.ZodString>;
2991
+ price: z.ZodOptional<z.ZodNumber>;
2992
+ sellBackPercentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
2993
+ stock: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
2994
+ isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
2995
+ availableFrom: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodDate>>>;
2996
+ availableUntil: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodDate>>>;
2997
+ }, "strip", z.ZodTypeAny, {
2998
+ itemId?: string | undefined;
2999
+ currencyId?: string | undefined;
3000
+ price?: number | undefined;
3001
+ sellBackPercentage?: number | null | undefined;
3002
+ stock?: number | null | undefined;
3003
+ isActive?: boolean | undefined;
3004
+ availableFrom?: Date | null | undefined;
3005
+ availableUntil?: Date | null | undefined;
3006
+ }, {
3007
+ itemId?: string | undefined;
3008
+ currencyId?: string | undefined;
3009
+ price?: number | undefined;
3010
+ sellBackPercentage?: number | null | undefined;
3011
+ stock?: number | null | undefined;
3012
+ isActive?: boolean | undefined;
3013
+ availableFrom?: Date | null | undefined;
3014
+ availableUntil?: Date | null | undefined;
3015
+ }>;
3016
+ /**
3017
+ * Achievement Completion Types
3018
+ */
3019
+ declare const ACHIEVEMENT_COMPLETION_TYPES: readonly ["time_played_session", "interaction", "leaderboard_rank"];
3020
+ type AchievementCompletionType = (typeof ACHIEVEMENT_COMPLETION_TYPES)[number];
3021
+
3022
+ type CharacterComponent = typeof characterComponents.$inferSelect;
3023
+ type PlayerCharacter = typeof playerCharacters.$inferSelect & {
3024
+ accessories?: PlayerCharacterAccessory[];
3025
+ };
3026
+ type PlayerCharacterAccessory = typeof playerCharacterAccessories.$inferSelect;
3027
+ type GameRow = typeof games.$inferSelect;
3028
+ type BaseGame = Omit<GameRow, 'gameType' | 'assetBundleBase' | 'externalUrl'>;
3029
+ type HostedGame = BaseGame & {
3030
+ gameType: 'hosted';
3031
+ assetBundleBase: string;
3032
+ externalUrl: null;
3033
+ };
3034
+ type ExternalGame = BaseGame & {
3035
+ gameType: 'external';
3036
+ assetBundleBase: null;
3037
+ externalUrl: string;
3038
+ };
3039
+ type Game = HostedGame | ExternalGame;
3040
+ type GameSession = typeof gameSessions.$inferSelect;
3041
+ type GameStateData = Record<string, unknown>;
3042
+ type UpsertGameMetadataInput = z.infer<typeof UpsertGameMetadataSchema>;
3043
+ type Item = typeof items.$inferSelect;
3044
+ type InventoryItem = typeof inventoryItems.$inferSelect;
3045
+ type Currency = typeof currencies.$inferSelect;
3046
+ type ShopListing = typeof shopListings.$inferSelect;
3047
+ type InsertItemInput = z.infer<typeof InsertItemSchema>;
3048
+ type UpdateItemInput = z.infer<typeof UpdateItemSchema>;
3049
+ type InsertCurrencyInput = z.infer<typeof InsertCurrencySchema>;
3050
+ type UpdateCurrencyInput = z.infer<typeof UpdateCurrencySchema>;
3051
+ type InsertShopListingInput = z.infer<typeof InsertShopListingSchema>;
3052
+ type UpdateShopListingInput = z.infer<typeof UpdateShopListingSchema>;
3053
+ interface PlaceableItemMetadata {
3054
+ tilesWide?: number;
3055
+ tilesHigh?: number;
3056
+ flippable?: boolean;
3057
+ [key: string]: unknown;
3058
+ }
3059
+ type Map = typeof maps.$inferSelect;
3060
+ type MapElement = typeof mapElements.$inferSelect;
3061
+ type MapObject = typeof mapObjects.$inferSelect;
3062
+ interface MapData {
3063
+ id: string;
3064
+ identifier: string;
3065
+ displayName: string;
3066
+ description?: string;
3067
+ metadata?: Record<string, unknown>;
3068
+ }
3069
+ interface CreateMapObjectData {
3070
+ itemId: string;
3071
+ worldX: number;
3072
+ worldY: number;
3073
+ width?: number;
3074
+ height?: number;
3075
+ rotation?: number;
3076
+ scale?: number;
3077
+ metadata?: Record<string, unknown>;
3078
+ }
3079
+
3080
+ type User = typeof users.$inferSelect;
3081
+ type UserRoleEnumType = (typeof userRoleEnum.enumValues)[number];
3082
+ type DeveloperStatusResponse = z.infer<typeof DeveloperStatusResponseSchema>;
3083
+ type DeveloperStatusValue = DeveloperStatusResponse['status'];
3084
+ /**
3085
+ * User data with authentication provider information.
3086
+ * Returned by the /users/me endpoint with additional auth context.
3087
+ */
3088
+ type AuthenticatedUser = User & {
3089
+ /** Whether the user authenticated via Timeback SSO */
3090
+ hasTimebackAccount: boolean;
3091
+ };
3092
+
3093
+ /**
3094
+ * Cross-Domain Composite Types
3095
+ * Types that combine data from multiple domains
3096
+ */
3097
+ type ManifestV1 = z.infer<typeof ManifestV1Schema>;
3098
+ /**
3099
+ * Character-related Composite Types
3100
+ * Types that combine character component data with sprite sheet information
3101
+ */
3102
+ type CharacterComponentWithSpriteUrl = CharacterComponent & {
3103
+ spriteSheetUrl: string;
3104
+ };
3105
+ type InventoryItemWithItem = Omit<InventoryItem, 'itemId'> & {
3106
+ item: Item;
3107
+ };
3108
+ type HostedGameWithManifest = HostedGame & {
3109
+ manifest: ManifestV1;
3110
+ };
3111
+ type FetchedGame = HostedGameWithManifest | GameRow;
3112
+ /**
3113
+ * Map-related Composite Types
3114
+ * Types that combine map, game, and item data for rendering and interaction
3115
+ */
3116
+ interface MapElementWithGame extends MapElement {
3117
+ game: Pick<Game, 'id' | 'displayName'> | null;
3118
+ }
3119
+ interface MapObjectWithItem extends MapObject {
3120
+ item: Pick<Item, 'id' | 'slug' | 'displayName' | 'description' | 'imageUrl' | 'isPlaceable'> & {
3121
+ metadata: PlaceableItemMetadata;
3122
+ };
3123
+ }
3124
+ /**
3125
+ * Shop-related Composite Types
3126
+ * Types that combine inventory, currency, and shop listing data for commerce operations
3127
+ */
3128
+ interface ShopDisplayItem extends Omit<Item, 'createdAt'> {
3129
+ listingId: string;
3130
+ shopPrice: number;
3131
+ currencyId: string;
3132
+ currencySymbol?: string | null;
3133
+ currencyDisplayName?: string | null;
3134
+ currencyImageUrl?: string | null;
3135
+ stock?: number | null;
3136
+ sellBackPercentage?: number | null;
3137
+ }
3138
+ interface ShopCurrency {
3139
+ id: string;
3140
+ symbol: string | null;
3141
+ isPrimary: boolean;
3142
+ displayName?: string | null;
3143
+ imageUrl?: string | null;
3144
+ }
3145
+ interface ShopViewResponse {
3146
+ shopItems: ShopDisplayItem[];
3147
+ currencies: ShopCurrency[];
3148
+ }
3149
+ /**
3150
+ * Leaderboard Composite Types
3151
+ * Types that combine leaderboard, user, and game data
3152
+ */
3153
+ interface GameLeaderboardEntry {
3154
+ rank: number;
3155
+ userId: string;
3156
+ username: string;
3157
+ userImage?: string | null;
3158
+ score: number;
3159
+ achievedAt: Date;
3160
+ metadata?: Record<string, unknown>;
3161
+ gameId: string;
3162
+ gameTitle: string;
3163
+ gameSlug: string;
3164
+ }
3165
+
3166
+ type DeveloperKey = typeof developerKeys.$inferSelect;
3167
+
3168
+ type UserLevel = typeof userLevels.$inferSelect;
3169
+ type LevelConfig = typeof levelConfigs.$inferSelect;
3170
+ type UserLevelWithConfig = UserLevel & {
3171
+ xpToNextLevel: number;
3172
+ nextLevelConfig?: LevelConfig;
3173
+ };
3174
+ interface LeaderboardOptions {
3175
+ timeframe?: 'all_time' | 'monthly' | 'weekly' | 'daily';
3176
+ limit?: number;
3177
+ offset?: number;
3178
+ gameId?: string;
3179
+ }
3180
+ interface LeaderboardEntry {
3181
+ rank: number;
3182
+ userId: string;
3183
+ username: string;
3184
+ userImage?: string | null;
3185
+ score: number;
3186
+ achievedAt: Date;
3187
+ metadata?: Record<string, unknown>;
3188
+ gameId?: string;
3189
+ gameTitle?: string;
3190
+ gameSlug?: string;
3191
+ }
3192
+ interface UserRank {
3193
+ rank: number;
3194
+ totalPlayers: number;
3195
+ score: number;
3196
+ percentile: number;
3197
+ }
3198
+ interface UserRankResponse {
3199
+ rank: number;
3200
+ score: number;
3201
+ userId: string;
3202
+ }
3203
+ interface UserScore$1 {
3204
+ id: string;
3205
+ score: number;
3206
+ achievedAt: Date;
3207
+ metadata?: Record<string, unknown>;
3208
+ gameId: string;
3209
+ gameTitle: string;
3210
+ gameSlug: string;
3211
+ }
3212
+
3213
+ type SpriteTemplate = typeof spriteTemplates.$inferSelect;
3214
+ interface SpriteTemplateData {
3215
+ tileSize: number;
3216
+ tileHeight: number;
3217
+ columns: number;
3218
+ rows: number;
3219
+ spacing: number;
3220
+ animations: {
3221
+ base_right: {
3222
+ row: number;
3223
+ frameStart: number;
3224
+ numFrames: number;
3225
+ fps: number;
3226
+ };
3227
+ base_up: {
3228
+ row: number;
3229
+ frameStart: number;
3230
+ numFrames: number;
3231
+ fps: number;
3232
+ };
3233
+ base_left: {
3234
+ row: number;
3235
+ frameStart: number;
3236
+ numFrames: number;
3237
+ fps: number;
3238
+ };
3239
+ base_down: {
3240
+ row: number;
3241
+ frameStart: number;
3242
+ numFrames: number;
3243
+ fps: number;
3244
+ };
3245
+ idle_right: {
3246
+ row: number;
3247
+ frameStart: number;
3248
+ numFrames: number;
3249
+ fps: number;
3250
+ };
3251
+ walk_right: {
3252
+ row: number;
3253
+ frameStart: number;
3254
+ numFrames: number;
3255
+ fps: number;
3256
+ };
3257
+ idle_up: {
3258
+ row: number;
3259
+ frameStart: number;
3260
+ numFrames: number;
3261
+ fps: number;
3262
+ };
3263
+ walk_up: {
3264
+ row: number;
3265
+ frameStart: number;
3266
+ numFrames: number;
3267
+ fps: number;
3268
+ };
3269
+ idle_left: {
3270
+ row: number;
3271
+ frameStart: number;
3272
+ numFrames: number;
3273
+ fps: number;
3274
+ };
3275
+ walk_left: {
3276
+ row: number;
3277
+ frameStart: number;
3278
+ numFrames: number;
3279
+ fps: number;
3280
+ };
3281
+ idle_down: {
3282
+ row: number;
3283
+ frameStart: number;
3284
+ numFrames: number;
3285
+ fps: number;
3286
+ };
3287
+ walk_down: {
3288
+ row: number;
3289
+ frameStart: number;
3290
+ numFrames: number;
3291
+ fps: number;
3292
+ };
3293
+ };
3294
+ }
3295
+ type TodayXpResponse = {
3296
+ xp: number;
3297
+ date: string;
3298
+ };
3299
+ type TotalXpResponse = {
3300
+ totalXp: number;
3301
+ };
3302
+ type XpHistoryResponse = {
3303
+ history: Array<{
3304
+ date: string;
3305
+ xp: number;
3306
+ }>;
3307
+ };
3308
+
3309
+ type AchievementIntervalType = (typeof achievementIntervalEnum.enumValues)[number];
3310
+ type Achievement = typeof achievements.$inferSelect;
3311
+ /**
3312
+ * Current-interval achievement with computed status and window metadata
3313
+ */
3314
+ interface AchievementCurrent {
3315
+ id: string;
3316
+ title: string;
3317
+ description?: string | null;
3318
+ intervalType: AchievementIntervalType;
3319
+ rewardCredits: number;
3320
+ limitPerInterval: number;
3321
+ completionType: AchievementCompletionType;
3322
+ completionConfig: Record<string, unknown>;
3323
+ scope: Record<string, unknown>;
3324
+ active: boolean;
3325
+ createdAt?: Date;
3326
+ updatedAt?: Date;
3327
+ status: 'available' | 'completed';
3328
+ intervalKey: string;
3329
+ windowStart: string;
3330
+ windowEnd: string;
3331
+ }
3332
+ /**
3333
+ * Historical entry representing a prior claim within an interval
3334
+ */
3335
+ interface AchievementHistoryEntry {
3336
+ achievementId: string;
3337
+ title: string;
3338
+ rewardCredits: number;
3339
+ createdAt: string;
3340
+ intervalKey: string;
3341
+ }
3342
+ /**
3343
+ * Response returned when submitting achievement progress
3344
+ */
3345
+ interface AchievementProgressResponse {
3346
+ achievementId: string;
3347
+ status: 'completed' | 'already_completed';
3348
+ rewardCredits: number;
3349
+ intervalKey: string;
3350
+ createdAt: string;
3351
+ }
3352
+
3353
+ /**
3354
+ * OAuth 2.0 implementation for the Playcademy SDK
3355
+ */
3356
+
3357
+ /**
3358
+ * Parses an OAuth state parameter to extract CSRF token and any encoded data.
3359
+ *
3360
+ * @param state - The OAuth state parameter to parse
3361
+ * @returns Object containing CSRF token and optional decoded data
3362
+ */
3363
+ declare function parseOAuthState(state: string): {
3364
+ csrfToken: string;
3365
+ data?: Record<string, string>;
3366
+ };
3367
+
3368
+ /**
3369
+ * Response type for the realtime token API
3370
+ */
3371
+ interface RealtimeTokenResponse {
3372
+ token: string;
3373
+ }
3374
+
3375
+ /**
3376
+ * Cache configuration types for runtime customization
3377
+ */
3378
+ /**
3379
+ * Runtime configuration for TTL cache behavior
3380
+ */
3381
+ interface TTLCacheConfig {
3382
+ /** Time-to-live in milliseconds. Set to 0 to disable caching for this call. */
3383
+ ttl?: number;
3384
+ /** Force refresh, bypassing cache */
3385
+ force?: boolean;
3386
+ /** Skip cache and fetch fresh data (alias for force) */
3387
+ skipCache?: boolean;
3388
+ }
3389
+ /**
3390
+ * Runtime configuration for cooldown cache behavior
3391
+ */
3392
+ interface CooldownCacheConfig {
3393
+ /** Cooldown period in milliseconds. Set to 0 to disable cooldown for this call. */
3394
+ cooldown?: number;
3395
+ /** Force refresh, bypassing cooldown */
3396
+ force?: boolean;
3397
+ }
3398
+
3399
+ interface CharacterComponentsOptions {
3400
+ /**
3401
+ * Optional level filter for components
3402
+ * When provided, only components available at this level or below are returned
3403
+ */
3404
+ level?: number;
3405
+ /**
3406
+ * Whether to bypass the cache and force a fresh API request
3407
+ * Default: false (use cache when available)
3408
+ */
3409
+ skipCache?: boolean;
3410
+ }
3411
+ interface CreateCharacterData {
3412
+ bodyComponentId: string;
3413
+ eyesComponentId: string;
3414
+ hairstyleComponentId: string;
3415
+ outfitComponentId: string;
3416
+ }
3417
+ interface UpdateCharacterData {
3418
+ bodyComponentId?: string;
3419
+ eyesComponentId?: string;
3420
+ hairstyleComponentId?: string;
3421
+ outfitComponentId?: string;
3422
+ }
3423
+
3424
+ interface ScoreSubmission {
3425
+ id: string;
3426
+ score: number;
3427
+ achievedAt: Date;
3428
+ }
3429
+
3430
+ /**
3431
+ * Combined response type for summary method
3432
+ */
3433
+ type XpSummaryResponse = {
3434
+ today: TodayXpResponse;
3435
+ total: TotalXpResponse;
3436
+ };
3437
+
3438
+ interface UserScore {
3439
+ id: string;
3440
+ score: number;
3441
+ achievedAt: Date;
3442
+ metadata?: Record<string, unknown>;
3443
+ gameId: string;
3444
+ gameTitle: string;
3445
+ gameSlug: string;
3446
+ }
3447
+
3448
+ /**
3449
+ * @fileoverview Playcademy Messaging System
3450
+ *
3451
+ * This file implements a unified messaging system for the Playcademy platform that handles
3452
+ * communication between different contexts:
3453
+ *
3454
+ * 1. **Iframe-to-Parent Communication**: When games run inside iframes (production/development),
3455
+ * they need to communicate with the parent window using postMessage API
3456
+ *
3457
+ * 2. **Local Communication**: When games run in the same context (local development),
3458
+ * they use CustomEvents for internal messaging
3459
+ *
3460
+ * The system automatically detects the runtime environment and chooses the appropriate
3461
+ * transport method, abstracting this complexity from the developer.
3462
+ *
3463
+ * **Architecture Overview**:
3464
+ * - Games run in iframes for security and isolation
3465
+ * - Parent window (Playcademy shell) manages game lifecycle
3466
+ * - Messages flow bidirectionally between parent and iframe
3467
+ * - Local development mode simulates this architecture without iframes
3468
+ */
3469
+
3470
+ /**
3471
+ * Enumeration of all message types used in the Playcademy messaging system.
3472
+ *
3473
+ * **Message Flow Patterns**:
3474
+ *
3475
+ * **Parent → Game (Overworld → Game)**:
3476
+ * - INIT: Provides game with authentication token and configuration
3477
+ * - TOKEN_REFRESH: Updates game's authentication token before expiry
3478
+ * - PAUSE/RESUME: Controls game execution state
3479
+ * - FORCE_EXIT: Immediately terminates the game
3480
+ * - OVERLAY: Shows/hides UI overlays over the game
3481
+ *
3482
+ * **Game → Parent (Game → Overworld)**:
3483
+ * - READY: Game has loaded and is ready to receive messages
3484
+ * - EXIT: Game requests to be closed (user clicked exit, game ended, etc.)
3485
+ * - TELEMETRY: Game reports performance metrics (FPS, memory usage, etc.)
3486
+ */
3487
+ declare enum MessageEvents {
3488
+ /**
3489
+ * Initializes the game with authentication context and configuration.
3490
+ * Sent immediately after game iframe loads.
3491
+ * Payload:
3492
+ * - `baseUrl`: string
3493
+ * - `token`: string
3494
+ * - `gameId`: string
3495
+ */
3496
+ INIT = "PLAYCADEMY_INIT",
3497
+ /**
3498
+ * Updates the game's authentication token before it expires.
3499
+ * Sent periodically to maintain valid authentication.
3500
+ * Payload:
3501
+ * - `token`: string
3502
+ * - `exp`: number
3503
+ */
3504
+ TOKEN_REFRESH = "PLAYCADEMY_TOKEN_REFRESH",
3505
+ /**
3506
+ * Pauses game execution (e.g., when user switches tabs).
3507
+ * Game should pause timers, animations, and user input.
3508
+ * Payload: void
3509
+ */
3510
+ PAUSE = "PLAYCADEMY_PAUSE",
3511
+ /**
3512
+ * Resumes game execution after being paused.
3513
+ * Game should restore timers, animations, and user input.
3514
+ * Payload: void
3515
+ */
3516
+ RESUME = "PLAYCADEMY_RESUME",
3517
+ /**
3518
+ * Forces immediate game termination (emergency exit).
3519
+ * Game should clean up resources and exit immediately.
3520
+ * Payload: void
3521
+ */
3522
+ FORCE_EXIT = "PLAYCADEMY_FORCE_EXIT",
3523
+ /**
3524
+ * Shows or hides UI overlays over the game.
3525
+ * Game may need to pause or adjust rendering accordingly.
3526
+ * Payload: boolean (true = show overlay, false = hide overlay)
3527
+ */
3528
+ OVERLAY = "PLAYCADEMY_OVERLAY",
3529
+ /**
3530
+ * Game has finished loading and is ready to receive messages.
3531
+ * Sent once after game initialization is complete.
3532
+ * Payload: void
3533
+ */
3534
+ READY = "PLAYCADEMY_READY",
3535
+ /**
3536
+ * Game requests to be closed/exited.
3537
+ * Sent when user clicks exit button or game naturally ends.
3538
+ * Payload: void
3539
+ */
3540
+ EXIT = "PLAYCADEMY_EXIT",
3541
+ /**
3542
+ * Game reports performance telemetry data.
3543
+ * Sent periodically for monitoring and analytics.
3544
+ * Payload:
3545
+ * - `fps`: number
3546
+ * - `mem`: number
3547
+ */
3548
+ TELEMETRY = "PLAYCADEMY_TELEMETRY",
3549
+ /**
3550
+ * Game reports key events to parent.
3551
+ * Sent when certain keys are pressed within the game iframe.
3552
+ * Payload:
3553
+ * - `key`: string
3554
+ * - `code?`: string
3555
+ * - `type`: 'keydown' | 'keyup'
3556
+ */
3557
+ KEY_EVENT = "PLAYCADEMY_KEY_EVENT",
3558
+ /**
3559
+ * Notifies about authentication state changes.
3560
+ * Can be sent in both directions depending on auth flow.
3561
+ * Payload:
3562
+ * - `authenticated`: boolean
3563
+ * - `user`: UserInfo | null
3564
+ * - `error`: Error | null
3565
+ */
3566
+ AUTH_STATE_CHANGE = "PLAYCADEMY_AUTH_STATE_CHANGE",
3567
+ /**
3568
+ * OAuth callback data from popup/new-tab windows.
3569
+ * Sent from popup window back to parent after OAuth completes.
3570
+ * Payload:
3571
+ * - `code`: string (OAuth authorization code)
3572
+ * - `state`: string (OAuth state for CSRF protection)
3573
+ * - `error`: string | null (OAuth error if any)
3574
+ */
3575
+ AUTH_CALLBACK = "PLAYCADEMY_AUTH_CALLBACK"
3576
+ }
3577
+
3578
+ /**
3579
+ * Auto-initializes a PlaycademyClient with context from the environment.
3580
+ * Works in both iframe mode (production/development) and standalone mode (local dev).
3581
+ *
3582
+ * This is the recommended way to initialize the SDK as it automatically:
3583
+ * - Detects the runtime environment (iframe vs standalone)
3584
+ * - Configures the client with the appropriate context
3585
+ * - Sets up event listeners for token refresh
3586
+ * - Exposes the client for debugging in development mode
3587
+ *
3588
+ * @returns Promise resolving to a fully initialized PlaycademyClient
3589
+ * @throws Error if not running in a browser context
3590
+ *
3591
+ * @example
3592
+ * ```typescript
3593
+ * const client = await PlaycademyClient.init()
3594
+ * const user = await client.users.me()
3595
+ * ```
3596
+ */
3597
+ declare function init(): Promise<PlaycademyClient>;
3598
+
3599
+ /**
3600
+ * Authenticates a user with email and password.
3601
+ *
3602
+ * This is a standalone authentication method that doesn't require an initialized client.
3603
+ * Use this for login flows before creating a client instance.
3604
+ *
3605
+ * @deprecated Use client.auth.login() instead for better error handling and automatic token management
3606
+ *
3607
+ * @param baseUrl - The base URL of the Playcademy API
3608
+ * @param email - User's email address
3609
+ * @param password - User's password
3610
+ * @returns Promise resolving to authentication response with token
3611
+ * @throws PlaycademyError if authentication fails or network error occurs
3612
+ *
3613
+ * @example
3614
+ * ```typescript
3615
+ * // Preferred approach:
3616
+ * const client = new PlaycademyClient({ baseUrl: '/api' })
3617
+ * const result = await client.auth.login({
3618
+ * email: 'user@example.com',
3619
+ * password: 'password'
3620
+ * })
3621
+ *
3622
+ * // Legacy approach (still works):
3623
+ * try {
3624
+ * const response = await PlaycademyClient.login('/api', 'user@example.com', 'password')
3625
+ * const client = new PlaycademyClient({ token: response.token })
3626
+ * } catch (error) {
3627
+ * console.error('Login failed:', error.message)
3628
+ * }
3629
+ * ```
3630
+ */
3631
+ declare function login(baseUrl: string, email: string, password: string): Promise<LoginResponse>;
3632
+
3633
+ /** Permitted HTTP verbs */
3634
+ type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3635
+
3636
+ /**
3637
+ * Main Playcademy SDK client for interacting with the platform API.
3638
+ * Provides namespaced access to all platform features including games, users, inventory, and more.
3639
+ */
3640
+ declare class PlaycademyClient {
3641
+ private baseUrl;
3642
+ private token?;
3643
+ private gameId?;
3644
+ private config;
3645
+ private listeners;
3646
+ private internalClientSessionId?;
3647
+ private authContext?;
3648
+ private initPayload?;
3649
+ /**
3650
+ * Creates a new PlaycademyClient instance.
3651
+ *
3652
+ * @param config - Optional configuration object
3653
+ * @param config.baseUrl - Base URL for API requests (defaults to '/api')
3654
+ * @param config.token - Authentication token
3655
+ * @param config.gameId - Game ID for automatic session management
3656
+ * @param config.autoStartSession - Automatically start a game session?
3657
+ */
3658
+ constructor(config?: Partial<ClientConfig>);
3659
+ /**
3660
+ * Gets the effective base URL for API requests.
3661
+ * Converts relative URLs to absolute URLs in browser environments.
3662
+ *
3663
+ * @returns The complete base URL for API requests
3664
+ */
3665
+ getBaseUrl(): string;
3666
+ /**
3667
+ * Simple ping method for testing connectivity.
3668
+ *
3669
+ * @returns 'pong' string response
3670
+ */
3671
+ ping(): string;
3672
+ /**
3673
+ * Sets the authentication token for API requests.
3674
+ * Emits an 'authChange' event when the token changes.
3675
+ *
3676
+ * @param token - The authentication token, or null to clear
3677
+ */
3678
+ setToken(token: string | null): void;
3679
+ /**
3680
+ * Checks if the client has a valid API token for making Playcademy API requests.
3681
+ *
3682
+ * For games (iframe context): Checks if we have a valid token from the parent.
3683
+ * For Cademy (standalone): Checks if we have a token from better-auth.
3684
+ *
3685
+ * Note: This checks for API authentication, not whether a user has linked
3686
+ * their identity via OAuth.
3687
+ *
3688
+ * @returns true if API token exists, false otherwise
3689
+ *
3690
+ * @example
3691
+ * ```typescript
3692
+ * if (client.isAuthenticated()) {
3693
+ * // Can make API calls
3694
+ * const games = await client.games.list()
3695
+ * } else {
3696
+ * console.error('No API token available')
3697
+ * }
3698
+ * ```
3699
+ */
3700
+ isAuthenticated(): boolean;
3701
+ /**
3702
+ * Registers a callback to be called when authentication state changes.
3703
+ *
3704
+ * @param callback - Function to call when auth state changes
3705
+ */
3706
+ onAuthChange(callback: (token: string | null) => void): void;
3707
+ /**
3708
+ * Sets the authentication context for the client.
3709
+ * This is called during initialization to store environment info.
3710
+ * @internal
3711
+ */
3712
+ _setAuthContext(context: {
3713
+ isInIframe: boolean;
3714
+ }): void;
3715
+ /**
3716
+ * Registers an event listener for client events.
3717
+ *
3718
+ * @param event - The event type to listen for
3719
+ * @param callback - Function to call when the event is emitted
3720
+ */
3721
+ on<E extends keyof ClientEvents>(event: E, callback: (payload: ClientEvents[E]) => void): void;
3722
+ /**
3723
+ * Emits an event to all registered listeners.
3724
+ *
3725
+ * @param event - The event type to emit
3726
+ * @param payload - The event payload
3727
+ */
3728
+ private emit;
3729
+ /**
3730
+ * Makes an authenticated HTTP request to the API.
3731
+ *
3732
+ * @param path - API endpoint path
3733
+ * @param method - HTTP method
3734
+ * @param body - Request body (optional)
3735
+ * @param headers - Additional headers (optional)
3736
+ * @returns Promise resolving to the response data
3737
+ */
3738
+ protected request<T>(path: string, method: Method, body?: unknown, headers?: Record<string, string>): Promise<T>;
3739
+ /**
3740
+ * Ensures a gameId is available, throwing an error if not.
3741
+ *
3742
+ * @returns The gameId
3743
+ * @throws PlaycademyError if no gameId is configured
3744
+ */
3745
+ private _ensureGameId;
3746
+ /**
3747
+ * Detects and sets the authentication context (iframe vs standalone).
3748
+ * Safe to call in any environment - isInIframe handles browser detection.
3749
+ */
3750
+ private _detectAuthContext;
3751
+ /**
3752
+ * Initializes an internal game session for automatic session management.
3753
+ * Only starts a session if:
3754
+ * 1. A gameId is configured
3755
+ * 2. No session already exists
3756
+ * 3. autoStartSession is enabled (defaults to false)
3757
+ */
3758
+ private _initializeInternalSession;
3759
+ /** Platform API authentication methods (login, logout) */
3760
+ auth: {
3761
+ login: (credentials: {
3762
+ email: string;
3763
+ password: string;
3764
+ }) => Promise<{
3765
+ success: boolean;
3766
+ token?: string;
3767
+ error?: string;
3768
+ }>;
3769
+ logout: () => Promise<void>;
3770
+ };
3771
+ /** Identity provider connection methods (connect external accounts) */
3772
+ identity: {
3773
+ readonly user: {
3774
+ sub: string;
3775
+ email: string;
3776
+ name: string;
3777
+ email_verified: true;
3778
+ given_name: undefined;
3779
+ family_name: undefined;
3780
+ } | null;
3781
+ connect: (options: AuthOptions) => Promise<AuthResult>;
3782
+ _getContext: () => {
3783
+ isInIframe: boolean;
3784
+ };
3785
+ };
3786
+ /** Runtime methods (getGameToken, exit) */
3787
+ runtime: {
3788
+ getGameToken: (gameId: string, options?: {
3789
+ apply?: boolean;
3790
+ }) => Promise<GameTokenResponse>;
3791
+ exit: () => Promise<void>;
3792
+ onInit: (handler: (context: GameContextPayload) => void) => void;
3793
+ onTokenRefresh: (handler: (data: {
3794
+ token: string;
3795
+ exp: number;
3796
+ }) => void) => void;
3797
+ onPause: (handler: () => void) => void;
3798
+ onResume: (handler: () => void) => void;
3799
+ onForceExit: (handler: () => void) => void;
3800
+ onOverlay: (handler: (isVisible: boolean) => void) => void;
3801
+ ready: () => void;
3802
+ sendTelemetry: (data: {
3803
+ fps: number;
3804
+ mem: number;
3805
+ }) => void;
3806
+ removeListener: (eventType: MessageEvents, handler: ((context: GameContextPayload) => void) | ((data: {
3807
+ token: string;
3808
+ exp: number;
3809
+ }) => void) | (() => void) | ((isVisible: boolean) => void)) => void;
3810
+ removeAllListeners: () => void;
3811
+ getListenerCounts: () => Record<string, number>;
3812
+ };
3813
+ /** Game management methods (fetch, list, saveState, loadState, sessions) */
3814
+ games: {
3815
+ fetch: (gameIdOrSlug: string, options?: TTLCacheConfig) => Promise<FetchedGame>;
3816
+ list: (options?: TTLCacheConfig) => Promise<Array<Game>>;
3817
+ saveState: (state: Record<string, unknown>) => Promise<void>;
3818
+ loadState: () => Promise<GameStateData>;
3819
+ startSession: (gameId?: string) => Promise<StartSessionResponse>;
3820
+ endSession: (sessionId: string, gameId?: string) => Promise<void>;
3821
+ token: {
3822
+ create: (gameId: string, options?: {
3823
+ apply?: boolean;
3824
+ }) => Promise<GameTokenResponse>;
3825
+ };
3826
+ leaderboard: {
3827
+ get: (gameId: string, options?: {
3828
+ limit?: number;
3829
+ offset?: number;
3830
+ }) => Promise<LeaderboardEntry[]>;
3831
+ };
3832
+ };
3833
+ /** User methods (me, inventory management) */
3834
+ users: {
3835
+ me: () => Promise<AuthenticatedUser>;
3836
+ inventory: {
3837
+ get: () => Promise<InventoryItemWithItem[]>;
3838
+ add: (identifier: string, qty: number) => Promise<InventoryMutationResponse>;
3839
+ remove: (identifier: string, qty: number) => Promise<InventoryMutationResponse>;
3840
+ quantity: (identifier: string) => Promise<number>;
3841
+ has: (identifier: string, minQuantity?: number) => Promise<boolean>;
3842
+ };
3843
+ scores: {
3844
+ get: (userIdOrOptions?: string | {
3845
+ limit?: number;
3846
+ gameId?: string;
3847
+ }, options?: {
3848
+ limit?: number;
3849
+ gameId?: string;
3850
+ }) => Promise<UserScore[]>;
3851
+ };
3852
+ };
3853
+ /** Developer tools (auth, games, keys management) */
3854
+ dev: {
3855
+ status: {
3856
+ apply: () => Promise<void>;
3857
+ get: () => Promise<DeveloperStatusValue>;
3858
+ };
3859
+ games: {
3860
+ upsert: (slug: string, metadata: UpsertGameMetadataInput, file: File | Blob | null, hooks?: DevUploadHooks) => Promise<Game>;
3861
+ update: (gameId: string, props: Partial<Game>) => Promise<void>;
3862
+ delete: (gameId: string) => Promise<void>;
3863
+ };
3864
+ keys: {
3865
+ create: (label?: string) => Promise<{
3866
+ id: string;
3867
+ createdAt: Date;
3868
+ userId: string;
3869
+ label: string | null;
3870
+ keyHash: string;
3871
+ }>;
3872
+ list: () => Promise<{
3873
+ id: string;
3874
+ createdAt: Date;
3875
+ userId: string;
3876
+ label: string | null;
3877
+ keyHash: string;
3878
+ }[]>;
3879
+ revoke: (keyId: string) => Promise<void>;
3880
+ };
3881
+ items: {
3882
+ create: (gameId: string, slug: string, itemData: Omit<InsertItemInput, "slug" | "gameId">) => Promise<Item>;
3883
+ update: (gameId: string, itemId: string, updates: UpdateItemInput) => Promise<Item>;
3884
+ list: (gameId: string) => Promise<Array<Item>>;
3885
+ get: (gameId: string, slug: string) => Promise<Item>;
3886
+ delete: (gameId: string, itemId: string) => Promise<void>;
3887
+ shop: {
3888
+ create: (gameId: string, itemId: string, listingData: Omit<InsertShopListingInput, "itemId">) => Promise<ShopListing>;
3889
+ get: (gameId: string, itemId: string) => Promise<ShopListing | null>;
3890
+ update: (gameId: string, itemId: string, updates: UpdateShopListingInput) => Promise<ShopListing>;
3891
+ delete: (gameId: string, itemId: string) => Promise<void>;
3892
+ list: (gameId: string) => Promise<Array<ShopListing & {
3893
+ item: Item;
3894
+ }>>;
3895
+ };
3896
+ };
3897
+ };
3898
+ /** Map methods (elements) */
3899
+ maps: {
3900
+ get: (identifier: string) => Promise<MapData>;
3901
+ elements: (mapId: string) => Promise<MapElementWithGame[]>;
3902
+ objects: {
3903
+ list: (mapId: string) => Promise<MapObjectWithItem[]>;
3904
+ create: (mapId: string, objectData: CreateMapObjectData) => Promise<MapObjectWithItem>;
3905
+ delete: (mapId: string, objectId: string) => Promise<void>;
3906
+ };
3907
+ };
3908
+ /** Admin methods (games, items, currencies, shop listings) */
3909
+ admin: {
3910
+ games: {
3911
+ pauseGame: (gameId: string) => Promise<void>;
3912
+ resumeGame: (gameId: string) => Promise<void>;
3913
+ };
3914
+ items: {
3915
+ create: (props: InsertItemInput) => Promise<{
3916
+ id: string;
3917
+ createdAt: Date;
3918
+ type: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
3919
+ gameId: string | null;
3920
+ slug: string;
3921
+ displayName: string;
3922
+ metadata: unknown;
3923
+ description: string | null;
3924
+ isPlaceable: boolean;
3925
+ imageUrl: string | null;
3926
+ }>;
3927
+ get: (itemId: string) => Promise<{
3928
+ id: string;
3929
+ createdAt: Date;
3930
+ type: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
3931
+ gameId: string | null;
3932
+ slug: string;
3933
+ displayName: string;
3934
+ metadata: unknown;
3935
+ description: string | null;
3936
+ isPlaceable: boolean;
3937
+ imageUrl: string | null;
3938
+ }>;
3939
+ list: () => Promise<{
3940
+ id: string;
3941
+ createdAt: Date;
3942
+ type: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
3943
+ gameId: string | null;
3944
+ slug: string;
3945
+ displayName: string;
3946
+ metadata: unknown;
3947
+ description: string | null;
3948
+ isPlaceable: boolean;
3949
+ imageUrl: string | null;
3950
+ }[]>;
3951
+ update: (itemId: string, props: UpdateItemInput) => Promise<{
3952
+ id: string;
3953
+ createdAt: Date;
3954
+ type: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
3955
+ gameId: string | null;
3956
+ slug: string;
3957
+ displayName: string;
3958
+ metadata: unknown;
3959
+ description: string | null;
3960
+ isPlaceable: boolean;
3961
+ imageUrl: string | null;
3962
+ }>;
3963
+ delete: (itemId: string) => Promise<void>;
3964
+ };
3965
+ currencies: {
3966
+ create: (props: InsertCurrencyInput) => Promise<{
3967
+ symbol: string | null;
3968
+ id: string;
3969
+ createdAt: Date;
3970
+ updatedAt: Date | null;
3971
+ itemId: string;
3972
+ isPrimary: boolean;
3973
+ }>;
3974
+ get: (currencyId: string) => Promise<{
3975
+ symbol: string | null;
3976
+ id: string;
3977
+ createdAt: Date;
3978
+ updatedAt: Date | null;
3979
+ itemId: string;
3980
+ isPrimary: boolean;
3981
+ }>;
3982
+ list: () => Promise<{
3983
+ symbol: string | null;
3984
+ id: string;
3985
+ createdAt: Date;
3986
+ updatedAt: Date | null;
3987
+ itemId: string;
3988
+ isPrimary: boolean;
3989
+ }[]>;
3990
+ update: (currencyId: string, props: UpdateCurrencyInput) => Promise<{
3991
+ symbol: string | null;
3992
+ id: string;
3993
+ createdAt: Date;
3994
+ updatedAt: Date | null;
3995
+ itemId: string;
3996
+ isPrimary: boolean;
3997
+ }>;
3998
+ delete: (currencyId: string) => Promise<void>;
3999
+ };
4000
+ shopListings: {
4001
+ create: (props: InsertShopListingInput) => Promise<{
4002
+ id: string;
4003
+ createdAt: Date;
4004
+ updatedAt: Date | null;
4005
+ itemId: string;
4006
+ currencyId: string;
4007
+ price: number;
4008
+ sellBackPercentage: number | null;
4009
+ stock: number | null;
4010
+ isActive: boolean;
4011
+ availableFrom: Date | null;
4012
+ availableUntil: Date | null;
4013
+ }>;
4014
+ get: (listingId: string) => Promise<{
4015
+ id: string;
4016
+ createdAt: Date;
4017
+ updatedAt: Date | null;
4018
+ itemId: string;
4019
+ currencyId: string;
4020
+ price: number;
4021
+ sellBackPercentage: number | null;
4022
+ stock: number | null;
4023
+ isActive: boolean;
4024
+ availableFrom: Date | null;
4025
+ availableUntil: Date | null;
4026
+ }>;
4027
+ list: () => Promise<{
4028
+ id: string;
4029
+ createdAt: Date;
4030
+ updatedAt: Date | null;
4031
+ itemId: string;
4032
+ currencyId: string;
4033
+ price: number;
4034
+ sellBackPercentage: number | null;
4035
+ stock: number | null;
4036
+ isActive: boolean;
4037
+ availableFrom: Date | null;
4038
+ availableUntil: Date | null;
4039
+ }[]>;
4040
+ update: (listingId: string, props: UpdateShopListingInput) => Promise<{
4041
+ id: string;
4042
+ createdAt: Date;
4043
+ updatedAt: Date | null;
4044
+ itemId: string;
4045
+ currencyId: string;
4046
+ price: number;
4047
+ sellBackPercentage: number | null;
4048
+ stock: number | null;
4049
+ isActive: boolean;
4050
+ availableFrom: Date | null;
4051
+ availableUntil: Date | null;
4052
+ }>;
4053
+ delete: (listingId: string) => Promise<void>;
4054
+ };
4055
+ };
4056
+ /** Shop methods (view) */
4057
+ shop: {
4058
+ view: () => Promise<ShopViewResponse>;
4059
+ };
4060
+ /** Level methods (levels) */
4061
+ levels: {
4062
+ get: () => Promise<UserLevel>;
4063
+ progress: (options?: CooldownCacheConfig) => Promise<{
4064
+ level: number;
4065
+ currentXp: number;
4066
+ xpToNextLevel: number;
4067
+ totalXP: number;
4068
+ }>;
4069
+ config: {
4070
+ list: () => Promise<LevelConfig[]>;
4071
+ get: (level: number) => Promise<LevelConfig | null>;
4072
+ };
4073
+ };
4074
+ /** TimeBack XP methods (today, total, history) */
4075
+ timeback: {
4076
+ xp: {
4077
+ today: (options?: {
4078
+ date?: string;
4079
+ timezone?: string;
4080
+ }) => Promise<TodayXpResponse>;
4081
+ total: () => Promise<TotalXpResponse>;
4082
+ history: (options?: {
4083
+ startDate?: string;
4084
+ endDate?: string;
4085
+ }) => Promise<XpHistoryResponse>;
4086
+ summary: (options?: {
4087
+ date?: string;
4088
+ timezone?: string;
4089
+ }) => Promise<XpSummaryResponse>;
4090
+ };
4091
+ };
4092
+ /** Telemetry methods (pushMetrics) */
4093
+ telemetry: {
4094
+ pushMetrics: (metrics: Record<string, number>) => Promise<void>;
4095
+ };
4096
+ /** Credits methods (credits management) */
4097
+ credits: {
4098
+ balance: () => Promise<number>;
4099
+ add: (amount: number) => Promise<number>;
4100
+ spend: (amount: number) => Promise<number>;
4101
+ };
4102
+ /** Platform-wide leaderboard methods (fetch, getUserRank) */
4103
+ leaderboard: {
4104
+ fetch: (options?: LeaderboardOptions) => Promise<GameLeaderboardEntry[]>;
4105
+ getUserRank: (gameId: string, userId: string) => Promise<UserRankResponse>;
4106
+ };
4107
+ /** Platform-wide scores methods (submit, getUserScores) */
4108
+ scores: {
4109
+ submit: (gameId: string, score: number, metadata?: Record<string, unknown>) => Promise<ScoreSubmission>;
4110
+ getByUser: (gameId: string, userId: string, options?: {
4111
+ limit?: number;
4112
+ }) => Promise<UserScore$1[]>;
4113
+ };
4114
+ /** Character methods (get, create, update, components) */
4115
+ character: {
4116
+ get: (userId?: string) => Promise<PlayerCharacter | null>;
4117
+ create: (characterData: CreateCharacterData) => Promise<PlayerCharacter>;
4118
+ update: (updates: UpdateCharacterData) => Promise<PlayerCharacter>;
4119
+ components: {
4120
+ list: (options?: CharacterComponentsOptions & TTLCacheConfig) => Promise<CharacterComponentWithSpriteUrl[]>;
4121
+ clearCache: (key?: string) => void;
4122
+ getCacheKeys: () => string[];
4123
+ };
4124
+ accessories: {
4125
+ equip: (slot: string, componentId: string) => Promise<PlayerCharacterAccessory>;
4126
+ remove: (slot: string) => Promise<{
4127
+ success: boolean;
4128
+ }>;
4129
+ list: () => Promise<PlayerCharacterAccessory[]>;
4130
+ };
4131
+ };
4132
+ /** Sprites methods (templates) */
4133
+ sprites: {
4134
+ templates: {
4135
+ get: (slug: string) => Promise<SpriteTemplateData>;
4136
+ };
4137
+ };
4138
+ /** Realtime methods (token) */
4139
+ realtime: {
4140
+ token: {
4141
+ get: () => Promise<RealtimeTokenResponse>;
4142
+ };
4143
+ open(channel?: string, url?: string): Promise<_playcademy_realtime_server_types.RealtimeChannel>;
4144
+ };
4145
+ /** Achievements methods (list, history, progress) */
4146
+ achievements: {
4147
+ list: (options?: TTLCacheConfig) => Promise<AchievementCurrent[]>;
4148
+ history: {
4149
+ list: (queryOptions?: {
4150
+ limit?: number;
4151
+ }, cacheOptions?: TTLCacheConfig) => Promise<AchievementHistoryEntry[]>;
4152
+ };
4153
+ progress: {
4154
+ submit: (achievementId: string) => Promise<AchievementProgressResponse>;
4155
+ };
4156
+ };
4157
+ /** Auto-initializes a PlaycademyClient with context from the environment */
4158
+ static init: typeof init;
4159
+ /** Authenticates a user with email and password */
4160
+ static login: typeof login;
4161
+ /** Static identity utilities for OAuth operations */
4162
+ static identity: {
4163
+ parseOAuthState: typeof parseOAuthState;
4164
+ };
4165
+ }
4166
+
4167
+ interface ClientConfig {
6
4168
  baseUrl: string;
7
4169
  token?: string;
8
4170
  gameId?: string;
4171
+ autoStartSession?: boolean;
9
4172
  }
10
- export declare const AuthProvider: {
11
- readonly TIMEBACK: "TIMEBACK";
12
- };
13
- export type AuthProviderType = (typeof AuthProvider)[keyof typeof AuthProvider];
14
- export interface AuthOptions {
4173
+ interface InitPayload {
4174
+ baseUrl: string;
4175
+ token: string;
4176
+ gameId: string;
4177
+ realtimeUrl?: string;
4178
+ user?: GameUser;
4179
+ }
4180
+ type AuthProviderType = (typeof AuthProvider)[keyof typeof AuthProvider];
4181
+ interface AuthOptions {
15
4182
  /** The identity provider to use for authentication */
16
4183
  provider: AuthProviderType;
17
4184
  /** The OAuth callback URL where your server handles the callback */
@@ -34,7 +4201,7 @@ export interface AuthOptions {
34
4201
  */
35
4202
  stateData?: Record<string, string>;
36
4203
  }
37
- export interface AuthStateUpdate {
4204
+ interface AuthStateUpdate {
38
4205
  /** Current status of the authentication flow */
39
4206
  status: 'opening_popup' | 'exchanging_token' | 'complete' | 'error';
40
4207
  /** Human-readable message about the current state */
@@ -42,7 +4209,7 @@ export interface AuthStateUpdate {
42
4209
  /** Error details if status is 'error' */
43
4210
  error?: Error;
44
4211
  }
45
- export interface AuthResult {
4212
+ interface AuthResult {
46
4213
  /** Whether authentication was successful */
47
4214
  success: boolean;
48
4215
  /** User information if authentication was successful */
@@ -50,7 +4217,11 @@ export interface AuthResult {
50
4217
  /** Error if authentication failed */
51
4218
  error?: Error;
52
4219
  }
53
- export interface UserInfo {
4220
+ /**
4221
+ * Standard OAuth/OIDC user claims returned from identity providers
4222
+ * This is what external identity providers (like Timeback) return
4223
+ */
4224
+ interface UserInfo {
54
4225
  /** Unique user identifier (sub claim from JWT) */
55
4226
  sub: string;
56
4227
  /** User's email address */
@@ -59,14 +4230,36 @@ export interface UserInfo {
59
4230
  name: string;
60
4231
  /** Whether the email has been verified */
61
4232
  email_verified: boolean;
4233
+ /** Optional given name (first name) */
4234
+ given_name?: string;
4235
+ /** Optional family name (last name) */
4236
+ family_name?: string;
62
4237
  /** Additional user attributes from the identity provider */
63
4238
  [key: string]: unknown;
64
4239
  }
4240
+ /**
4241
+ * Simplified user data passed to games via InitPayload
4242
+ * This is a subset of AuthenticatedUser suitable for external game consumption
4243
+ */
4244
+ interface GameUser {
4245
+ /** Playcademy user ID */
4246
+ id: string;
4247
+ /** Unique username */
4248
+ username: string | null;
4249
+ /** Display name */
4250
+ name: string | null;
4251
+ /** Email address */
4252
+ email: string | null;
4253
+ /** Profile image URL */
4254
+ image: string | null;
4255
+ /** Whether the user has a Timeback account */
4256
+ hasTimebackAccount: boolean;
4257
+ }
65
4258
  /**
66
4259
  * Authentication state change event payload.
67
4260
  * Used when authentication state changes in the application.
68
4261
  */
69
- export interface AuthStateChangePayload {
4262
+ interface AuthStateChangePayload {
70
4263
  /** Whether the user is currently authenticated */
71
4264
  authenticated: boolean;
72
4265
  /** User information if authenticated, null otherwise */
@@ -78,7 +4271,7 @@ export interface AuthStateChangePayload {
78
4271
  * OAuth callback event payload.
79
4272
  * Used when OAuth flow completes in popup/new-tab windows.
80
4273
  */
81
- export interface AuthCallbackPayload {
4274
+ interface AuthCallbackPayload {
82
4275
  /** OAuth authorization code */
83
4276
  code: string;
84
4277
  /** OAuth state parameter for CSRF protection */
@@ -90,7 +4283,7 @@ export interface AuthCallbackPayload {
90
4283
  * Message sent from server callback to opener window.
91
4284
  * This is the standardized format from our server-first architecture.
92
4285
  */
93
- export interface AuthServerMessage {
4286
+ interface AuthServerMessage {
94
4287
  /** Type of the message */
95
4288
  type: 'PLAYCADEMY_AUTH_STATE_CHANGE';
96
4289
  /** Whether the user is currently authenticated */
@@ -108,7 +4301,7 @@ export interface AuthServerMessage {
108
4301
  * Token refresh event payload.
109
4302
  * Sent when authentication token is updated.
110
4303
  */
111
- export interface TokenRefreshPayload {
4304
+ interface TokenRefreshPayload {
112
4305
  /** New authentication token */
113
4306
  token: string;
114
4307
  /** Token expiration timestamp */
@@ -118,7 +4311,7 @@ export interface TokenRefreshPayload {
118
4311
  * Telemetry event payload.
119
4312
  * Performance metrics sent from the game.
120
4313
  */
121
- export interface TelemetryPayload {
4314
+ interface TelemetryPayload {
122
4315
  /** Frames per second */
123
4316
  fps: number;
124
4317
  /** Memory usage in MB */
@@ -128,7 +4321,7 @@ export interface TelemetryPayload {
128
4321
  * Keyboard event payload.
129
4322
  * Key events forwarded from the game.
130
4323
  */
131
- export interface KeyEventPayload {
4324
+ interface KeyEventPayload {
132
4325
  /** Key value (e.g., 'Escape', 'F1') */
133
4326
  key: string;
134
4327
  /** Key code (optional) */
@@ -136,7 +4329,7 @@ export interface KeyEventPayload {
136
4329
  /** Event type */
137
4330
  type: 'keydown' | 'keyup';
138
4331
  }
139
- export interface ClientEvents {
4332
+ interface ClientEvents {
140
4333
  authChange: {
141
4334
  token: string | null;
142
4335
  };
@@ -156,30 +4349,30 @@ export interface ClientEvents {
156
4349
  leveledUp: boolean;
157
4350
  };
158
4351
  }
159
- export type GameContextPayload = {
4352
+ type GameContextPayload = {
160
4353
  token: string;
161
4354
  baseUrl: string;
162
4355
  realtimeUrl: string;
163
4356
  gameId: string;
164
4357
  forwardKeys?: string[];
165
4358
  };
166
- export type EventListeners = {
4359
+ type EventListeners = {
167
4360
  [E in keyof ClientEvents]?: Array<(payload: ClientEvents[E]) => void>;
168
4361
  };
169
- export type LoginResponse = {
4362
+ type LoginResponse = {
170
4363
  token: string;
171
4364
  };
172
- export type GameTokenResponse = {
4365
+ type GameTokenResponse = {
173
4366
  token: string;
174
4367
  exp: number;
175
4368
  };
176
- export type StartSessionResponse = {
4369
+ type StartSessionResponse = {
177
4370
  sessionId: string;
178
4371
  };
179
- export type InventoryMutationResponse = {
4372
+ type InventoryMutationResponse = {
180
4373
  newTotal: number;
181
4374
  };
182
- export type DevUploadEvent = {
4375
+ type DevUploadEvent = {
183
4376
  type: 'init';
184
4377
  } | {
185
4378
  type: 's3Progress';
@@ -198,7 +4391,10 @@ export type DevUploadEvent = {
198
4391
  } | {
199
4392
  type: 'close';
200
4393
  };
201
- export type DevUploadHooks = {
4394
+ type DevUploadHooks = {
202
4395
  onEvent?: (e: DevUploadEvent) => void;
203
4396
  onClose?: () => void;
204
4397
  };
4398
+
4399
+ export { PlaycademyClient };
4400
+ export type { Achievement, AchievementCurrent, AchievementProgressResponse, AuthCallbackPayload, AuthOptions, AuthProviderType, AuthResult, AuthServerMessage, AuthStateChangePayload, AuthStateUpdate, AuthenticatedUser, CharacterComponent, CharacterComponentWithSpriteUrl, ClientConfig, ClientEvents, Currency, DevUploadEvent, DevUploadHooks, DeveloperKey, DeveloperStatusResponse, EventListeners, ExternalGame, Game, GameContextPayload, GameLeaderboardEntry, GameSession, GameStateData, GameTokenResponse, GameUser, HostedGame, HostedGameWithManifest, InitPayload, InventoryItem, InventoryItemWithItem, InventoryMutationResponse, Item, KeyEventPayload, LeaderboardEntry, LevelConfig, LoginResponse, ManifestV1, Map, MapElement, MapElementWithGame, MapObject, MapObjectWithItem, PlayerCharacter, ShopCurrency, ShopDisplayItem, ShopViewResponse, SpriteTemplate, SpriteTemplateData, StartSessionResponse, TelemetryPayload, TodayXpResponse, TokenRefreshPayload, TotalXpResponse, User, UserInfo, UserLevel, UserLevelWithConfig, UserRank, UserRankResponse, UserRoleEnumType, UserScore$1 as UserScore, XpHistoryResponse };