@playcademy/sdk 0.1.18 → 0.2.1

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.
package/dist/index.d.ts CHANGED
@@ -1,12 +1,7 @@
1
- import { AUTH_PROVIDER_IDS } from '@playcademy/constants';
2
- import { InferSelectModel } from 'drizzle-orm';
3
- import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
4
- import * as drizzle_zod from 'drizzle-zod';
5
- import { z } from 'zod';
6
1
  import * as _playcademy_realtime_server_types from '@playcademy/realtime/server/types';
7
2
  import * as _playcademy_timeback_types from '@playcademy/timeback/types';
8
- import { OrganizationConfig, CourseConfig, ComponentConfig, ResourceConfig, ComponentResourceConfig } from '@playcademy/timeback/types';
9
- import { SchemaInfo } from '@playcademy/cloudflare';
3
+ import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
4
+ import { AUTH_PROVIDER_IDS } from '@playcademy/constants';
10
5
 
11
6
  /**
12
7
  * Base error class for Cademy SDK specific errors.
@@ -246,6 +241,21 @@ declare class ConnectionMonitor {
246
241
  private _setState;
247
242
  }
248
243
 
244
+ /**
245
+ * OAuth 2.0 implementation for the Playcademy SDK
246
+ */
247
+
248
+ /**
249
+ * Parses an OAuth state parameter to extract CSRF token and any encoded data.
250
+ *
251
+ * @param state - The OAuth state parameter to parse
252
+ * @returns Object containing CSRF token and optional decoded data
253
+ */
254
+ declare function parseOAuthState(state: string): {
255
+ csrfToken: string;
256
+ data?: Record<string, string>;
257
+ };
258
+
249
259
  declare const users: drizzle_orm_pg_core.PgTableWithColumns<{
250
260
  name: "user";
251
261
  schema: undefined;
@@ -457,36 +467,13 @@ declare const users: drizzle_orm_pg_core.PgTableWithColumns<{
457
467
  };
458
468
  dialect: "pg";
459
469
  }>;
460
-
461
- type GameMetadata = {
462
- description?: string;
463
- emoji?: string;
464
- [key: string]: unknown;
465
- };
466
- /**
467
- * DNS validation records for custom hostname
468
- * Structure for the validationRecords JSON field in game_custom_hostnames table
469
- */
470
- type CustomHostnameValidationRecords = {
471
- /** TXT record for ownership verification */
472
- ownership?: {
473
- name?: string;
474
- value?: string;
475
- type?: string;
476
- };
477
- /** TXT records for SSL certificate validation */
478
- ssl?: Array<{
479
- txt_name?: string;
480
- txt_value?: string;
481
- }>;
482
- };
483
- declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
484
- name: "games";
470
+ declare const items: drizzle_orm_pg_core.PgTableWithColumns<{
471
+ name: "items";
485
472
  schema: undefined;
486
473
  columns: {
487
474
  id: drizzle_orm_pg_core.PgColumn<{
488
475
  name: "id";
489
- tableName: "games";
476
+ tableName: "items";
490
477
  dataType: "string";
491
478
  columnType: "PgUUID";
492
479
  data: string;
@@ -501,14 +488,14 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
501
488
  identity: undefined;
502
489
  generated: undefined;
503
490
  }, {}, {}>;
504
- developerId: drizzle_orm_pg_core.PgColumn<{
505
- name: "developer_id";
506
- tableName: "games";
491
+ slug: drizzle_orm_pg_core.PgColumn<{
492
+ name: "slug";
493
+ tableName: "items";
507
494
  dataType: "string";
508
495
  columnType: "PgText";
509
496
  data: string;
510
497
  driverParam: string;
511
- notNull: false;
498
+ notNull: true;
512
499
  hasDefault: false;
513
500
  isPrimaryKey: false;
514
501
  isAutoincrement: false;
@@ -518,49 +505,28 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
518
505
  identity: undefined;
519
506
  generated: undefined;
520
507
  }, {}, {}>;
521
- slug: drizzle_orm_pg_core.PgColumn<{
522
- name: "slug";
523
- tableName: "games";
508
+ gameId: drizzle_orm_pg_core.PgColumn<{
509
+ name: "game_id";
510
+ tableName: "items";
524
511
  dataType: "string";
525
- columnType: "PgVarchar";
512
+ columnType: "PgUUID";
526
513
  data: string;
527
514
  driverParam: string;
528
- notNull: true;
515
+ notNull: false;
529
516
  hasDefault: false;
530
517
  isPrimaryKey: false;
531
518
  isAutoincrement: false;
532
519
  hasRuntimeDefault: false;
533
- enumValues: [string, ...string[]];
520
+ enumValues: undefined;
534
521
  baseColumn: never;
535
522
  identity: undefined;
536
523
  generated: undefined;
537
- }, {}, {
538
- length: 255;
539
- }>;
524
+ }, {}, {}>;
540
525
  displayName: drizzle_orm_pg_core.PgColumn<{
541
526
  name: "display_name";
542
- tableName: "games";
543
- dataType: "string";
544
- columnType: "PgVarchar";
545
- data: string;
546
- driverParam: string;
547
- notNull: true;
548
- hasDefault: false;
549
- isPrimaryKey: false;
550
- isAutoincrement: false;
551
- hasRuntimeDefault: false;
552
- enumValues: [string, ...string[]];
553
- baseColumn: never;
554
- identity: undefined;
555
- generated: undefined;
556
- }, {}, {
557
- length: 255;
558
- }>;
559
- version: drizzle_orm_pg_core.PgColumn<{
560
- name: "version";
561
- tableName: "games";
527
+ tableName: "items";
562
528
  dataType: "string";
563
- columnType: "PgVarchar";
529
+ columnType: "PgText";
564
530
  data: string;
565
531
  driverParam: string;
566
532
  notNull: true;
@@ -572,29 +538,10 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
572
538
  baseColumn: never;
573
539
  identity: undefined;
574
540
  generated: undefined;
575
- }, {}, {
576
- length: 50;
577
- }>;
578
- gameType: drizzle_orm_pg_core.PgColumn<{
579
- name: "game_type";
580
- tableName: "games";
581
- dataType: "string";
582
- columnType: "PgEnumColumn";
583
- data: "hosted" | "external";
584
- driverParam: string;
585
- notNull: true;
586
- hasDefault: true;
587
- isPrimaryKey: false;
588
- isAutoincrement: false;
589
- hasRuntimeDefault: false;
590
- enumValues: ["hosted", "external"];
591
- baseColumn: never;
592
- identity: undefined;
593
- generated: undefined;
594
541
  }, {}, {}>;
595
- deploymentUrl: drizzle_orm_pg_core.PgColumn<{
596
- name: "deployment_url";
597
- tableName: "games";
542
+ description: drizzle_orm_pg_core.PgColumn<{
543
+ name: "description";
544
+ tableName: "items";
598
545
  dataType: "string";
599
546
  columnType: "PgText";
600
547
  data: string;
@@ -609,45 +556,45 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
609
556
  identity: undefined;
610
557
  generated: undefined;
611
558
  }, {}, {}>;
612
- externalUrl: drizzle_orm_pg_core.PgColumn<{
613
- name: "external_url";
614
- tableName: "games";
559
+ type: drizzle_orm_pg_core.PgColumn<{
560
+ name: "type";
561
+ tableName: "items";
615
562
  dataType: "string";
616
- columnType: "PgText";
617
- data: string;
563
+ columnType: "PgEnumColumn";
564
+ data: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
618
565
  driverParam: string;
619
- notNull: false;
620
- hasDefault: false;
566
+ notNull: true;
567
+ hasDefault: true;
621
568
  isPrimaryKey: false;
622
569
  isAutoincrement: false;
623
570
  hasRuntimeDefault: false;
624
- enumValues: [string, ...string[]];
571
+ enumValues: ["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"];
625
572
  baseColumn: never;
626
573
  identity: undefined;
627
574
  generated: undefined;
628
575
  }, {}, {}>;
629
- platform: drizzle_orm_pg_core.PgColumn<{
630
- name: "platform";
631
- tableName: "games";
632
- dataType: "string";
633
- columnType: "PgEnumColumn";
634
- data: "web" | "godot" | "unity";
635
- driverParam: string;
576
+ isPlaceable: drizzle_orm_pg_core.PgColumn<{
577
+ name: "is_placeable";
578
+ tableName: "items";
579
+ dataType: "boolean";
580
+ columnType: "PgBoolean";
581
+ data: boolean;
582
+ driverParam: boolean;
636
583
  notNull: true;
637
584
  hasDefault: true;
638
585
  isPrimaryKey: false;
639
586
  isAutoincrement: false;
640
587
  hasRuntimeDefault: false;
641
- enumValues: ["web", "godot", "unity"];
588
+ enumValues: undefined;
642
589
  baseColumn: never;
643
590
  identity: undefined;
644
591
  generated: undefined;
645
592
  }, {}, {}>;
646
- mapElementId: drizzle_orm_pg_core.PgColumn<{
647
- name: "map_element_id";
648
- tableName: "games";
593
+ imageUrl: drizzle_orm_pg_core.PgColumn<{
594
+ name: "image_url";
595
+ tableName: "items";
649
596
  dataType: "string";
650
- columnType: "PgUUID";
597
+ columnType: "PgText";
651
598
  data: string;
652
599
  driverParam: string;
653
600
  notNull: false;
@@ -655,37 +602,18 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
655
602
  isPrimaryKey: false;
656
603
  isAutoincrement: false;
657
604
  hasRuntimeDefault: false;
658
- enumValues: undefined;
605
+ enumValues: [string, ...string[]];
659
606
  baseColumn: never;
660
607
  identity: undefined;
661
608
  generated: undefined;
662
609
  }, {}, {}>;
663
610
  metadata: drizzle_orm_pg_core.PgColumn<{
664
611
  name: "metadata";
665
- tableName: "games";
612
+ tableName: "items";
666
613
  dataType: "json";
667
614
  columnType: "PgJsonb";
668
- data: GameMetadata;
615
+ data: unknown;
669
616
  driverParam: unknown;
670
- notNull: true;
671
- hasDefault: true;
672
- isPrimaryKey: false;
673
- isAutoincrement: false;
674
- hasRuntimeDefault: false;
675
- enumValues: undefined;
676
- baseColumn: never;
677
- identity: undefined;
678
- generated: undefined;
679
- }, {}, {
680
- $type: GameMetadata;
681
- }>;
682
- createdAt: drizzle_orm_pg_core.PgColumn<{
683
- name: "created_at";
684
- tableName: "games";
685
- dataType: "date";
686
- columnType: "PgTimestamp";
687
- data: Date;
688
- driverParam: string;
689
617
  notNull: false;
690
618
  hasDefault: true;
691
619
  isPrimaryKey: false;
@@ -696,14 +624,14 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
696
624
  identity: undefined;
697
625
  generated: undefined;
698
626
  }, {}, {}>;
699
- updatedAt: drizzle_orm_pg_core.PgColumn<{
700
- name: "updated_at";
701
- tableName: "games";
627
+ createdAt: drizzle_orm_pg_core.PgColumn<{
628
+ name: "created_at";
629
+ tableName: "items";
702
630
  dataType: "date";
703
631
  columnType: "PgTimestamp";
704
632
  data: Date;
705
633
  driverParam: string;
706
- notNull: false;
634
+ notNull: true;
707
635
  hasDefault: true;
708
636
  isPrimaryKey: false;
709
637
  isAutoincrement: false;
@@ -716,18 +644,13 @@ declare const games: drizzle_orm_pg_core.PgTableWithColumns<{
716
644
  };
717
645
  dialect: "pg";
718
646
  }>;
719
- /**
720
- * Custom hostnames table
721
- *
722
- * Stores custom domain mappings for games with SSL provisioning via Cloudflare.
723
- */
724
- declare const gameCustomHostnames: drizzle_orm_pg_core.PgTableWithColumns<{
725
- name: "game_custom_hostnames";
647
+ declare const inventoryItems: drizzle_orm_pg_core.PgTableWithColumns<{
648
+ name: "inventory_items";
726
649
  schema: undefined;
727
650
  columns: {
728
651
  id: drizzle_orm_pg_core.PgColumn<{
729
652
  name: "id";
730
- tableName: "game_custom_hostnames";
653
+ tableName: "inventory_items";
731
654
  dataType: "string";
732
655
  columnType: "PgUUID";
733
656
  data: string;
@@ -742,43 +665,9 @@ declare const gameCustomHostnames: drizzle_orm_pg_core.PgTableWithColumns<{
742
665
  identity: undefined;
743
666
  generated: undefined;
744
667
  }, {}, {}>;
745
- gameId: drizzle_orm_pg_core.PgColumn<{
746
- name: "game_id";
747
- tableName: "game_custom_hostnames";
748
- dataType: "string";
749
- columnType: "PgUUID";
750
- data: string;
751
- driverParam: string;
752
- notNull: true;
753
- hasDefault: false;
754
- isPrimaryKey: false;
755
- isAutoincrement: false;
756
- hasRuntimeDefault: false;
757
- enumValues: undefined;
758
- baseColumn: never;
759
- identity: undefined;
760
- generated: undefined;
761
- }, {}, {}>;
762
668
  userId: drizzle_orm_pg_core.PgColumn<{
763
669
  name: "user_id";
764
- tableName: "game_custom_hostnames";
765
- dataType: "string";
766
- columnType: "PgText";
767
- data: string;
768
- driverParam: string;
769
- notNull: true;
770
- hasDefault: false;
771
- isPrimaryKey: false;
772
- isAutoincrement: false;
773
- hasRuntimeDefault: false;
774
- enumValues: [string, ...string[]];
775
- baseColumn: never;
776
- identity: undefined;
777
- generated: undefined;
778
- }, {}, {}>;
779
- hostname: drizzle_orm_pg_core.PgColumn<{
780
- name: "hostname";
781
- tableName: "game_custom_hostnames";
670
+ tableName: "inventory_items";
782
671
  dataType: "string";
783
672
  columnType: "PgText";
784
673
  data: string;
@@ -793,11 +682,11 @@ declare const gameCustomHostnames: drizzle_orm_pg_core.PgTableWithColumns<{
793
682
  identity: undefined;
794
683
  generated: undefined;
795
684
  }, {}, {}>;
796
- cloudflareId: drizzle_orm_pg_core.PgColumn<{
797
- name: "cloudflare_id";
798
- tableName: "game_custom_hostnames";
685
+ itemId: drizzle_orm_pg_core.PgColumn<{
686
+ name: "item_id";
687
+ tableName: "inventory_items";
799
688
  dataType: "string";
800
- columnType: "PgText";
689
+ columnType: "PgUUID";
801
690
  data: string;
802
691
  driverParam: string;
803
692
  notNull: true;
@@ -805,88 +694,18 @@ declare const gameCustomHostnames: drizzle_orm_pg_core.PgTableWithColumns<{
805
694
  isPrimaryKey: false;
806
695
  isAutoincrement: false;
807
696
  hasRuntimeDefault: false;
808
- enumValues: [string, ...string[]];
809
- baseColumn: never;
810
- identity: undefined;
811
- generated: undefined;
812
- }, {}, {}>;
813
- environment: drizzle_orm_pg_core.PgColumn<{
814
- name: "environment";
815
- tableName: "game_custom_hostnames";
816
- dataType: "string";
817
- columnType: "PgEnumColumn";
818
- data: "staging" | "production";
819
- driverParam: string;
820
- notNull: true;
821
- hasDefault: true;
822
- isPrimaryKey: false;
823
- isAutoincrement: false;
824
- hasRuntimeDefault: false;
825
- enumValues: ["staging", "production"];
826
- baseColumn: never;
827
- identity: undefined;
828
- generated: undefined;
829
- }, {}, {}>;
830
- status: drizzle_orm_pg_core.PgColumn<{
831
- name: "status";
832
- tableName: "game_custom_hostnames";
833
- dataType: "string";
834
- columnType: "PgEnumColumn";
835
- data: "pending" | "pending_validation" | "pending_deployment" | "pending_deletion" | "active" | "blocked" | "deleted";
836
- driverParam: string;
837
- notNull: true;
838
- hasDefault: true;
839
- isPrimaryKey: false;
840
- isAutoincrement: false;
841
- hasRuntimeDefault: false;
842
- enumValues: ["pending", "pending_validation", "pending_deployment", "pending_deletion", "active", "blocked", "deleted"];
843
- baseColumn: never;
844
- identity: undefined;
845
- generated: undefined;
846
- }, {}, {}>;
847
- sslStatus: drizzle_orm_pg_core.PgColumn<{
848
- name: "ssl_status";
849
- tableName: "game_custom_hostnames";
850
- dataType: "string";
851
- columnType: "PgEnumColumn";
852
- data: "pending_validation" | "pending_deployment" | "active" | "deleted" | "initializing" | "pending_issuance";
853
- driverParam: string;
854
- notNull: true;
855
- hasDefault: true;
856
- isPrimaryKey: false;
857
- isAutoincrement: false;
858
- hasRuntimeDefault: false;
859
- enumValues: ["initializing", "pending_validation", "pending_issuance", "pending_deployment", "active", "deleted"];
860
- baseColumn: never;
861
- identity: undefined;
862
- generated: undefined;
863
- }, {}, {}>;
864
- validationRecords: drizzle_orm_pg_core.PgColumn<{
865
- name: "validation_records";
866
- tableName: "game_custom_hostnames";
867
- dataType: "json";
868
- columnType: "PgJsonb";
869
- data: CustomHostnameValidationRecords;
870
- driverParam: unknown;
871
- notNull: false;
872
- hasDefault: false;
873
- isPrimaryKey: false;
874
- isAutoincrement: false;
875
- hasRuntimeDefault: false;
876
697
  enumValues: undefined;
877
698
  baseColumn: never;
878
699
  identity: undefined;
879
700
  generated: undefined;
880
- }, {}, {
881
- $type: CustomHostnameValidationRecords;
882
- }>;
883
- createdAt: drizzle_orm_pg_core.PgColumn<{
884
- name: "created_at";
885
- tableName: "game_custom_hostnames";
886
- dataType: "date";
887
- columnType: "PgTimestamp";
888
- data: Date;
889
- driverParam: string;
701
+ }, {}, {}>;
702
+ quantity: drizzle_orm_pg_core.PgColumn<{
703
+ name: "quantity";
704
+ tableName: "inventory_items";
705
+ dataType: "number";
706
+ columnType: "PgInteger";
707
+ data: number;
708
+ driverParam: string | number;
890
709
  notNull: true;
891
710
  hasDefault: true;
892
711
  isPrimaryKey: false;
@@ -899,12 +718,12 @@ declare const gameCustomHostnames: drizzle_orm_pg_core.PgTableWithColumns<{
899
718
  }, {}, {}>;
900
719
  updatedAt: drizzle_orm_pg_core.PgColumn<{
901
720
  name: "updated_at";
902
- tableName: "game_custom_hostnames";
721
+ tableName: "inventory_items";
903
722
  dataType: "date";
904
723
  columnType: "PgTimestamp";
905
724
  data: Date;
906
725
  driverParam: string;
907
- notNull: true;
726
+ notNull: false;
908
727
  hasDefault: true;
909
728
  isPrimaryKey: false;
910
729
  isAutoincrement: false;
@@ -917,2293 +736,10 @@ declare const gameCustomHostnames: drizzle_orm_pg_core.PgTableWithColumns<{
917
736
  };
918
737
  dialect: "pg";
919
738
  }>;
920
- declare const items: drizzle_orm_pg_core.PgTableWithColumns<{
921
- name: "items";
922
- schema: undefined;
923
- columns: {
924
- id: drizzle_orm_pg_core.PgColumn<{
925
- name: "id";
926
- tableName: "items";
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
- slug: drizzle_orm_pg_core.PgColumn<{
942
- name: "slug";
943
- tableName: "items";
944
- dataType: "string";
945
- columnType: "PgText";
946
- data: string;
947
- driverParam: string;
948
- notNull: true;
949
- hasDefault: false;
950
- isPrimaryKey: false;
951
- isAutoincrement: false;
952
- hasRuntimeDefault: false;
953
- enumValues: [string, ...string[]];
954
- baseColumn: never;
955
- identity: undefined;
956
- generated: undefined;
957
- }, {}, {}>;
958
- gameId: drizzle_orm_pg_core.PgColumn<{
959
- name: "game_id";
960
- tableName: "items";
961
- dataType: "string";
962
- columnType: "PgUUID";
963
- data: string;
964
- driverParam: string;
965
- notNull: false;
966
- hasDefault: false;
967
- isPrimaryKey: false;
968
- isAutoincrement: false;
969
- hasRuntimeDefault: false;
970
- enumValues: undefined;
971
- baseColumn: never;
972
- identity: undefined;
973
- generated: undefined;
974
- }, {}, {}>;
975
- displayName: drizzle_orm_pg_core.PgColumn<{
976
- name: "display_name";
977
- tableName: "items";
978
- dataType: "string";
979
- columnType: "PgText";
980
- data: string;
981
- driverParam: string;
982
- notNull: true;
983
- hasDefault: false;
984
- isPrimaryKey: false;
985
- isAutoincrement: false;
986
- hasRuntimeDefault: false;
987
- enumValues: [string, ...string[]];
988
- baseColumn: never;
989
- identity: undefined;
990
- generated: undefined;
991
- }, {}, {}>;
992
- description: drizzle_orm_pg_core.PgColumn<{
993
- name: "description";
994
- tableName: "items";
995
- dataType: "string";
996
- columnType: "PgText";
997
- data: string;
998
- driverParam: string;
999
- notNull: false;
1000
- hasDefault: false;
1001
- isPrimaryKey: false;
1002
- isAutoincrement: false;
1003
- hasRuntimeDefault: false;
1004
- enumValues: [string, ...string[]];
1005
- baseColumn: never;
1006
- identity: undefined;
1007
- generated: undefined;
1008
- }, {}, {}>;
1009
- type: drizzle_orm_pg_core.PgColumn<{
1010
- name: "type";
1011
- tableName: "items";
1012
- dataType: "string";
1013
- columnType: "PgEnumColumn";
1014
- data: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
1015
- driverParam: string;
1016
- notNull: true;
1017
- hasDefault: true;
1018
- isPrimaryKey: false;
1019
- isAutoincrement: false;
1020
- hasRuntimeDefault: false;
1021
- enumValues: ["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"];
1022
- baseColumn: never;
1023
- identity: undefined;
1024
- generated: undefined;
1025
- }, {}, {}>;
1026
- isPlaceable: drizzle_orm_pg_core.PgColumn<{
1027
- name: "is_placeable";
1028
- tableName: "items";
1029
- dataType: "boolean";
1030
- columnType: "PgBoolean";
1031
- data: boolean;
1032
- driverParam: boolean;
1033
- notNull: true;
1034
- hasDefault: true;
1035
- isPrimaryKey: false;
1036
- isAutoincrement: false;
1037
- hasRuntimeDefault: false;
1038
- enumValues: undefined;
1039
- baseColumn: never;
1040
- identity: undefined;
1041
- generated: undefined;
1042
- }, {}, {}>;
1043
- imageUrl: drizzle_orm_pg_core.PgColumn<{
1044
- name: "image_url";
1045
- tableName: "items";
1046
- dataType: "string";
1047
- columnType: "PgText";
1048
- data: string;
1049
- driverParam: string;
1050
- notNull: false;
1051
- hasDefault: false;
1052
- isPrimaryKey: false;
1053
- isAutoincrement: false;
1054
- hasRuntimeDefault: false;
1055
- enumValues: [string, ...string[]];
1056
- baseColumn: never;
1057
- identity: undefined;
1058
- generated: undefined;
1059
- }, {}, {}>;
1060
- metadata: drizzle_orm_pg_core.PgColumn<{
1061
- name: "metadata";
1062
- tableName: "items";
1063
- dataType: "json";
1064
- columnType: "PgJsonb";
1065
- data: unknown;
1066
- driverParam: unknown;
1067
- notNull: false;
1068
- hasDefault: true;
1069
- isPrimaryKey: false;
1070
- isAutoincrement: false;
1071
- hasRuntimeDefault: false;
1072
- enumValues: undefined;
1073
- baseColumn: never;
1074
- identity: undefined;
1075
- generated: undefined;
1076
- }, {}, {}>;
1077
- createdAt: drizzle_orm_pg_core.PgColumn<{
1078
- name: "created_at";
1079
- tableName: "items";
1080
- dataType: "date";
1081
- columnType: "PgTimestamp";
1082
- data: Date;
1083
- driverParam: string;
1084
- notNull: true;
1085
- hasDefault: true;
1086
- isPrimaryKey: false;
1087
- isAutoincrement: false;
1088
- hasRuntimeDefault: false;
1089
- enumValues: undefined;
1090
- baseColumn: never;
1091
- identity: undefined;
1092
- generated: undefined;
1093
- }, {}, {}>;
1094
- };
1095
- dialect: "pg";
1096
- }>;
1097
- declare const inventoryItems: drizzle_orm_pg_core.PgTableWithColumns<{
1098
- name: "inventory_items";
1099
- schema: undefined;
1100
- columns: {
1101
- id: drizzle_orm_pg_core.PgColumn<{
1102
- name: "id";
1103
- tableName: "inventory_items";
1104
- dataType: "string";
1105
- columnType: "PgUUID";
1106
- data: string;
1107
- driverParam: string;
1108
- notNull: true;
1109
- hasDefault: true;
1110
- isPrimaryKey: true;
1111
- isAutoincrement: false;
1112
- hasRuntimeDefault: false;
1113
- enumValues: undefined;
1114
- baseColumn: never;
1115
- identity: undefined;
1116
- generated: undefined;
1117
- }, {}, {}>;
1118
- userId: drizzle_orm_pg_core.PgColumn<{
1119
- name: "user_id";
1120
- tableName: "inventory_items";
1121
- dataType: "string";
1122
- columnType: "PgText";
1123
- data: string;
1124
- driverParam: string;
1125
- notNull: true;
1126
- hasDefault: false;
1127
- isPrimaryKey: false;
1128
- isAutoincrement: false;
1129
- hasRuntimeDefault: false;
1130
- enumValues: [string, ...string[]];
1131
- baseColumn: never;
1132
- identity: undefined;
1133
- generated: undefined;
1134
- }, {}, {}>;
1135
- itemId: drizzle_orm_pg_core.PgColumn<{
1136
- name: "item_id";
1137
- tableName: "inventory_items";
1138
- dataType: "string";
1139
- columnType: "PgUUID";
1140
- data: string;
1141
- driverParam: string;
1142
- notNull: true;
1143
- hasDefault: false;
1144
- isPrimaryKey: false;
1145
- isAutoincrement: false;
1146
- hasRuntimeDefault: false;
1147
- enumValues: undefined;
1148
- baseColumn: never;
1149
- identity: undefined;
1150
- generated: undefined;
1151
- }, {}, {}>;
1152
- quantity: drizzle_orm_pg_core.PgColumn<{
1153
- name: "quantity";
1154
- tableName: "inventory_items";
1155
- dataType: "number";
1156
- columnType: "PgInteger";
1157
- data: number;
1158
- driverParam: string | number;
1159
- notNull: true;
1160
- hasDefault: true;
1161
- isPrimaryKey: false;
1162
- isAutoincrement: false;
1163
- hasRuntimeDefault: false;
1164
- enumValues: undefined;
1165
- baseColumn: never;
1166
- identity: undefined;
1167
- generated: undefined;
1168
- }, {}, {}>;
1169
- updatedAt: drizzle_orm_pg_core.PgColumn<{
1170
- name: "updated_at";
1171
- tableName: "inventory_items";
1172
- dataType: "date";
1173
- columnType: "PgTimestamp";
1174
- data: Date;
1175
- driverParam: string;
1176
- notNull: false;
1177
- hasDefault: true;
1178
- isPrimaryKey: false;
1179
- isAutoincrement: false;
1180
- hasRuntimeDefault: false;
1181
- enumValues: undefined;
1182
- baseColumn: never;
1183
- identity: undefined;
1184
- generated: undefined;
1185
- }, {}, {}>;
1186
- };
1187
- dialect: "pg";
1188
- }>;
1189
- declare const shopListings: drizzle_orm_pg_core.PgTableWithColumns<{
1190
- name: "shop_listings";
1191
- schema: undefined;
1192
- columns: {
1193
- id: drizzle_orm_pg_core.PgColumn<{
1194
- name: "id";
1195
- tableName: "shop_listings";
1196
- dataType: "string";
1197
- columnType: "PgUUID";
1198
- data: string;
1199
- driverParam: string;
1200
- notNull: true;
1201
- hasDefault: true;
1202
- isPrimaryKey: true;
1203
- isAutoincrement: false;
1204
- hasRuntimeDefault: false;
1205
- enumValues: undefined;
1206
- baseColumn: never;
1207
- identity: undefined;
1208
- generated: undefined;
1209
- }, {}, {}>;
1210
- itemId: drizzle_orm_pg_core.PgColumn<{
1211
- name: "item_id";
1212
- tableName: "shop_listings";
1213
- dataType: "string";
1214
- columnType: "PgUUID";
1215
- data: string;
1216
- driverParam: string;
1217
- notNull: true;
1218
- hasDefault: false;
1219
- isPrimaryKey: false;
1220
- isAutoincrement: false;
1221
- hasRuntimeDefault: false;
1222
- enumValues: undefined;
1223
- baseColumn: never;
1224
- identity: undefined;
1225
- generated: undefined;
1226
- }, {}, {}>;
1227
- currencyId: drizzle_orm_pg_core.PgColumn<{
1228
- name: "currency_id";
1229
- tableName: "shop_listings";
1230
- dataType: "string";
1231
- columnType: "PgUUID";
1232
- data: string;
1233
- driverParam: string;
1234
- notNull: true;
1235
- hasDefault: false;
1236
- isPrimaryKey: false;
1237
- isAutoincrement: false;
1238
- hasRuntimeDefault: false;
1239
- enumValues: undefined;
1240
- baseColumn: never;
1241
- identity: undefined;
1242
- generated: undefined;
1243
- }, {}, {}>;
1244
- price: drizzle_orm_pg_core.PgColumn<{
1245
- name: "price";
1246
- tableName: "shop_listings";
1247
- dataType: "number";
1248
- columnType: "PgInteger";
1249
- data: number;
1250
- driverParam: string | number;
1251
- notNull: true;
1252
- hasDefault: false;
1253
- isPrimaryKey: false;
1254
- isAutoincrement: false;
1255
- hasRuntimeDefault: false;
1256
- enumValues: undefined;
1257
- baseColumn: never;
1258
- identity: undefined;
1259
- generated: undefined;
1260
- }, {}, {}>;
1261
- sellBackPercentage: drizzle_orm_pg_core.PgColumn<{
1262
- name: "sell_back_percentage";
1263
- tableName: "shop_listings";
1264
- dataType: "number";
1265
- columnType: "PgInteger";
1266
- data: number;
1267
- driverParam: string | number;
1268
- notNull: false;
1269
- hasDefault: false;
1270
- isPrimaryKey: false;
1271
- isAutoincrement: false;
1272
- hasRuntimeDefault: false;
1273
- enumValues: undefined;
1274
- baseColumn: never;
1275
- identity: undefined;
1276
- generated: undefined;
1277
- }, {}, {}>;
1278
- stock: drizzle_orm_pg_core.PgColumn<{
1279
- name: "stock";
1280
- tableName: "shop_listings";
1281
- dataType: "number";
1282
- columnType: "PgInteger";
1283
- data: number;
1284
- driverParam: string | number;
1285
- notNull: false;
1286
- hasDefault: false;
1287
- isPrimaryKey: false;
1288
- isAutoincrement: false;
1289
- hasRuntimeDefault: false;
1290
- enumValues: undefined;
1291
- baseColumn: never;
1292
- identity: undefined;
1293
- generated: undefined;
1294
- }, {}, {}>;
1295
- isActive: drizzle_orm_pg_core.PgColumn<{
1296
- name: "is_active";
1297
- tableName: "shop_listings";
1298
- dataType: "boolean";
1299
- columnType: "PgBoolean";
1300
- data: boolean;
1301
- driverParam: boolean;
1302
- notNull: true;
1303
- hasDefault: true;
1304
- isPrimaryKey: false;
1305
- isAutoincrement: false;
1306
- hasRuntimeDefault: false;
1307
- enumValues: undefined;
1308
- baseColumn: never;
1309
- identity: undefined;
1310
- generated: undefined;
1311
- }, {}, {}>;
1312
- availableFrom: drizzle_orm_pg_core.PgColumn<{
1313
- name: "available_from";
1314
- tableName: "shop_listings";
1315
- dataType: "date";
1316
- columnType: "PgTimestamp";
1317
- data: Date;
1318
- driverParam: string;
1319
- notNull: false;
1320
- hasDefault: false;
1321
- isPrimaryKey: false;
1322
- isAutoincrement: false;
1323
- hasRuntimeDefault: false;
1324
- enumValues: undefined;
1325
- baseColumn: never;
1326
- identity: undefined;
1327
- generated: undefined;
1328
- }, {}, {}>;
1329
- availableUntil: drizzle_orm_pg_core.PgColumn<{
1330
- name: "available_until";
1331
- tableName: "shop_listings";
1332
- dataType: "date";
1333
- columnType: "PgTimestamp";
1334
- data: Date;
1335
- driverParam: string;
1336
- notNull: false;
1337
- hasDefault: false;
1338
- isPrimaryKey: false;
1339
- isAutoincrement: false;
1340
- hasRuntimeDefault: false;
1341
- enumValues: undefined;
1342
- baseColumn: never;
1343
- identity: undefined;
1344
- generated: undefined;
1345
- }, {}, {}>;
1346
- createdAt: drizzle_orm_pg_core.PgColumn<{
1347
- name: "created_at";
1348
- tableName: "shop_listings";
1349
- dataType: "date";
1350
- columnType: "PgTimestamp";
1351
- data: Date;
1352
- driverParam: string;
1353
- notNull: true;
1354
- hasDefault: true;
1355
- isPrimaryKey: false;
1356
- isAutoincrement: false;
1357
- hasRuntimeDefault: false;
1358
- enumValues: undefined;
1359
- baseColumn: never;
1360
- identity: undefined;
1361
- generated: undefined;
1362
- }, {}, {}>;
1363
- updatedAt: drizzle_orm_pg_core.PgColumn<{
1364
- name: "updated_at";
1365
- tableName: "shop_listings";
1366
- dataType: "date";
1367
- columnType: "PgTimestamp";
1368
- data: Date;
1369
- driverParam: string;
1370
- notNull: false;
1371
- hasDefault: true;
1372
- isPrimaryKey: false;
1373
- isAutoincrement: false;
1374
- hasRuntimeDefault: false;
1375
- enumValues: undefined;
1376
- baseColumn: never;
1377
- identity: undefined;
1378
- generated: undefined;
1379
- }, {}, {}>;
1380
- };
1381
- dialect: "pg";
1382
- }>;
1383
- declare const mapElements: drizzle_orm_pg_core.PgTableWithColumns<{
1384
- name: "map_elements";
1385
- schema: undefined;
1386
- columns: {
1387
- id: drizzle_orm_pg_core.PgColumn<{
1388
- name: "id";
1389
- tableName: "map_elements";
1390
- dataType: "string";
1391
- columnType: "PgUUID";
1392
- data: string;
1393
- driverParam: string;
1394
- notNull: true;
1395
- hasDefault: true;
1396
- isPrimaryKey: true;
1397
- isAutoincrement: false;
1398
- hasRuntimeDefault: false;
1399
- enumValues: undefined;
1400
- baseColumn: never;
1401
- identity: undefined;
1402
- generated: undefined;
1403
- }, {}, {}>;
1404
- mapId: drizzle_orm_pg_core.PgColumn<{
1405
- name: "map_id";
1406
- tableName: "map_elements";
1407
- dataType: "string";
1408
- columnType: "PgUUID";
1409
- data: string;
1410
- driverParam: string;
1411
- notNull: false;
1412
- hasDefault: false;
1413
- isPrimaryKey: false;
1414
- isAutoincrement: false;
1415
- hasRuntimeDefault: false;
1416
- enumValues: undefined;
1417
- baseColumn: never;
1418
- identity: undefined;
1419
- generated: undefined;
1420
- }, {}, {}>;
1421
- elementSlug: drizzle_orm_pg_core.PgColumn<{
1422
- name: "element_slug";
1423
- tableName: "map_elements";
1424
- dataType: "string";
1425
- columnType: "PgVarchar";
1426
- data: string;
1427
- driverParam: string;
1428
- notNull: true;
1429
- hasDefault: false;
1430
- isPrimaryKey: false;
1431
- isAutoincrement: false;
1432
- hasRuntimeDefault: false;
1433
- enumValues: [string, ...string[]];
1434
- baseColumn: never;
1435
- identity: undefined;
1436
- generated: undefined;
1437
- }, {}, {
1438
- length: 255;
1439
- }>;
1440
- interactionType: drizzle_orm_pg_core.PgColumn<{
1441
- name: "interaction_type";
1442
- tableName: "map_elements";
1443
- dataType: "string";
1444
- columnType: "PgEnumColumn";
1445
- data: "game_entry" | "game_registry" | "info" | "teleport" | "door_in" | "door_out" | "npc_interaction" | "quest_trigger";
1446
- driverParam: string;
1447
- notNull: true;
1448
- hasDefault: false;
1449
- isPrimaryKey: false;
1450
- isAutoincrement: false;
1451
- hasRuntimeDefault: false;
1452
- enumValues: ["game_entry", "game_registry", "info", "teleport", "door_in", "door_out", "npc_interaction", "quest_trigger"];
1453
- baseColumn: never;
1454
- identity: undefined;
1455
- generated: undefined;
1456
- }, {}, {}>;
1457
- gameId: drizzle_orm_pg_core.PgColumn<{
1458
- name: "game_id";
1459
- tableName: "map_elements";
1460
- dataType: "string";
1461
- columnType: "PgUUID";
1462
- data: string;
1463
- driverParam: string;
1464
- notNull: false;
1465
- hasDefault: false;
1466
- isPrimaryKey: false;
1467
- isAutoincrement: false;
1468
- hasRuntimeDefault: false;
1469
- enumValues: undefined;
1470
- baseColumn: never;
1471
- identity: undefined;
1472
- generated: undefined;
1473
- }, {}, {}>;
1474
- metadata: drizzle_orm_pg_core.PgColumn<{
1475
- name: "metadata";
1476
- tableName: "map_elements";
1477
- dataType: "json";
1478
- columnType: "PgJsonb";
1479
- data: Record<string, unknown>;
1480
- driverParam: unknown;
1481
- notNull: false;
1482
- hasDefault: true;
1483
- isPrimaryKey: false;
1484
- isAutoincrement: false;
1485
- hasRuntimeDefault: false;
1486
- enumValues: undefined;
1487
- baseColumn: never;
1488
- identity: undefined;
1489
- generated: undefined;
1490
- }, {}, {
1491
- $type: Record<string, unknown>;
1492
- }>;
1493
- };
1494
- dialect: "pg";
1495
- }>;
1496
- declare const mapObjects: drizzle_orm_pg_core.PgTableWithColumns<{
1497
- name: "map_objects";
1498
- schema: undefined;
1499
- columns: {
1500
- id: drizzle_orm_pg_core.PgColumn<{
1501
- name: "id";
1502
- tableName: "map_objects";
1503
- dataType: "string";
1504
- columnType: "PgUUID";
1505
- data: string;
1506
- driverParam: string;
1507
- notNull: true;
1508
- hasDefault: true;
1509
- isPrimaryKey: true;
1510
- isAutoincrement: false;
1511
- hasRuntimeDefault: false;
1512
- enumValues: undefined;
1513
- baseColumn: never;
1514
- identity: undefined;
1515
- generated: undefined;
1516
- }, {}, {}>;
1517
- userId: drizzle_orm_pg_core.PgColumn<{
1518
- name: "user_id";
1519
- tableName: "map_objects";
1520
- dataType: "string";
1521
- columnType: "PgText";
1522
- data: string;
1523
- driverParam: string;
1524
- notNull: true;
1525
- hasDefault: false;
1526
- isPrimaryKey: false;
1527
- isAutoincrement: false;
1528
- hasRuntimeDefault: false;
1529
- enumValues: [string, ...string[]];
1530
- baseColumn: never;
1531
- identity: undefined;
1532
- generated: undefined;
1533
- }, {}, {}>;
1534
- mapId: drizzle_orm_pg_core.PgColumn<{
1535
- name: "map_id";
1536
- tableName: "map_objects";
1537
- dataType: "string";
1538
- columnType: "PgUUID";
1539
- data: string;
1540
- driverParam: string;
1541
- notNull: true;
1542
- hasDefault: false;
1543
- isPrimaryKey: false;
1544
- isAutoincrement: false;
1545
- hasRuntimeDefault: false;
1546
- enumValues: undefined;
1547
- baseColumn: never;
1548
- identity: undefined;
1549
- generated: undefined;
1550
- }, {}, {}>;
1551
- itemId: drizzle_orm_pg_core.PgColumn<{
1552
- name: "item_id";
1553
- tableName: "map_objects";
1554
- dataType: "string";
1555
- columnType: "PgUUID";
1556
- data: string;
1557
- driverParam: string;
1558
- notNull: true;
1559
- hasDefault: false;
1560
- isPrimaryKey: false;
1561
- isAutoincrement: false;
1562
- hasRuntimeDefault: false;
1563
- enumValues: undefined;
1564
- baseColumn: never;
1565
- identity: undefined;
1566
- generated: undefined;
1567
- }, {}, {}>;
1568
- worldX: drizzle_orm_pg_core.PgColumn<{
1569
- name: "world_x";
1570
- tableName: "map_objects";
1571
- dataType: "number";
1572
- columnType: "PgDoublePrecision";
1573
- data: number;
1574
- driverParam: string | number;
1575
- notNull: true;
1576
- hasDefault: false;
1577
- isPrimaryKey: false;
1578
- isAutoincrement: false;
1579
- hasRuntimeDefault: false;
1580
- enumValues: undefined;
1581
- baseColumn: never;
1582
- identity: undefined;
1583
- generated: undefined;
1584
- }, {}, {}>;
1585
- worldY: drizzle_orm_pg_core.PgColumn<{
1586
- name: "world_y";
1587
- tableName: "map_objects";
1588
- dataType: "number";
1589
- columnType: "PgDoublePrecision";
1590
- data: number;
1591
- driverParam: string | number;
1592
- notNull: true;
1593
- hasDefault: false;
1594
- isPrimaryKey: false;
1595
- isAutoincrement: false;
1596
- hasRuntimeDefault: false;
1597
- enumValues: undefined;
1598
- baseColumn: never;
1599
- identity: undefined;
1600
- generated: undefined;
1601
- }, {}, {}>;
1602
- rotation: drizzle_orm_pg_core.PgColumn<{
1603
- name: "rotation";
1604
- tableName: "map_objects";
1605
- dataType: "number";
1606
- columnType: "PgInteger";
1607
- data: number;
1608
- driverParam: string | number;
1609
- notNull: true;
1610
- hasDefault: true;
1611
- isPrimaryKey: false;
1612
- isAutoincrement: false;
1613
- hasRuntimeDefault: false;
1614
- enumValues: undefined;
1615
- baseColumn: never;
1616
- identity: undefined;
1617
- generated: undefined;
1618
- }, {}, {}>;
1619
- scale: drizzle_orm_pg_core.PgColumn<{
1620
- name: "scale";
1621
- tableName: "map_objects";
1622
- dataType: "number";
1623
- columnType: "PgDoublePrecision";
1624
- data: number;
1625
- driverParam: string | number;
1626
- notNull: true;
1627
- hasDefault: true;
1628
- isPrimaryKey: false;
1629
- isAutoincrement: false;
1630
- hasRuntimeDefault: false;
1631
- enumValues: undefined;
1632
- baseColumn: never;
1633
- identity: undefined;
1634
- generated: undefined;
1635
- }, {}, {}>;
1636
- createdAt: drizzle_orm_pg_core.PgColumn<{
1637
- name: "created_at";
1638
- tableName: "map_objects";
1639
- dataType: "date";
1640
- columnType: "PgTimestamp";
1641
- data: Date;
1642
- driverParam: string;
1643
- notNull: true;
1644
- hasDefault: true;
1645
- isPrimaryKey: false;
1646
- isAutoincrement: false;
1647
- hasRuntimeDefault: false;
1648
- enumValues: undefined;
1649
- baseColumn: never;
1650
- identity: undefined;
1651
- generated: undefined;
1652
- }, {}, {}>;
1653
- };
1654
- dialect: "pg";
1655
- }>;
1656
-
1657
- declare const userLevels: drizzle_orm_pg_core.PgTableWithColumns<{
1658
- name: "user_levels";
1659
- schema: undefined;
1660
- columns: {
1661
- userId: drizzle_orm_pg_core.PgColumn<{
1662
- name: "user_id";
1663
- tableName: "user_levels";
1664
- dataType: "string";
1665
- columnType: "PgText";
1666
- data: string;
1667
- driverParam: string;
1668
- notNull: true;
1669
- hasDefault: false;
1670
- isPrimaryKey: true;
1671
- isAutoincrement: false;
1672
- hasRuntimeDefault: false;
1673
- enumValues: [string, ...string[]];
1674
- baseColumn: never;
1675
- identity: undefined;
1676
- generated: undefined;
1677
- }, {}, {}>;
1678
- currentLevel: drizzle_orm_pg_core.PgColumn<{
1679
- name: "current_level";
1680
- tableName: "user_levels";
1681
- dataType: "number";
1682
- columnType: "PgInteger";
1683
- data: number;
1684
- driverParam: string | number;
1685
- notNull: true;
1686
- hasDefault: true;
1687
- isPrimaryKey: false;
1688
- isAutoincrement: false;
1689
- hasRuntimeDefault: false;
1690
- enumValues: undefined;
1691
- baseColumn: never;
1692
- identity: undefined;
1693
- generated: undefined;
1694
- }, {}, {}>;
1695
- currentXp: drizzle_orm_pg_core.PgColumn<{
1696
- name: "current_xp";
1697
- tableName: "user_levels";
1698
- dataType: "number";
1699
- columnType: "PgDoublePrecision";
1700
- data: number;
1701
- driverParam: string | number;
1702
- notNull: true;
1703
- hasDefault: true;
1704
- isPrimaryKey: false;
1705
- isAutoincrement: false;
1706
- hasRuntimeDefault: false;
1707
- enumValues: undefined;
1708
- baseColumn: never;
1709
- identity: undefined;
1710
- generated: undefined;
1711
- }, {}, {}>;
1712
- totalXP: drizzle_orm_pg_core.PgColumn<{
1713
- name: "total_xp";
1714
- tableName: "user_levels";
1715
- dataType: "number";
1716
- columnType: "PgDoublePrecision";
1717
- data: number;
1718
- driverParam: string | number;
1719
- notNull: true;
1720
- hasDefault: true;
1721
- isPrimaryKey: false;
1722
- isAutoincrement: false;
1723
- hasRuntimeDefault: false;
1724
- enumValues: undefined;
1725
- baseColumn: never;
1726
- identity: undefined;
1727
- generated: undefined;
1728
- }, {}, {}>;
1729
- lastLevelUpAt: drizzle_orm_pg_core.PgColumn<{
1730
- name: "last_level_up_at";
1731
- tableName: "user_levels";
1732
- dataType: "date";
1733
- columnType: "PgTimestamp";
1734
- data: Date;
1735
- driverParam: string;
1736
- notNull: false;
1737
- hasDefault: false;
1738
- isPrimaryKey: false;
1739
- isAutoincrement: false;
1740
- hasRuntimeDefault: false;
1741
- enumValues: undefined;
1742
- baseColumn: never;
1743
- identity: undefined;
1744
- generated: undefined;
1745
- }, {}, {}>;
1746
- createdAt: drizzle_orm_pg_core.PgColumn<{
1747
- name: "created_at";
1748
- tableName: "user_levels";
1749
- dataType: "date";
1750
- columnType: "PgTimestamp";
1751
- data: Date;
1752
- driverParam: string;
1753
- notNull: true;
1754
- hasDefault: true;
1755
- isPrimaryKey: false;
1756
- isAutoincrement: false;
1757
- hasRuntimeDefault: false;
1758
- enumValues: undefined;
1759
- baseColumn: never;
1760
- identity: undefined;
1761
- generated: undefined;
1762
- }, {}, {}>;
1763
- updatedAt: drizzle_orm_pg_core.PgColumn<{
1764
- name: "updated_at";
1765
- tableName: "user_levels";
1766
- dataType: "date";
1767
- columnType: "PgTimestamp";
1768
- data: Date;
1769
- driverParam: string;
1770
- notNull: false;
1771
- hasDefault: true;
1772
- isPrimaryKey: false;
1773
- isAutoincrement: false;
1774
- hasRuntimeDefault: false;
1775
- enumValues: undefined;
1776
- baseColumn: never;
1777
- identity: undefined;
1778
- generated: undefined;
1779
- }, {}, {}>;
1780
- };
1781
- dialect: "pg";
1782
- }>;
1783
- declare const levelConfigs: drizzle_orm_pg_core.PgTableWithColumns<{
1784
- name: "level_configs";
1785
- schema: undefined;
1786
- columns: {
1787
- id: drizzle_orm_pg_core.PgColumn<{
1788
- name: "id";
1789
- tableName: "level_configs";
1790
- dataType: "string";
1791
- columnType: "PgUUID";
1792
- data: string;
1793
- driverParam: string;
1794
- notNull: true;
1795
- hasDefault: true;
1796
- isPrimaryKey: true;
1797
- isAutoincrement: false;
1798
- hasRuntimeDefault: false;
1799
- enumValues: undefined;
1800
- baseColumn: never;
1801
- identity: undefined;
1802
- generated: undefined;
1803
- }, {}, {}>;
1804
- level: drizzle_orm_pg_core.PgColumn<{
1805
- name: "level";
1806
- tableName: "level_configs";
1807
- dataType: "number";
1808
- columnType: "PgInteger";
1809
- data: number;
1810
- driverParam: string | number;
1811
- notNull: true;
1812
- hasDefault: false;
1813
- isPrimaryKey: false;
1814
- isAutoincrement: false;
1815
- hasRuntimeDefault: false;
1816
- enumValues: undefined;
1817
- baseColumn: never;
1818
- identity: undefined;
1819
- generated: undefined;
1820
- }, {}, {}>;
1821
- xpRequired: drizzle_orm_pg_core.PgColumn<{
1822
- name: "xp_required";
1823
- tableName: "level_configs";
1824
- dataType: "number";
1825
- columnType: "PgInteger";
1826
- data: number;
1827
- driverParam: string | number;
1828
- notNull: true;
1829
- hasDefault: false;
1830
- isPrimaryKey: false;
1831
- isAutoincrement: false;
1832
- hasRuntimeDefault: false;
1833
- enumValues: undefined;
1834
- baseColumn: never;
1835
- identity: undefined;
1836
- generated: undefined;
1837
- }, {}, {}>;
1838
- creditsReward: drizzle_orm_pg_core.PgColumn<{
1839
- name: "credits_reward";
1840
- tableName: "level_configs";
1841
- dataType: "number";
1842
- columnType: "PgInteger";
1843
- data: number;
1844
- driverParam: string | number;
1845
- notNull: true;
1846
- hasDefault: true;
1847
- isPrimaryKey: false;
1848
- isAutoincrement: false;
1849
- hasRuntimeDefault: false;
1850
- enumValues: undefined;
1851
- baseColumn: never;
1852
- identity: undefined;
1853
- generated: undefined;
1854
- }, {}, {}>;
1855
- createdAt: drizzle_orm_pg_core.PgColumn<{
1856
- name: "created_at";
1857
- tableName: "level_configs";
1858
- dataType: "date";
1859
- columnType: "PgTimestamp";
1860
- data: Date;
1861
- driverParam: string;
1862
- notNull: true;
1863
- hasDefault: true;
1864
- isPrimaryKey: false;
1865
- isAutoincrement: false;
1866
- hasRuntimeDefault: false;
1867
- enumValues: undefined;
1868
- baseColumn: never;
1869
- identity: undefined;
1870
- generated: undefined;
1871
- }, {}, {}>;
1872
- };
1873
- dialect: "pg";
1874
- }>;
1875
- declare const characterComponents: drizzle_orm_pg_core.PgTableWithColumns<{
1876
- name: "character_components";
1877
- schema: undefined;
1878
- columns: {
1879
- id: drizzle_orm_pg_core.PgColumn<{
1880
- name: "id";
1881
- tableName: "character_components";
1882
- dataType: "string";
1883
- columnType: "PgUUID";
1884
- data: string;
1885
- driverParam: string;
1886
- notNull: true;
1887
- hasDefault: true;
1888
- isPrimaryKey: true;
1889
- isAutoincrement: false;
1890
- hasRuntimeDefault: false;
1891
- enumValues: undefined;
1892
- baseColumn: never;
1893
- identity: undefined;
1894
- generated: undefined;
1895
- }, {}, {}>;
1896
- componentType: drizzle_orm_pg_core.PgColumn<{
1897
- name: "component_type";
1898
- tableName: "character_components";
1899
- dataType: "string";
1900
- columnType: "PgEnumColumn";
1901
- data: "accessory" | "body" | "outfit" | "hairstyle" | "eyes";
1902
- driverParam: string;
1903
- notNull: true;
1904
- hasDefault: false;
1905
- isPrimaryKey: false;
1906
- isAutoincrement: false;
1907
- hasRuntimeDefault: false;
1908
- enumValues: ["body", "outfit", "hairstyle", "eyes", "accessory"];
1909
- baseColumn: never;
1910
- identity: undefined;
1911
- generated: undefined;
1912
- }, {}, {}>;
1913
- slug: drizzle_orm_pg_core.PgColumn<{
1914
- name: "slug";
1915
- tableName: "character_components";
1916
- dataType: "string";
1917
- columnType: "PgVarchar";
1918
- data: string;
1919
- driverParam: string;
1920
- notNull: true;
1921
- hasDefault: false;
1922
- isPrimaryKey: false;
1923
- isAutoincrement: false;
1924
- hasRuntimeDefault: false;
1925
- enumValues: [string, ...string[]];
1926
- baseColumn: never;
1927
- identity: undefined;
1928
- generated: undefined;
1929
- }, {}, {
1930
- length: 128;
1931
- }>;
1932
- displayName: drizzle_orm_pg_core.PgColumn<{
1933
- name: "display_name";
1934
- tableName: "character_components";
1935
- dataType: "string";
1936
- columnType: "PgVarchar";
1937
- data: string;
1938
- driverParam: string;
1939
- notNull: true;
1940
- hasDefault: false;
1941
- isPrimaryKey: false;
1942
- isAutoincrement: false;
1943
- hasRuntimeDefault: false;
1944
- enumValues: [string, ...string[]];
1945
- baseColumn: never;
1946
- identity: undefined;
1947
- generated: undefined;
1948
- }, {}, {
1949
- length: 128;
1950
- }>;
1951
- slot: drizzle_orm_pg_core.PgColumn<{
1952
- name: "slot";
1953
- tableName: "character_components";
1954
- dataType: "string";
1955
- columnType: "PgVarchar";
1956
- data: string;
1957
- driverParam: string;
1958
- notNull: true;
1959
- hasDefault: false;
1960
- isPrimaryKey: false;
1961
- isAutoincrement: false;
1962
- hasRuntimeDefault: false;
1963
- enumValues: [string, ...string[]];
1964
- baseColumn: never;
1965
- identity: undefined;
1966
- generated: undefined;
1967
- }, {}, {
1968
- length: 64;
1969
- }>;
1970
- spriteSheetId: drizzle_orm_pg_core.PgColumn<{
1971
- name: "sprite_sheet_id";
1972
- tableName: "character_components";
1973
- dataType: "string";
1974
- columnType: "PgUUID";
1975
- data: string;
1976
- driverParam: string;
1977
- notNull: true;
1978
- hasDefault: false;
1979
- isPrimaryKey: false;
1980
- isAutoincrement: false;
1981
- hasRuntimeDefault: false;
1982
- enumValues: undefined;
1983
- baseColumn: never;
1984
- identity: undefined;
1985
- generated: undefined;
1986
- }, {}, {}>;
1987
- unlockLevel: drizzle_orm_pg_core.PgColumn<{
1988
- name: "unlock_level";
1989
- tableName: "character_components";
1990
- dataType: "number";
1991
- columnType: "PgInteger";
1992
- data: number;
1993
- driverParam: string | number;
1994
- notNull: true;
1995
- hasDefault: true;
1996
- isPrimaryKey: false;
1997
- isAutoincrement: false;
1998
- hasRuntimeDefault: false;
1999
- enumValues: undefined;
2000
- baseColumn: never;
2001
- identity: undefined;
2002
- generated: undefined;
2003
- }, {}, {}>;
2004
- variant: drizzle_orm_pg_core.PgColumn<{
2005
- name: "variant";
2006
- tableName: "character_components";
2007
- dataType: "number";
2008
- columnType: "PgInteger";
2009
- data: number;
2010
- driverParam: string | number;
2011
- notNull: true;
2012
- hasDefault: true;
2013
- isPrimaryKey: false;
2014
- isAutoincrement: false;
2015
- hasRuntimeDefault: false;
2016
- enumValues: undefined;
2017
- baseColumn: never;
2018
- identity: undefined;
2019
- generated: undefined;
2020
- }, {}, {}>;
2021
- createdAt: drizzle_orm_pg_core.PgColumn<{
2022
- name: "created_at";
2023
- tableName: "character_components";
2024
- dataType: "date";
2025
- columnType: "PgTimestamp";
2026
- data: Date;
2027
- driverParam: string;
2028
- notNull: true;
2029
- hasDefault: true;
2030
- isPrimaryKey: false;
2031
- isAutoincrement: false;
2032
- hasRuntimeDefault: false;
2033
- enumValues: undefined;
2034
- baseColumn: never;
2035
- identity: undefined;
2036
- generated: undefined;
2037
- }, {}, {}>;
2038
- updatedAt: drizzle_orm_pg_core.PgColumn<{
2039
- name: "updated_at";
2040
- tableName: "character_components";
2041
- dataType: "date";
2042
- columnType: "PgTimestamp";
2043
- data: Date;
2044
- driverParam: string;
2045
- notNull: true;
2046
- hasDefault: true;
2047
- isPrimaryKey: false;
2048
- isAutoincrement: false;
2049
- hasRuntimeDefault: false;
2050
- enumValues: undefined;
2051
- baseColumn: never;
2052
- identity: undefined;
2053
- generated: undefined;
2054
- }, {}, {}>;
2055
- };
2056
- dialect: "pg";
2057
- }>;
2058
- declare const playerCharacters: drizzle_orm_pg_core.PgTableWithColumns<{
2059
- name: "player_characters";
2060
- schema: undefined;
2061
- columns: {
2062
- id: drizzle_orm_pg_core.PgColumn<{
2063
- name: "id";
2064
- tableName: "player_characters";
2065
- dataType: "string";
2066
- columnType: "PgUUID";
2067
- data: string;
2068
- driverParam: string;
2069
- notNull: true;
2070
- hasDefault: true;
2071
- isPrimaryKey: true;
2072
- isAutoincrement: false;
2073
- hasRuntimeDefault: false;
2074
- enumValues: undefined;
2075
- baseColumn: never;
2076
- identity: undefined;
2077
- generated: undefined;
2078
- }, {}, {}>;
2079
- userId: drizzle_orm_pg_core.PgColumn<{
2080
- name: "user_id";
2081
- tableName: "player_characters";
2082
- dataType: "string";
2083
- columnType: "PgText";
2084
- data: string;
2085
- driverParam: string;
2086
- notNull: true;
2087
- hasDefault: false;
2088
- isPrimaryKey: false;
2089
- isAutoincrement: false;
2090
- hasRuntimeDefault: false;
2091
- enumValues: [string, ...string[]];
2092
- baseColumn: never;
2093
- identity: undefined;
2094
- generated: undefined;
2095
- }, {}, {}>;
2096
- bodyComponentId: drizzle_orm_pg_core.PgColumn<{
2097
- name: "body_component_id";
2098
- tableName: "player_characters";
2099
- dataType: "string";
2100
- columnType: "PgUUID";
2101
- data: string;
2102
- driverParam: string;
2103
- notNull: true;
2104
- hasDefault: false;
2105
- isPrimaryKey: false;
2106
- isAutoincrement: false;
2107
- hasRuntimeDefault: false;
2108
- enumValues: undefined;
2109
- baseColumn: never;
2110
- identity: undefined;
2111
- generated: undefined;
2112
- }, {}, {}>;
2113
- eyesComponentId: drizzle_orm_pg_core.PgColumn<{
2114
- name: "eyes_component_id";
2115
- tableName: "player_characters";
2116
- dataType: "string";
2117
- columnType: "PgUUID";
2118
- data: string;
2119
- driverParam: string;
2120
- notNull: true;
2121
- hasDefault: false;
2122
- isPrimaryKey: false;
2123
- isAutoincrement: false;
2124
- hasRuntimeDefault: false;
2125
- enumValues: undefined;
2126
- baseColumn: never;
2127
- identity: undefined;
2128
- generated: undefined;
2129
- }, {}, {}>;
2130
- hairstyleComponentId: drizzle_orm_pg_core.PgColumn<{
2131
- name: "hairstyle_component_id";
2132
- tableName: "player_characters";
2133
- dataType: "string";
2134
- columnType: "PgUUID";
2135
- data: string;
2136
- driverParam: string;
2137
- notNull: true;
2138
- hasDefault: false;
2139
- isPrimaryKey: false;
2140
- isAutoincrement: false;
2141
- hasRuntimeDefault: false;
2142
- enumValues: undefined;
2143
- baseColumn: never;
2144
- identity: undefined;
2145
- generated: undefined;
2146
- }, {}, {}>;
2147
- outfitComponentId: drizzle_orm_pg_core.PgColumn<{
2148
- name: "outfit_component_id";
2149
- tableName: "player_characters";
2150
- dataType: "string";
2151
- columnType: "PgUUID";
2152
- data: string;
2153
- driverParam: string;
2154
- notNull: true;
2155
- hasDefault: false;
2156
- isPrimaryKey: false;
2157
- isAutoincrement: false;
2158
- hasRuntimeDefault: false;
2159
- enumValues: undefined;
2160
- baseColumn: never;
2161
- identity: undefined;
2162
- generated: undefined;
2163
- }, {}, {}>;
2164
- createdAt: drizzle_orm_pg_core.PgColumn<{
2165
- name: "created_at";
2166
- tableName: "player_characters";
2167
- dataType: "date";
2168
- columnType: "PgTimestamp";
2169
- data: Date;
2170
- driverParam: string;
2171
- notNull: true;
2172
- hasDefault: true;
2173
- isPrimaryKey: false;
2174
- isAutoincrement: false;
2175
- hasRuntimeDefault: false;
2176
- enumValues: undefined;
2177
- baseColumn: never;
2178
- identity: undefined;
2179
- generated: undefined;
2180
- }, {}, {}>;
2181
- updatedAt: drizzle_orm_pg_core.PgColumn<{
2182
- name: "updated_at";
2183
- tableName: "player_characters";
2184
- dataType: "date";
2185
- columnType: "PgTimestamp";
2186
- data: Date;
2187
- driverParam: string;
2188
- notNull: true;
2189
- hasDefault: true;
2190
- isPrimaryKey: false;
2191
- isAutoincrement: false;
2192
- hasRuntimeDefault: false;
2193
- enumValues: undefined;
2194
- baseColumn: never;
2195
- identity: undefined;
2196
- generated: undefined;
2197
- }, {}, {}>;
2198
- };
2199
- dialect: "pg";
2200
- }>;
2201
- declare const playerCharacterAccessories: drizzle_orm_pg_core.PgTableWithColumns<{
2202
- name: "player_character_accessories";
2203
- schema: undefined;
2204
- columns: {
2205
- id: drizzle_orm_pg_core.PgColumn<{
2206
- name: "id";
2207
- tableName: "player_character_accessories";
2208
- dataType: "string";
2209
- columnType: "PgUUID";
2210
- data: string;
2211
- driverParam: string;
2212
- notNull: true;
2213
- hasDefault: true;
2214
- isPrimaryKey: true;
2215
- isAutoincrement: false;
2216
- hasRuntimeDefault: false;
2217
- enumValues: undefined;
2218
- baseColumn: never;
2219
- identity: undefined;
2220
- generated: undefined;
2221
- }, {}, {}>;
2222
- playerCharacterId: drizzle_orm_pg_core.PgColumn<{
2223
- name: "player_character_id";
2224
- tableName: "player_character_accessories";
2225
- dataType: "string";
2226
- columnType: "PgUUID";
2227
- data: string;
2228
- driverParam: string;
2229
- notNull: true;
2230
- hasDefault: false;
2231
- isPrimaryKey: false;
2232
- isAutoincrement: false;
2233
- hasRuntimeDefault: false;
2234
- enumValues: undefined;
2235
- baseColumn: never;
2236
- identity: undefined;
2237
- generated: undefined;
2238
- }, {}, {}>;
2239
- accessoryComponentId: drizzle_orm_pg_core.PgColumn<{
2240
- name: "accessory_component_id";
2241
- tableName: "player_character_accessories";
2242
- dataType: "string";
2243
- columnType: "PgUUID";
2244
- data: string;
2245
- driverParam: string;
2246
- notNull: true;
2247
- hasDefault: false;
2248
- isPrimaryKey: false;
2249
- isAutoincrement: false;
2250
- hasRuntimeDefault: false;
2251
- enumValues: undefined;
2252
- baseColumn: never;
2253
- identity: undefined;
2254
- generated: undefined;
2255
- }, {}, {}>;
2256
- slot: drizzle_orm_pg_core.PgColumn<{
2257
- name: "slot";
2258
- tableName: "player_character_accessories";
2259
- dataType: "string";
2260
- columnType: "PgVarchar";
2261
- data: string;
2262
- driverParam: string;
2263
- notNull: true;
2264
- hasDefault: false;
2265
- isPrimaryKey: false;
2266
- isAutoincrement: false;
2267
- hasRuntimeDefault: false;
2268
- enumValues: [string, ...string[]];
2269
- baseColumn: never;
2270
- identity: undefined;
2271
- generated: undefined;
2272
- }, {}, {
2273
- length: 64;
2274
- }>;
2275
- equippedAt: drizzle_orm_pg_core.PgColumn<{
2276
- name: "equipped_at";
2277
- tableName: "player_character_accessories";
2278
- dataType: "date";
2279
- columnType: "PgTimestamp";
2280
- data: Date;
2281
- driverParam: string;
2282
- notNull: true;
2283
- hasDefault: true;
2284
- isPrimaryKey: false;
2285
- isAutoincrement: false;
2286
- hasRuntimeDefault: false;
2287
- enumValues: undefined;
2288
- baseColumn: never;
2289
- identity: undefined;
2290
- generated: undefined;
2291
- }, {}, {}>;
2292
- updatedAt: drizzle_orm_pg_core.PgColumn<{
2293
- name: "updated_at";
2294
- tableName: "player_character_accessories";
2295
- dataType: "date";
2296
- columnType: "PgTimestamp";
2297
- data: Date;
2298
- driverParam: string;
2299
- notNull: true;
2300
- hasDefault: true;
2301
- isPrimaryKey: false;
2302
- isAutoincrement: false;
2303
- hasRuntimeDefault: false;
2304
- enumValues: undefined;
2305
- baseColumn: never;
2306
- identity: undefined;
2307
- generated: undefined;
2308
- }, {}, {}>;
2309
- };
2310
- dialect: "pg";
2311
- }>;
2312
- declare const gameTimebackIntegrations: drizzle_orm_pg_core.PgTableWithColumns<{
2313
- name: "game_timeback_integrations";
2314
- schema: undefined;
2315
- columns: {
2316
- id: drizzle_orm_pg_core.PgColumn<{
2317
- name: "id";
2318
- tableName: "game_timeback_integrations";
2319
- dataType: "string";
2320
- columnType: "PgUUID";
2321
- data: string;
2322
- driverParam: string;
2323
- notNull: true;
2324
- hasDefault: true;
2325
- isPrimaryKey: true;
2326
- isAutoincrement: false;
2327
- hasRuntimeDefault: false;
2328
- enumValues: undefined;
2329
- baseColumn: never;
2330
- identity: undefined;
2331
- generated: undefined;
2332
- }, {}, {}>;
2333
- gameId: drizzle_orm_pg_core.PgColumn<{
2334
- name: "game_id";
2335
- tableName: "game_timeback_integrations";
2336
- dataType: "string";
2337
- columnType: "PgUUID";
2338
- data: string;
2339
- driverParam: string;
2340
- notNull: true;
2341
- hasDefault: false;
2342
- isPrimaryKey: false;
2343
- isAutoincrement: false;
2344
- hasRuntimeDefault: false;
2345
- enumValues: undefined;
2346
- baseColumn: never;
2347
- identity: undefined;
2348
- generated: undefined;
2349
- }, {}, {}>;
2350
- courseId: drizzle_orm_pg_core.PgColumn<{
2351
- name: "course_id";
2352
- tableName: "game_timeback_integrations";
2353
- dataType: "string";
2354
- columnType: "PgText";
2355
- data: string;
2356
- driverParam: string;
2357
- notNull: true;
2358
- hasDefault: false;
2359
- isPrimaryKey: false;
2360
- isAutoincrement: false;
2361
- hasRuntimeDefault: false;
2362
- enumValues: [string, ...string[]];
2363
- baseColumn: never;
2364
- identity: undefined;
2365
- generated: undefined;
2366
- }, {}, {}>;
2367
- lastVerifiedAt: drizzle_orm_pg_core.PgColumn<{
2368
- name: "last_verified_at";
2369
- tableName: "game_timeback_integrations";
2370
- dataType: "date";
2371
- columnType: "PgTimestamp";
2372
- data: Date;
2373
- driverParam: string;
2374
- notNull: false;
2375
- hasDefault: false;
2376
- isPrimaryKey: false;
2377
- isAutoincrement: false;
2378
- hasRuntimeDefault: false;
2379
- enumValues: undefined;
2380
- baseColumn: never;
2381
- identity: undefined;
2382
- generated: undefined;
2383
- }, {}, {}>;
2384
- createdAt: drizzle_orm_pg_core.PgColumn<{
2385
- name: "created_at";
2386
- tableName: "game_timeback_integrations";
2387
- dataType: "date";
2388
- columnType: "PgTimestamp";
2389
- data: Date;
2390
- driverParam: string;
2391
- notNull: true;
2392
- hasDefault: true;
2393
- isPrimaryKey: false;
2394
- isAutoincrement: false;
2395
- hasRuntimeDefault: false;
2396
- enumValues: undefined;
2397
- baseColumn: never;
2398
- identity: undefined;
2399
- generated: undefined;
2400
- }, {}, {}>;
2401
- updatedAt: drizzle_orm_pg_core.PgColumn<{
2402
- name: "updated_at";
2403
- tableName: "game_timeback_integrations";
2404
- dataType: "date";
2405
- columnType: "PgTimestamp";
2406
- data: Date;
2407
- driverParam: string;
2408
- notNull: true;
2409
- hasDefault: true;
2410
- isPrimaryKey: false;
2411
- isAutoincrement: false;
2412
- hasRuntimeDefault: false;
2413
- enumValues: undefined;
2414
- baseColumn: never;
2415
- identity: undefined;
2416
- generated: undefined;
2417
- }, {}, {}>;
2418
- };
2419
- dialect: "pg";
2420
- }>;
2421
-
2422
- declare const achievementScopeEnum: drizzle_orm_pg_core.PgEnum<["daily", "weekly", "monthly", "yearly", "game", "global", "map", "level", "event"]>;
2423
- declare const notifications: drizzle_orm_pg_core.PgTableWithColumns<{
2424
- name: "notifications";
2425
- schema: undefined;
2426
- columns: {
2427
- id: drizzle_orm_pg_core.PgColumn<{
2428
- name: "id";
2429
- tableName: "notifications";
2430
- dataType: "string";
2431
- columnType: "PgUUID";
2432
- data: string;
2433
- driverParam: string;
2434
- notNull: true;
2435
- hasDefault: true;
2436
- isPrimaryKey: true;
2437
- isAutoincrement: false;
2438
- hasRuntimeDefault: false;
2439
- enumValues: undefined;
2440
- baseColumn: never;
2441
- identity: undefined;
2442
- generated: undefined;
2443
- }, {}, {}>;
2444
- userId: drizzle_orm_pg_core.PgColumn<{
2445
- name: "user_id";
2446
- tableName: "notifications";
2447
- dataType: "string";
2448
- columnType: "PgText";
2449
- data: string;
2450
- driverParam: string;
2451
- notNull: true;
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
- type: drizzle_orm_pg_core.PgColumn<{
2462
- name: "type";
2463
- tableName: "notifications";
2464
- dataType: "string";
2465
- columnType: "PgVarchar";
2466
- data: string;
2467
- driverParam: string;
2468
- notNull: true;
2469
- hasDefault: false;
2470
- isPrimaryKey: false;
2471
- isAutoincrement: false;
2472
- hasRuntimeDefault: false;
2473
- enumValues: [string, ...string[]];
2474
- baseColumn: never;
2475
- identity: undefined;
2476
- generated: undefined;
2477
- }, {}, {
2478
- length: 50;
2479
- }>;
2480
- title: drizzle_orm_pg_core.PgColumn<{
2481
- name: "title";
2482
- tableName: "notifications";
2483
- dataType: "string";
2484
- columnType: "PgVarchar";
2485
- data: string;
2486
- driverParam: string;
2487
- notNull: true;
2488
- hasDefault: false;
2489
- isPrimaryKey: false;
2490
- isAutoincrement: false;
2491
- hasRuntimeDefault: false;
2492
- enumValues: [string, ...string[]];
2493
- baseColumn: never;
2494
- identity: undefined;
2495
- generated: undefined;
2496
- }, {}, {
2497
- length: 255;
2498
- }>;
2499
- message: drizzle_orm_pg_core.PgColumn<{
2500
- name: "message";
2501
- tableName: "notifications";
2502
- dataType: "string";
2503
- columnType: "PgText";
2504
- data: string;
2505
- driverParam: string;
2506
- notNull: true;
2507
- hasDefault: false;
2508
- isPrimaryKey: false;
2509
- isAutoincrement: false;
2510
- hasRuntimeDefault: false;
2511
- enumValues: [string, ...string[]];
2512
- baseColumn: never;
2513
- identity: undefined;
2514
- generated: undefined;
2515
- }, {}, {}>;
2516
- data: drizzle_orm_pg_core.PgColumn<{
2517
- name: "data";
2518
- tableName: "notifications";
2519
- dataType: "json";
2520
- columnType: "PgJsonb";
2521
- data: unknown;
2522
- driverParam: unknown;
2523
- notNull: true;
2524
- hasDefault: true;
2525
- isPrimaryKey: false;
2526
- isAutoincrement: false;
2527
- hasRuntimeDefault: false;
2528
- enumValues: undefined;
2529
- baseColumn: never;
2530
- identity: undefined;
2531
- generated: undefined;
2532
- }, {}, {}>;
2533
- priority: drizzle_orm_pg_core.PgColumn<{
2534
- name: "priority";
2535
- tableName: "notifications";
2536
- dataType: "string";
2537
- columnType: "PgEnumColumn";
2538
- data: "low" | "normal" | "high" | "urgent";
2539
- driverParam: string;
2540
- notNull: true;
2541
- hasDefault: true;
2542
- isPrimaryKey: false;
2543
- isAutoincrement: false;
2544
- hasRuntimeDefault: false;
2545
- enumValues: ["low", "normal", "high", "urgent"];
2546
- baseColumn: never;
2547
- identity: undefined;
2548
- generated: undefined;
2549
- }, {}, {}>;
2550
- status: drizzle_orm_pg_core.PgColumn<{
2551
- name: "status";
2552
- tableName: "notifications";
2553
- dataType: "string";
2554
- columnType: "PgEnumColumn";
2555
- data: "pending" | "delivered" | "seen" | "clicked" | "dismissed" | "expired";
2556
- driverParam: string;
2557
- notNull: true;
2558
- hasDefault: true;
2559
- isPrimaryKey: false;
2560
- isAutoincrement: false;
2561
- hasRuntimeDefault: false;
2562
- enumValues: ["pending", "delivered", "seen", "clicked", "dismissed", "expired"];
2563
- baseColumn: never;
2564
- identity: undefined;
2565
- generated: undefined;
2566
- }, {}, {}>;
2567
- createdAt: drizzle_orm_pg_core.PgColumn<{
2568
- name: "created_at";
2569
- tableName: "notifications";
2570
- dataType: "date";
2571
- columnType: "PgTimestamp";
2572
- data: Date;
2573
- driverParam: string;
2574
- notNull: true;
2575
- hasDefault: true;
2576
- isPrimaryKey: false;
2577
- isAutoincrement: false;
2578
- hasRuntimeDefault: false;
2579
- enumValues: undefined;
2580
- baseColumn: never;
2581
- identity: undefined;
2582
- generated: undefined;
2583
- }, {}, {}>;
2584
- deliveredAt: drizzle_orm_pg_core.PgColumn<{
2585
- name: "delivered_at";
2586
- tableName: "notifications";
2587
- dataType: "date";
2588
- columnType: "PgTimestamp";
2589
- data: Date;
2590
- driverParam: string;
2591
- notNull: false;
2592
- hasDefault: false;
2593
- isPrimaryKey: false;
2594
- isAutoincrement: false;
2595
- hasRuntimeDefault: false;
2596
- enumValues: undefined;
2597
- baseColumn: never;
2598
- identity: undefined;
2599
- generated: undefined;
2600
- }, {}, {}>;
2601
- seenAt: drizzle_orm_pg_core.PgColumn<{
2602
- name: "seen_at";
2603
- tableName: "notifications";
2604
- dataType: "date";
2605
- columnType: "PgTimestamp";
2606
- data: Date;
2607
- driverParam: string;
2608
- notNull: false;
2609
- hasDefault: false;
2610
- isPrimaryKey: false;
2611
- isAutoincrement: false;
2612
- hasRuntimeDefault: false;
2613
- enumValues: undefined;
2614
- baseColumn: never;
2615
- identity: undefined;
2616
- generated: undefined;
2617
- }, {}, {}>;
2618
- clickedAt: drizzle_orm_pg_core.PgColumn<{
2619
- name: "clicked_at";
2620
- tableName: "notifications";
2621
- dataType: "date";
2622
- columnType: "PgTimestamp";
2623
- data: Date;
2624
- driverParam: string;
2625
- notNull: false;
2626
- hasDefault: false;
2627
- isPrimaryKey: false;
2628
- isAutoincrement: false;
2629
- hasRuntimeDefault: false;
2630
- enumValues: undefined;
2631
- baseColumn: never;
2632
- identity: undefined;
2633
- generated: undefined;
2634
- }, {}, {}>;
2635
- expiresAt: drizzle_orm_pg_core.PgColumn<{
2636
- name: "expires_at";
2637
- tableName: "notifications";
2638
- dataType: "date";
2639
- columnType: "PgTimestamp";
2640
- data: Date;
2641
- driverParam: string;
2642
- notNull: false;
2643
- hasDefault: false;
2644
- isPrimaryKey: false;
2645
- isAutoincrement: false;
2646
- hasRuntimeDefault: false;
2647
- enumValues: undefined;
2648
- baseColumn: never;
2649
- identity: undefined;
2650
- generated: undefined;
2651
- }, {}, {}>;
2652
- method: drizzle_orm_pg_core.PgColumn<{
2653
- name: "method";
2654
- tableName: "notifications";
2655
- dataType: "string";
2656
- columnType: "PgVarchar";
2657
- data: string;
2658
- driverParam: string;
2659
- notNull: false;
2660
- hasDefault: false;
2661
- isPrimaryKey: false;
2662
- isAutoincrement: false;
2663
- hasRuntimeDefault: false;
2664
- enumValues: [string, ...string[]];
2665
- baseColumn: never;
2666
- identity: undefined;
2667
- generated: undefined;
2668
- }, {}, {
2669
- length: 50;
2670
- }>;
2671
- clickUrl: drizzle_orm_pg_core.PgColumn<{
2672
- name: "click_url";
2673
- tableName: "notifications";
2674
- dataType: "string";
2675
- columnType: "PgText";
2676
- data: string;
2677
- driverParam: string;
2678
- notNull: false;
2679
- hasDefault: false;
2680
- isPrimaryKey: false;
2681
- isAutoincrement: false;
2682
- hasRuntimeDefault: false;
2683
- enumValues: [string, ...string[]];
2684
- baseColumn: never;
2685
- identity: undefined;
2686
- generated: undefined;
2687
- }, {}, {}>;
2688
- metadata: drizzle_orm_pg_core.PgColumn<{
2689
- name: "metadata";
2690
- tableName: "notifications";
2691
- dataType: "json";
2692
- columnType: "PgJsonb";
2693
- data: unknown;
2694
- driverParam: unknown;
2695
- notNull: true;
2696
- hasDefault: true;
2697
- isPrimaryKey: false;
2698
- isAutoincrement: false;
2699
- hasRuntimeDefault: false;
2700
- enumValues: undefined;
2701
- baseColumn: never;
2702
- identity: undefined;
2703
- generated: undefined;
2704
- }, {}, {}>;
2705
- };
2706
- dialect: "pg";
2707
- }>;
2708
- declare const DeveloperStatusResponseSchema: z.ZodObject<{
2709
- status: z.ZodEnum<["none", "pending", "approved"]>;
2710
- }, "strip", z.ZodTypeAny, {
2711
- status: "none" | "pending" | "approved";
2712
- }, {
2713
- status: "none" | "pending" | "approved";
2714
- }>;
2715
- declare const UpsertGameMetadataSchema: z.ZodEffects<z.ZodObject<{
2716
- displayName: z.ZodString;
2717
- mapElementId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
2718
- platform: z.ZodEnum<["web", "godot", "unity"]>;
2719
- metadata: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
2720
- gameType: z.ZodDefault<z.ZodOptional<z.ZodEnum<["hosted", "external"]>>>;
2721
- externalUrl: z.ZodOptional<z.ZodString>;
2722
- }, "strip", z.ZodTypeAny, {
2723
- displayName: string;
2724
- gameType: "hosted" | "external";
2725
- platform: "web" | "godot" | "unity";
2726
- metadata: Record<string, unknown>;
2727
- externalUrl?: string | undefined;
2728
- mapElementId?: string | null | undefined;
2729
- }, {
2730
- displayName: string;
2731
- platform: "web" | "godot" | "unity";
2732
- gameType?: "hosted" | "external" | undefined;
2733
- externalUrl?: string | undefined;
2734
- mapElementId?: string | null | undefined;
2735
- metadata?: Record<string, unknown> | undefined;
2736
- }>, {
2737
- displayName: string;
2738
- gameType: "hosted" | "external";
2739
- platform: "web" | "godot" | "unity";
2740
- metadata: Record<string, unknown>;
2741
- externalUrl?: string | undefined;
2742
- mapElementId?: string | null | undefined;
2743
- }, {
2744
- displayName: string;
2745
- platform: "web" | "godot" | "unity";
2746
- gameType?: "hosted" | "external" | undefined;
2747
- externalUrl?: string | undefined;
2748
- mapElementId?: string | null | undefined;
2749
- metadata?: Record<string, unknown> | undefined;
2750
- }>;
2751
- /**
2752
- * Simplified game manifest for Cloudflare Workers deployments
2753
- *
2754
- * The manifest is auto-generated by build tools (Godot plugin, Vite plugin, etc.)
2755
- * and provides minimal metadata about the build.
2756
- *
2757
- * Fields:
2758
- * - version: Manifest schema version (for future migrations)
2759
- * - platform: Auto-detected by build tool (e.g., 'web', 'godot@4.3', 'unity@2023')
2760
- * - createdAt: Build timestamp (ISO 8601)
2761
- *
2762
- * Note: With unified Cloudflare Workers deployments, the worker handles all routing
2763
- * internally, so we no longer need bootMode, entryPoint, or styles fields.
2764
- */
2765
- declare const ManifestV1Schema: z.ZodObject<{
2766
- version: z.ZodString;
2767
- platform: z.ZodString;
2768
- createdAt: z.ZodString;
2769
- }, "strip", z.ZodTypeAny, {
2770
- createdAt: string;
2771
- version: string;
2772
- platform: string;
2773
- }, {
2774
- createdAt: string;
2775
- version: string;
2776
- platform: string;
2777
- }>;
2778
- declare const InsertItemSchema: drizzle_zod.BuildSchema<"insert", {
2779
- id: drizzle_orm_pg_core.PgColumn<{
2780
- name: "id";
2781
- tableName: "items";
2782
- dataType: "string";
2783
- columnType: "PgUUID";
2784
- data: string;
2785
- driverParam: string;
2786
- notNull: true;
2787
- hasDefault: true;
2788
- isPrimaryKey: true;
2789
- isAutoincrement: false;
2790
- hasRuntimeDefault: false;
2791
- enumValues: undefined;
2792
- baseColumn: never;
2793
- identity: undefined;
2794
- generated: undefined;
2795
- }, {}, {}>;
2796
- slug: drizzle_orm_pg_core.PgColumn<{
2797
- name: "slug";
2798
- tableName: "items";
2799
- dataType: "string";
2800
- columnType: "PgText";
2801
- data: string;
2802
- driverParam: string;
2803
- notNull: true;
2804
- hasDefault: false;
2805
- isPrimaryKey: false;
2806
- isAutoincrement: false;
2807
- hasRuntimeDefault: false;
2808
- enumValues: [string, ...string[]];
2809
- baseColumn: never;
2810
- identity: undefined;
2811
- generated: undefined;
2812
- }, {}, {}>;
2813
- gameId: drizzle_orm_pg_core.PgColumn<{
2814
- name: "game_id";
2815
- tableName: "items";
2816
- dataType: "string";
2817
- columnType: "PgUUID";
2818
- data: string;
2819
- driverParam: string;
2820
- notNull: false;
2821
- hasDefault: false;
2822
- isPrimaryKey: false;
2823
- isAutoincrement: false;
2824
- hasRuntimeDefault: false;
2825
- enumValues: undefined;
2826
- baseColumn: never;
2827
- identity: undefined;
2828
- generated: undefined;
2829
- }, {}, {}>;
2830
- displayName: drizzle_orm_pg_core.PgColumn<{
2831
- name: "display_name";
2832
- tableName: "items";
2833
- dataType: "string";
2834
- columnType: "PgText";
2835
- data: string;
2836
- driverParam: string;
2837
- notNull: true;
2838
- hasDefault: false;
2839
- isPrimaryKey: false;
2840
- isAutoincrement: false;
2841
- hasRuntimeDefault: false;
2842
- enumValues: [string, ...string[]];
2843
- baseColumn: never;
2844
- identity: undefined;
2845
- generated: undefined;
2846
- }, {}, {}>;
2847
- description: drizzle_orm_pg_core.PgColumn<{
2848
- name: "description";
2849
- tableName: "items";
2850
- dataType: "string";
2851
- columnType: "PgText";
2852
- data: string;
2853
- driverParam: string;
2854
- notNull: false;
2855
- hasDefault: false;
2856
- isPrimaryKey: false;
2857
- isAutoincrement: false;
2858
- hasRuntimeDefault: false;
2859
- enumValues: [string, ...string[]];
2860
- baseColumn: never;
2861
- identity: undefined;
2862
- generated: undefined;
2863
- }, {}, {}>;
2864
- type: drizzle_orm_pg_core.PgColumn<{
2865
- name: "type";
2866
- tableName: "items";
2867
- dataType: "string";
2868
- columnType: "PgEnumColumn";
2869
- data: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other";
2870
- driverParam: string;
2871
- notNull: true;
2872
- hasDefault: true;
2873
- isPrimaryKey: false;
2874
- isAutoincrement: false;
2875
- hasRuntimeDefault: false;
2876
- enumValues: ["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"];
2877
- baseColumn: never;
2878
- identity: undefined;
2879
- generated: undefined;
2880
- }, {}, {}>;
2881
- isPlaceable: drizzle_orm_pg_core.PgColumn<{
2882
- name: "is_placeable";
2883
- tableName: "items";
2884
- dataType: "boolean";
2885
- columnType: "PgBoolean";
2886
- data: boolean;
2887
- driverParam: boolean;
2888
- notNull: true;
2889
- hasDefault: true;
2890
- isPrimaryKey: false;
2891
- isAutoincrement: false;
2892
- hasRuntimeDefault: false;
2893
- enumValues: undefined;
2894
- baseColumn: never;
2895
- identity: undefined;
2896
- generated: undefined;
2897
- }, {}, {}>;
2898
- imageUrl: drizzle_orm_pg_core.PgColumn<{
2899
- name: "image_url";
2900
- tableName: "items";
2901
- dataType: "string";
2902
- columnType: "PgText";
2903
- data: string;
2904
- driverParam: string;
2905
- notNull: false;
2906
- hasDefault: false;
2907
- isPrimaryKey: false;
2908
- isAutoincrement: false;
2909
- hasRuntimeDefault: false;
2910
- enumValues: [string, ...string[]];
2911
- baseColumn: never;
2912
- identity: undefined;
2913
- generated: undefined;
2914
- }, {}, {}>;
2915
- metadata: drizzle_orm_pg_core.PgColumn<{
2916
- name: "metadata";
2917
- tableName: "items";
2918
- dataType: "json";
2919
- columnType: "PgJsonb";
2920
- data: unknown;
2921
- driverParam: unknown;
2922
- notNull: false;
2923
- hasDefault: true;
2924
- isPrimaryKey: false;
2925
- isAutoincrement: false;
2926
- hasRuntimeDefault: false;
2927
- enumValues: undefined;
2928
- baseColumn: never;
2929
- identity: undefined;
2930
- generated: undefined;
2931
- }, {}, {}>;
2932
- createdAt: drizzle_orm_pg_core.PgColumn<{
2933
- name: "created_at";
2934
- tableName: "items";
2935
- dataType: "date";
2936
- columnType: "PgTimestamp";
2937
- data: Date;
2938
- driverParam: string;
2939
- notNull: true;
2940
- hasDefault: true;
2941
- isPrimaryKey: false;
2942
- isAutoincrement: false;
2943
- hasRuntimeDefault: false;
2944
- enumValues: undefined;
2945
- baseColumn: never;
2946
- identity: undefined;
2947
- generated: undefined;
2948
- }, {}, {}>;
2949
- }, {
2950
- imageUrl: z.ZodNullable<z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>>;
2951
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2952
- }>;
2953
- declare const UpdateItemSchema: z.ZodObject<Omit<{
2954
- id: z.ZodOptional<z.ZodString>;
2955
- slug: z.ZodOptional<z.ZodString>;
2956
- gameId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2957
- displayName: z.ZodOptional<z.ZodString>;
2958
- description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2959
- type: z.ZodOptional<z.ZodEnum<["currency", "badge", "trophy", "collectible", "consumable", "unlock", "upgrade", "accessory", "other"]>>;
2960
- isPlaceable: z.ZodOptional<z.ZodBoolean>;
2961
- imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2962
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2963
- createdAt: z.ZodOptional<z.ZodDate>;
2964
- }, "id" | "createdAt">, "strip", z.ZodTypeAny, {
2965
- slug?: string | undefined;
2966
- description?: string | null | undefined;
2967
- displayName?: string | undefined;
2968
- metadata?: Record<string, unknown> | undefined;
2969
- gameId?: string | null | undefined;
2970
- type?: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other" | undefined;
2971
- isPlaceable?: boolean | undefined;
2972
- imageUrl?: string | null | undefined;
2973
- }, {
2974
- slug?: string | undefined;
2975
- description?: string | null | undefined;
2976
- displayName?: string | undefined;
2977
- metadata?: Record<string, unknown> | undefined;
2978
- gameId?: string | null | undefined;
2979
- type?: "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "accessory" | "other" | undefined;
2980
- isPlaceable?: boolean | undefined;
2981
- imageUrl?: string | null | undefined;
2982
- }>;
2983
- declare const InsertCurrencySchema: z.ZodObject<Omit<{
2984
- id: z.ZodOptional<z.ZodString>;
2985
- itemId: z.ZodString;
2986
- symbol: z.ZodOptional<z.ZodNullable<z.ZodString>>;
2987
- isPrimary: z.ZodDefault<z.ZodBoolean>;
2988
- createdAt: z.ZodOptional<z.ZodDate>;
2989
- updatedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
2990
- }, "id" | "createdAt" | "updatedAt">, "strip", z.ZodTypeAny, {
2991
- itemId: string;
2992
- isPrimary: boolean;
2993
- symbol?: string | null | undefined;
2994
- }, {
2995
- itemId: string;
2996
- symbol?: string | null | undefined;
2997
- isPrimary?: boolean | undefined;
2998
- }>;
2999
- declare const UpdateCurrencySchema: z.ZodObject<{
3000
- symbol: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
3001
- itemId: z.ZodOptional<z.ZodString>;
3002
- isPrimary: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
3003
- }, "strip", z.ZodTypeAny, {
3004
- symbol?: string | null | undefined;
3005
- itemId?: string | undefined;
3006
- isPrimary?: boolean | undefined;
3007
- }, {
3008
- symbol?: string | null | undefined;
3009
- itemId?: string | undefined;
3010
- isPrimary?: boolean | undefined;
3011
- }>;
3012
- declare const InsertShopListingSchema: z.ZodObject<Omit<{
3013
- id: z.ZodOptional<z.ZodString>;
3014
- itemId: z.ZodString;
3015
- currencyId: z.ZodString;
3016
- price: z.ZodNumber;
3017
- sellBackPercentage: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
3018
- stock: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
3019
- isActive: z.ZodDefault<z.ZodBoolean>;
3020
- availableFrom: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
3021
- availableUntil: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
3022
- createdAt: z.ZodOptional<z.ZodDate>;
3023
- updatedAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
3024
- }, "id" | "createdAt" | "updatedAt">, "strip", z.ZodTypeAny, {
3025
- isActive: boolean;
3026
- itemId: string;
3027
- currencyId: string;
3028
- price: number;
3029
- sellBackPercentage?: number | null | undefined;
3030
- stock?: number | null | undefined;
3031
- availableFrom?: Date | null | undefined;
3032
- availableUntil?: Date | null | undefined;
3033
- }, {
3034
- itemId: string;
3035
- currencyId: string;
3036
- price: number;
3037
- isActive?: boolean | undefined;
3038
- sellBackPercentage?: number | null | undefined;
3039
- stock?: number | null | undefined;
3040
- availableFrom?: Date | null | undefined;
3041
- availableUntil?: Date | null | undefined;
3042
- }>;
3043
- declare const UpdateShopListingSchema: z.ZodObject<{
3044
- isActive: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
3045
- itemId: z.ZodOptional<z.ZodString>;
3046
- currencyId: z.ZodOptional<z.ZodString>;
3047
- price: z.ZodOptional<z.ZodNumber>;
3048
- sellBackPercentage: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
3049
- stock: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodNumber>>>;
3050
- availableFrom: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodDate>>>;
3051
- availableUntil: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodDate>>>;
3052
- }, "strip", z.ZodTypeAny, {
3053
- isActive?: boolean | undefined;
3054
- itemId?: string | undefined;
3055
- currencyId?: string | undefined;
3056
- price?: number | undefined;
3057
- sellBackPercentage?: number | null | undefined;
3058
- stock?: number | null | undefined;
3059
- availableFrom?: Date | null | undefined;
3060
- availableUntil?: Date | null | undefined;
3061
- }, {
3062
- isActive?: boolean | undefined;
3063
- itemId?: string | undefined;
3064
- currencyId?: string | undefined;
3065
- price?: number | undefined;
3066
- sellBackPercentage?: number | null | undefined;
3067
- stock?: number | null | undefined;
3068
- availableFrom?: Date | null | undefined;
3069
- availableUntil?: Date | null | undefined;
3070
- }>;
3071
-
3072
- declare enum AchievementCompletionType {
3073
- TIME_PLAYED_SESSION = "time_played_session",
3074
- INTERACTION = "interaction",
3075
- LEADERBOARD_RANK = "leaderboard_rank",
3076
- FIRST_SCORE = "first_score",
3077
- PERSONAL_BEST = "personal_best"
3078
- }
3079
- type AchievementScopeType = (typeof achievementScopeEnum.enumValues)[number];
3080
- /**
3081
- * Current-scope achievement with computed status and window metadata
3082
- */
3083
- interface AchievementCurrent {
3084
- id: string;
3085
- title: string;
3086
- description?: string | null;
3087
- scope: AchievementScopeType;
3088
- rewardCredits: number;
3089
- limit: number;
3090
- completionType: AchievementCompletionType;
3091
- completionConfig: Record<string, unknown>;
3092
- target: Record<string, unknown>;
3093
- active: boolean;
3094
- createdAt?: Date;
3095
- updatedAt?: Date;
3096
- status: 'available' | 'completed';
3097
- scopeKey: string;
3098
- windowStart: string;
3099
- windowEnd: string;
3100
- }
3101
- /**
3102
- * Achievement claim history entry
3103
- * Used in GET /api/achievements/history
3104
- */
3105
- interface AchievementHistoryEntry {
3106
- achievementId: string;
3107
- title: string;
3108
- rewardCredits: number;
3109
- createdAt: string;
3110
- scopeKey: string;
3111
- }
3112
- /**
3113
- * Achievement progress submission response
3114
- * Used in POST /api/achievements/progress
3115
- */
3116
- interface AchievementProgressResponse {
3117
- achievementId: string;
3118
- status: 'completed' | 'already_completed';
3119
- rewardCredits: number;
3120
- scopeKey: string;
3121
- createdAt: string;
3122
- }
3123
-
3124
- declare enum NotificationType {
3125
- ACHIEVEMENT = "achievement",
3126
- SYSTEM = "system",
3127
- PROMO = "promo"
3128
- }
3129
- declare enum NotificationStatus {
3130
- PENDING = "pending",
3131
- DELIVERED = "delivered",
3132
- SEEN = "seen",
3133
- CLICKED = "clicked",
3134
- DISMISSED = "dismissed",
3135
- EXPIRED = "expired"
3136
- }
3137
- type Notification = InferSelectModel<typeof notifications>;
3138
- interface NotificationStats {
3139
- total: number;
3140
- delivered: number;
3141
- seen: number;
3142
- clicked: number;
3143
- dismissed: number;
3144
- expired: number;
3145
- clickThroughRate: number;
3146
- }
3147
-
3148
- type CharacterComponent = typeof characterComponents.$inferSelect;
3149
- type PlayerCharacter = typeof playerCharacters.$inferSelect & {
3150
- accessories?: PlayerCharacterAccessory[];
3151
- };
3152
- type PlayerCharacterAccessory = typeof playerCharacterAccessories.$inferSelect;
3153
- type GameRow = typeof games.$inferSelect;
3154
- type BaseGame = Omit<GameRow, 'gameType' | 'deploymentUrl' | 'externalUrl'>;
3155
- type HostedGame = BaseGame & {
3156
- gameType: 'hosted';
3157
- deploymentUrl: string;
3158
- externalUrl: null;
3159
- };
3160
- type ExternalGame = BaseGame & {
3161
- gameType: 'external';
3162
- deploymentUrl: null;
3163
- externalUrl: string;
3164
- };
3165
- type Game = HostedGame | ExternalGame;
3166
- type GameStateData = Record<string, unknown>;
3167
- type GameCustomHostname = typeof gameCustomHostnames.$inferSelect;
3168
- type UpsertGameMetadataInput = z.infer<typeof UpsertGameMetadataSchema>;
3169
739
  type Item = typeof items.$inferSelect;
3170
740
  type InventoryItem = typeof inventoryItems.$inferSelect;
3171
- type ShopListing = typeof shopListings.$inferSelect;
3172
- type InsertItemInput = z.infer<typeof InsertItemSchema>;
3173
- type UpdateItemInput = z.infer<typeof UpdateItemSchema>;
3174
- type InsertCurrencyInput = z.infer<typeof InsertCurrencySchema>;
3175
- type UpdateCurrencyInput = z.infer<typeof UpdateCurrencySchema>;
3176
- type InsertShopListingInput = z.infer<typeof InsertShopListingSchema>;
3177
- type UpdateShopListingInput = z.infer<typeof UpdateShopListingSchema>;
3178
- interface PlaceableItemMetadata {
3179
- tilesWide?: number;
3180
- tilesHigh?: number;
3181
- flippable?: boolean;
3182
- [key: string]: unknown;
3183
- }
3184
- type MapElement = typeof mapElements.$inferSelect;
3185
- type MapObject = typeof mapObjects.$inferSelect;
3186
- interface MapData {
3187
- id: string;
3188
- identifier: string;
3189
- displayName: string;
3190
- description?: string;
3191
- metadata?: Record<string, unknown>;
3192
- }
3193
- interface CreateMapObjectData {
3194
- itemId: string;
3195
- worldX: number;
3196
- worldY: number;
3197
- width?: number;
3198
- height?: number;
3199
- rotation?: number;
3200
- scale?: number;
3201
- metadata?: Record<string, unknown>;
3202
- }
3203
741
 
3204
742
  type User = typeof users.$inferSelect;
3205
- type DeveloperStatusResponse = z.infer<typeof DeveloperStatusResponseSchema>;
3206
- type DeveloperStatusValue = DeveloperStatusResponse['status'];
3207
743
  /**
3208
744
  * User data with authentication provider information.
3209
745
  * Returned by the /users/me endpoint with additional auth context.
@@ -3212,12 +748,6 @@ type AuthenticatedUser = User & {
3212
748
  /** Whether the user authenticated via Timeback SSO */
3213
749
  hasTimebackAccount: boolean;
3214
750
  };
3215
-
3216
- /**
3217
- * Cross-Domain Composite Types
3218
- * Types that combine data from multiple domains
3219
- */
3220
- type ManifestV1 = z.infer<typeof ManifestV1Schema>;
3221
751
  /**
3222
752
  * Basic user information in the shape of the claims from identity providers
3223
753
  */
@@ -3231,503 +761,26 @@ interface UserInfo {
3231
761
  /** Whether the email has been verified */
3232
762
  email_verified: boolean;
3233
763
  /** Optional given name (first name) */
3234
- given_name?: string;
3235
- /** Optional family name (last name) */
3236
- family_name?: string;
3237
- /** TimeBack student ID (if user has TimeBack integration) */
3238
- timeback_id?: string;
3239
- /** Additional user attributes from the identity provider */
3240
- [key: string]: unknown;
3241
- }
3242
- /**
3243
- * Character-related Composite Types
3244
- * Types that combine character component data with sprite sheet information
3245
- */
3246
- type CharacterComponentWithSpriteUrl = CharacterComponent & {
3247
- spriteSheetUrl: string;
3248
- };
3249
- type InventoryItemWithItem = Omit<InventoryItem, 'itemId'> & {
3250
- item: Item;
3251
- };
3252
- /**
3253
- * Game with optional manifest metadata from build tools
3254
- */
3255
- type FetchedGame = (HostedGame | ExternalGame | GameRow) & {
3256
- manifest?: ManifestV1;
3257
- };
3258
- /**
3259
- * Map-related Composite Types
3260
- * Types that combine map, game, and item data for rendering and interaction
3261
- */
3262
- interface MapElementWithGame extends MapElement {
3263
- game: Pick<Game, 'id' | 'displayName'> | null;
3264
- }
3265
- interface MapObjectWithItem extends MapObject {
3266
- item: Pick<Item, 'id' | 'slug' | 'displayName' | 'description' | 'imageUrl' | 'isPlaceable'> & {
3267
- metadata: PlaceableItemMetadata;
3268
- };
3269
- }
3270
- /**
3271
- * Shop-related Composite Types
3272
- * Types that combine inventory, currency, and shop listing data for commerce operations
3273
- */
3274
- interface ShopDisplayItem extends Omit<Item, 'createdAt'> {
3275
- listingId: string;
3276
- shopPrice: number;
3277
- currencyId: string;
3278
- currencySymbol?: string | null;
3279
- currencyDisplayName?: string | null;
3280
- currencyImageUrl?: string | null;
3281
- stock?: number | null;
3282
- sellBackPercentage?: number | null;
3283
- }
3284
- interface ShopCurrency {
3285
- id: string;
3286
- symbol: string | null;
3287
- isPrimary: boolean;
3288
- displayName?: string | null;
3289
- imageUrl?: string | null;
3290
- }
3291
- interface ShopViewResponse {
3292
- shopItems: ShopDisplayItem[];
3293
- currencies: ShopCurrency[];
3294
- }
3295
- /**
3296
- * Leaderboard Composite Types
3297
- * Types that combine leaderboard, user, and game data
3298
- */
3299
- interface GameLeaderboardEntry {
3300
- rank: number;
3301
- userId: string;
3302
- username: string;
3303
- userImage?: string | null;
3304
- score: number;
3305
- achievedAt: Date;
3306
- metadata?: Record<string, unknown>;
3307
- gameId: string;
3308
- gameTitle: string;
3309
- gameSlug: string;
3310
- }
3311
-
3312
- type UserLevel = typeof userLevels.$inferSelect;
3313
- type LevelConfig = typeof levelConfigs.$inferSelect;
3314
- interface LeaderboardOptions {
3315
- timeframe?: 'all_time' | 'monthly' | 'weekly' | 'daily';
3316
- limit?: number;
3317
- offset?: number;
3318
- gameId?: string;
3319
- }
3320
- interface LeaderboardEntry {
3321
- rank: number;
3322
- userId: string;
3323
- username: string;
3324
- userImage?: string | null;
3325
- score: number;
3326
- achievedAt: Date;
3327
- metadata?: Record<string, unknown>;
3328
- gameId?: string;
3329
- gameTitle?: string;
3330
- gameSlug?: string;
3331
- }
3332
- interface UserRankResponse {
3333
- rank: number;
3334
- score: number;
3335
- userId: string;
3336
- }
3337
- interface UserScore$1 {
3338
- id: string;
3339
- score: number;
3340
- achievedAt: Date;
3341
- metadata?: Record<string, unknown>;
3342
- gameId: string;
3343
- gameTitle: string;
3344
- gameSlug: string;
3345
- }
3346
- interface SpriteTemplateData {
3347
- tileSize: number;
3348
- tileHeight: number;
3349
- columns: number;
3350
- rows: number;
3351
- spacing: number;
3352
- animations: {
3353
- base_right: {
3354
- row: number;
3355
- frameStart: number;
3356
- numFrames: number;
3357
- fps: number;
3358
- };
3359
- base_up: {
3360
- row: number;
3361
- frameStart: number;
3362
- numFrames: number;
3363
- fps: number;
3364
- };
3365
- base_left: {
3366
- row: number;
3367
- frameStart: number;
3368
- numFrames: number;
3369
- fps: number;
3370
- };
3371
- base_down: {
3372
- row: number;
3373
- frameStart: number;
3374
- numFrames: number;
3375
- fps: number;
3376
- };
3377
- idle_right: {
3378
- row: number;
3379
- frameStart: number;
3380
- numFrames: number;
3381
- fps: number;
3382
- };
3383
- walk_right: {
3384
- row: number;
3385
- frameStart: number;
3386
- numFrames: number;
3387
- fps: number;
3388
- };
3389
- idle_up: {
3390
- row: number;
3391
- frameStart: number;
3392
- numFrames: number;
3393
- fps: number;
3394
- };
3395
- walk_up: {
3396
- row: number;
3397
- frameStart: number;
3398
- numFrames: number;
3399
- fps: number;
3400
- };
3401
- idle_left: {
3402
- row: number;
3403
- frameStart: number;
3404
- numFrames: number;
3405
- fps: number;
3406
- };
3407
- walk_left: {
3408
- row: number;
3409
- frameStart: number;
3410
- numFrames: number;
3411
- fps: number;
3412
- };
3413
- idle_down: {
3414
- row: number;
3415
- frameStart: number;
3416
- numFrames: number;
3417
- fps: number;
3418
- };
3419
- walk_down: {
3420
- row: number;
3421
- frameStart: number;
3422
- numFrames: number;
3423
- fps: number;
3424
- };
3425
- };
3426
- }
3427
- type GameTimebackIntegration = typeof gameTimebackIntegrations.$inferSelect;
3428
- type TodayXpResponse = {
3429
- xp: number;
3430
- date: string;
3431
- };
3432
- type TotalXpResponse = {
3433
- totalXp: number;
3434
- };
3435
- type XpHistoryResponse = {
3436
- history: Array<{
3437
- date: string;
3438
- xp: number;
3439
- }>;
3440
- };
3441
- type TimebackSetupRequest = {
3442
- gameId: string;
3443
- config: {
3444
- organization: {
3445
- name: string;
3446
- type: string;
3447
- identifier: string;
3448
- };
3449
- course: {
3450
- title: string;
3451
- subjects: string[];
3452
- grades: number[];
3453
- courseCode: string;
3454
- level: string;
3455
- gradingScheme: string;
3456
- metadata?: Record<string, unknown>;
3457
- };
3458
- component: {
3459
- title: string;
3460
- sortOrder: number;
3461
- prerequisites: string[];
3462
- prerequisiteCriteria: string;
3463
- };
3464
- resource: {
3465
- title: string;
3466
- vendorResourceId: string;
3467
- vendorId: string;
3468
- applicationId: string;
3469
- roles: string[];
3470
- importance: string;
3471
- metadata: {
3472
- type?: string;
3473
- launchUrl?: string;
3474
- toolProvider?: string;
3475
- instructionalMethod?: string;
3476
- subject?: string;
3477
- grades?: number[];
3478
- language?: string;
3479
- xp?: number;
3480
- [key: string]: unknown;
3481
- };
3482
- };
3483
- componentResource: {
3484
- title: string;
3485
- sortOrder: number;
3486
- lessonType: string | null;
3487
- };
3488
- };
3489
- verbose?: boolean;
3490
- };
3491
- type TimebackSetupResponse = {
3492
- integration: GameTimebackIntegration;
3493
- courseId: string;
3494
- verbose?: {
3495
- course: unknown;
3496
- component: unknown;
3497
- resource: unknown;
3498
- componentResource: unknown;
3499
- };
3500
- };
3501
- type TimebackVerifyResponse = {
3502
- status: 'success' | 'error';
3503
- integration: GameTimebackIntegration;
3504
- resources: {
3505
- course: {
3506
- found: boolean;
3507
- data?: unknown;
3508
- };
3509
- component: {
3510
- found: boolean;
3511
- data?: unknown;
3512
- };
3513
- resource: {
3514
- found: boolean;
3515
- data?: unknown;
3516
- };
3517
- componentResource: {
3518
- found: boolean;
3519
- data?: unknown;
3520
- };
3521
- };
3522
- errors?: string[];
3523
- };
3524
- type EndActivityResponse = {
3525
- status: 'ok';
3526
- courseId: string;
3527
- xpAwarded: number;
3528
- };
3529
-
3530
- /**
3531
- * OAuth 2.0 implementation for the Playcademy SDK
3532
- */
3533
-
3534
- /**
3535
- * Parses an OAuth state parameter to extract CSRF token and any encoded data.
3536
- *
3537
- * @param state - The OAuth state parameter to parse
3538
- * @returns Object containing CSRF token and optional decoded data
3539
- */
3540
- declare function parseOAuthState(state: string): {
3541
- csrfToken: string;
3542
- data?: Record<string, string>;
3543
- };
3544
-
3545
- /**
3546
- * Response type for the realtime token API
3547
- */
3548
- interface RealtimeTokenResponse {
3549
- token: string;
3550
- }
3551
-
3552
- /**
3553
- * Cache configuration types for runtime customization
3554
- */
3555
- /**
3556
- * Runtime configuration for TTL cache behavior
3557
- */
3558
- interface TTLCacheConfig {
3559
- /** Time-to-live in milliseconds. Set to 0 to disable caching for this call. */
3560
- ttl?: number;
3561
- /** Force refresh, bypassing cache */
3562
- force?: boolean;
3563
- /** Skip cache and fetch fresh data (alias for force) */
3564
- skipCache?: boolean;
3565
- }
3566
- /**
3567
- * Runtime configuration for cooldown cache behavior
3568
- */
3569
- interface CooldownCacheConfig {
3570
- /** Cooldown period in milliseconds. Set to 0 to disable cooldown for this call. */
3571
- cooldown?: number;
3572
- /** Force refresh, bypassing cooldown */
3573
- force?: boolean;
3574
- }
3575
-
3576
- interface CharacterComponentsOptions {
3577
- /**
3578
- * Optional level filter for components
3579
- * When provided, only components available at this level or below are returned
3580
- */
3581
- level?: number;
3582
- /**
3583
- * Whether to bypass the cache and force a fresh API request
3584
- * Default: false (use cache when available)
3585
- */
3586
- skipCache?: boolean;
3587
- }
3588
- interface CreateCharacterData {
3589
- bodyComponentId: string;
3590
- eyesComponentId: string;
3591
- hairstyleComponentId: string;
3592
- outfitComponentId: string;
3593
- }
3594
- interface UpdateCharacterData {
3595
- bodyComponentId?: string;
3596
- eyesComponentId?: string;
3597
- hairstyleComponentId?: string;
3598
- outfitComponentId?: string;
3599
- }
3600
-
3601
- interface ScoreSubmission {
3602
- id: string;
3603
- score: number;
3604
- achievedAt: Date;
3605
- }
3606
-
3607
- /**
3608
- * Combined response type for summary method
3609
- */
3610
- type XpSummaryResponse = {
3611
- today: TodayXpResponse;
3612
- total: TotalXpResponse;
3613
- };
3614
-
3615
- /**
3616
- * @fileoverview Server SDK Type Definitions
3617
- *
3618
- * TypeScript type definitions for the server-side Playcademy SDK.
3619
- * Includes configuration types, client state, and re-exported TimeBack types.
3620
- */
3621
-
3622
- /**
3623
- * TimeBack integration configuration for Playcademy config file
3624
- */
3625
- interface TimebackIntegrationConfig {
3626
- /** Organization overrides */
3627
- organization?: Partial<OrganizationConfig>;
3628
- /** Course configuration (subjects and grades REQUIRED) */
3629
- course: CourseConfig;
3630
- /** Component overrides */
3631
- component?: Partial<ComponentConfig>;
3632
- /** Resource overrides */
3633
- resource?: Partial<ResourceConfig>;
3634
- /** Component-Resource link overrides */
3635
- componentResource?: Partial<ComponentResourceConfig>;
3636
- }
3637
- /**
3638
- * Custom API routes integration
3639
- */
3640
- interface CustomRoutesIntegration {
3641
- /** Directory for custom API routes (defaults to 'server/api') */
3642
- directory?: string;
3643
- }
3644
- /**
3645
- * Database integration
3646
- */
3647
- interface DatabaseIntegration {
3648
- /** Database directory (defaults to 'db') */
3649
- directory?: string;
3650
- }
3651
- /**
3652
- * Integrations configuration
3653
- * All backend features (database, custom routes, external services) are configured here
3654
- */
3655
- interface IntegrationsConfig {
3656
- /** TimeBack integration (optional) */
3657
- timeback?: TimebackIntegrationConfig;
3658
- /** Custom API routes (optional) */
3659
- customRoutes?: CustomRoutesIntegration | boolean;
3660
- /** Database (optional) */
3661
- database?: DatabaseIntegration | boolean;
3662
- /** Key-Value storage (optional) */
3663
- kv?: boolean;
3664
- /** Bucket storage (optional) */
3665
- bucket?: boolean;
3666
- /** Authentication (optional) */
3667
- auth?: boolean;
3668
- }
3669
- /**
3670
- * Unified Playcademy configuration
3671
- * Used for playcademy.config.{js,json}
3672
- */
3673
- interface PlaycademyConfig {
3674
- /** Game name */
3675
- name: string;
3676
- /** Game description */
3677
- description?: string;
3678
- /** Game emoji icon */
3679
- emoji?: string;
3680
- /** Build command to run before deployment */
3681
- buildCommand?: string[];
3682
- /** Path to build output */
3683
- buildPath?: string;
3684
- /** Game type */
3685
- gameType?: 'hosted' | 'external';
3686
- /** External URL (for external games) */
3687
- externalUrl?: string;
3688
- /** Game platform */
3689
- platform?: 'web' | 'unity' | 'godot';
3690
- /** Integrations (database, custom routes, external services) */
3691
- integrations?: IntegrationsConfig;
3692
- }
3693
-
3694
- /**
3695
- * Resource bindings for backend deployment
3696
- * Provider-agnostic abstraction for cloud resources
3697
- */
3698
- interface BackendResourceBindings {
3699
- /** SQL database instances to create and bind (maps to D1 on Cloudflare) */
3700
- database?: string[];
3701
- /** Key-value store namespaces to create and bind (maps to KV on Cloudflare) */
3702
- keyValue?: string[];
3703
- /** Object storage buckets to bind (maps to R2 on Cloudflare) */
3704
- bucket?: string[];
3705
- }
3706
- /**
3707
- * Backend deployment bundle for uploading to Playcademy platform
3708
- */
3709
- interface BackendDeploymentBundle {
3710
- /** Bundled JavaScript code ready for deployment */
3711
- code: string;
3712
- /** Game configuration */
3713
- config: PlaycademyConfig;
3714
- /** Optional resource bindings (database, storage, etc.) */
3715
- bindings?: BackendResourceBindings;
3716
- /** Optional schema information for database setup */
3717
- schema?: SchemaInfo;
3718
- /** Optional game secrets */
3719
- secrets?: Record<string, string>;
3720
- }
3721
-
3722
- interface UserScore {
3723
- id: string;
3724
- score: number;
3725
- achievedAt: Date;
3726
- metadata?: Record<string, unknown>;
3727
- gameId: string;
3728
- gameTitle: string;
3729
- gameSlug: string;
764
+ given_name?: string;
765
+ /** Optional family name (last name) */
766
+ family_name?: string;
767
+ /** TimeBack student ID (if user has TimeBack integration) */
768
+ timeback_id?: string;
769
+ /** Additional user attributes from the identity provider */
770
+ [key: string]: unknown;
3730
771
  }
772
+ type InventoryItemWithItem = Omit<InventoryItem, 'itemId'> & {
773
+ item: Item;
774
+ };
775
+ type EndActivityResponse = {
776
+ status: 'ok';
777
+ courseId: string;
778
+ xpAwarded: number;
779
+ masteredUnits?: number;
780
+ pctCompleteApp?: number;
781
+ scoreStatus?: string;
782
+ inProgress?: string;
783
+ };
3731
784
 
3732
785
  /**
3733
786
  * Auto-initializes a PlaycademyClient with context from the environment.
@@ -3753,12 +806,12 @@ interface UserScore {
3753
806
  * const client = await PlaycademyClient.init({ baseUrl: 'https://custom.api.com' })
3754
807
  * ```
3755
808
  */
3756
- declare function init(options?: {
809
+ declare function init<T extends PlaycademyClient = PlaycademyClient>(this: new (...args: ConstructorParameters<typeof PlaycademyClient>) => T, options?: {
3757
810
  baseUrl?: string;
3758
811
  allowedParentOrigins?: string[];
3759
812
  onDisconnect?: DisconnectHandler;
3760
813
  enableConnectionMonitoring?: boolean;
3761
- }): Promise<PlaycademyClient>;
814
+ }): Promise<T>;
3762
815
 
3763
816
  /**
3764
817
  * Authenticates a user with email and password.
@@ -3812,6 +865,17 @@ declare class PlaycademyClient {
3812
865
  private authContext?;
3813
866
  private initPayload?;
3814
867
  private connectionManager?;
868
+ /**
869
+ * Internal session manager for automatic session lifecycle.
870
+ *
871
+ * This manager handles starting and ending game sessions automatically.
872
+ * Game developers don't need to call these methods directly - they're managed
873
+ * by the SDK during initialization and cleanup.
874
+ *
875
+ * @private
876
+ * @internal
877
+ */
878
+ private _sessionManager;
3815
879
  /**
3816
880
  * Creates a new PlaycademyClient instance.
3817
881
  *
@@ -4057,32 +1121,6 @@ declare class PlaycademyClient {
4057
1121
  * 3. autoStartSession is enabled (defaults to false)
4058
1122
  */
4059
1123
  private _initializeInternalSession;
4060
- /** Platform API authentication methods (login, logout) */
4061
- auth: {
4062
- login: (credentials: {
4063
- email: string;
4064
- password: string;
4065
- }) => Promise<{
4066
- success: boolean;
4067
- token?: string;
4068
- user?: {
4069
- id: string;
4070
- email: string;
4071
- };
4072
- expiresAt?: string;
4073
- error?: string;
4074
- }>;
4075
- logout: () => Promise<void>;
4076
- apiKeys: {
4077
- create: (options?: {
4078
- name?: string;
4079
- expiresIn?: number | null;
4080
- permissions?: Record<string, string[]>;
4081
- }) => Promise<BetterAuthApiKeyResponse>;
4082
- list: () => Promise<BetterAuthApiKey[]>;
4083
- revoke: (keyId: string) => Promise<void>;
4084
- };
4085
- };
4086
1124
  /** Identity provider connection methods (connect external accounts) */
4087
1125
  identity: {
4088
1126
  connect: (options: AuthOptions) => Promise<AuthResult>;
@@ -4125,26 +1163,6 @@ declare class PlaycademyClient {
4125
1163
  arrayBuffer: (path: string) => Promise<ArrayBuffer>;
4126
1164
  };
4127
1165
  };
4128
- /** Game management methods (fetch, list, saveState, loadState, sessions) */
4129
- games: {
4130
- fetch: (gameIdOrSlug: string, options?: TTLCacheConfig) => Promise<FetchedGame>;
4131
- list: (options?: TTLCacheConfig) => Promise<Array<Game>>;
4132
- saveState: (state: Record<string, unknown>) => Promise<void>;
4133
- loadState: () => Promise<GameStateData>;
4134
- startSession: (gameId?: string) => Promise<StartSessionResponse>;
4135
- endSession: (sessionId: string, gameId?: string) => Promise<void>;
4136
- token: {
4137
- create: (gameId: string, options?: {
4138
- apply?: boolean;
4139
- }) => Promise<GameTokenResponse>;
4140
- };
4141
- leaderboard: {
4142
- get: (gameId: string, options?: {
4143
- limit?: number;
4144
- offset?: number;
4145
- }) => Promise<LeaderboardEntry[]>;
4146
- };
4147
- };
4148
1166
  /** User methods (me, inventory management) */
4149
1167
  users: {
4150
1168
  me: () => Promise<AuthenticatedUser>;
@@ -4155,258 +1173,6 @@ declare class PlaycademyClient {
4155
1173
  quantity: (identifier: string) => Promise<number>;
4156
1174
  has: (identifier: string, minQuantity?: number) => Promise<boolean>;
4157
1175
  };
4158
- scores: {
4159
- get: (userIdOrOptions?: string | {
4160
- limit?: number;
4161
- gameId?: string;
4162
- }, options?: {
4163
- limit?: number;
4164
- gameId?: string;
4165
- }) => Promise<UserScore[]>;
4166
- };
4167
- };
4168
- /** Developer tools (auth, games, keys management) */
4169
- dev: {
4170
- status: {
4171
- apply: () => Promise<void>;
4172
- get: () => Promise<DeveloperStatusValue>;
4173
- };
4174
- games: {
4175
- deploy: (slug: string, options: {
4176
- metadata?: UpsertGameMetadataInput;
4177
- file?: File | Blob | null;
4178
- backend?: BackendDeploymentBundle;
4179
- hooks?: DevUploadHooks;
4180
- }) => Promise<Game>;
4181
- seed: (slug: string, code: string, environment?: "staging" | "production") => Promise<{
4182
- success: boolean;
4183
- deploymentId: string;
4184
- executedAt: string;
4185
- }>;
4186
- upsert: (slug: string, metadata: UpsertGameMetadataInput) => Promise<Game>;
4187
- delete: (gameId: string) => Promise<void>;
4188
- secrets: {
4189
- set: (slug: string, secrets: Record<string, string>) => Promise<string[]>;
4190
- list: (slug: string) => Promise<string[]>;
4191
- get: (slug: string) => Promise<Record<string, string>>;
4192
- delete: (slug: string, key: string) => Promise<void>;
4193
- };
4194
- database: {
4195
- reset: (slug: string, schema?: {
4196
- sql: string;
4197
- hash: string;
4198
- }) => Promise<{
4199
- success: boolean;
4200
- deploymentId: string;
4201
- resetAt: string;
4202
- schemaPushed: boolean;
4203
- }>;
4204
- };
4205
- bucket: {
4206
- list: (slug: string, prefix?: string) => Promise<BucketFile[]>;
4207
- get: (slug: string, key: string) => Promise<ArrayBuffer>;
4208
- put: (slug: string, key: string, content: Blob | ArrayBuffer | Uint8Array, contentType?: string) => Promise<void>;
4209
- delete: (slug: string, key: string) => Promise<void>;
4210
- };
4211
- domains: {
4212
- add: (slug: string, hostname: string) => Promise<GameCustomHostname>;
4213
- list: (slug: string) => Promise<GameCustomHostname[]>;
4214
- status: (slug: string, hostname: string, refresh?: boolean) => Promise<GameCustomHostname>;
4215
- delete: (slug: string, hostname: string) => Promise<void>;
4216
- };
4217
- };
4218
- items: {
4219
- create: (gameId: string, slug: string, itemData: Omit<InsertItemInput, "slug" | "gameId">) => Promise<Item>;
4220
- update: (gameId: string, itemId: string, updates: UpdateItemInput) => Promise<Item>;
4221
- list: (gameId: string) => Promise<Array<Item>>;
4222
- get: (gameId: string, slug: string) => Promise<Item>;
4223
- delete: (gameId: string, itemId: string) => Promise<void>;
4224
- shop: {
4225
- create: (gameId: string, itemId: string, listingData: Omit<InsertShopListingInput, "itemId">) => Promise<ShopListing>;
4226
- get: (gameId: string, itemId: string) => Promise<ShopListing | null>;
4227
- update: (gameId: string, itemId: string, updates: UpdateShopListingInput) => Promise<ShopListing>;
4228
- delete: (gameId: string, itemId: string) => Promise<void>;
4229
- list: (gameId: string) => Promise<Array<ShopListing & {
4230
- item: Item;
4231
- }>>;
4232
- };
4233
- };
4234
- };
4235
- /** Map methods (elements) */
4236
- maps: {
4237
- get: (identifier: string, options?: TTLCacheConfig) => Promise<MapData>;
4238
- elements: (mapId: string, options?: TTLCacheConfig) => Promise<MapElementWithGame[]>;
4239
- objects: {
4240
- list: (mapId: string) => Promise<MapObjectWithItem[]>;
4241
- create: (mapId: string, objectData: CreateMapObjectData) => Promise<MapObjectWithItem>;
4242
- delete: (mapId: string, objectId: string) => Promise<void>;
4243
- };
4244
- };
4245
- /** Admin methods (games, items, currencies, shop listings) */
4246
- admin: {
4247
- games: {
4248
- pauseGame: (gameId: string) => Promise<void>;
4249
- resumeGame: (gameId: string) => Promise<void>;
4250
- };
4251
- items: {
4252
- create: (props: InsertItemInput) => Promise<{
4253
- id: string;
4254
- createdAt: Date;
4255
- gameId: string | null;
4256
- slug: string;
4257
- displayName: string;
4258
- metadata: unknown;
4259
- description: string | null;
4260
- type: "accessory" | "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "other";
4261
- isPlaceable: boolean;
4262
- imageUrl: string | null;
4263
- }>;
4264
- get: (itemId: string) => Promise<{
4265
- id: string;
4266
- createdAt: Date;
4267
- gameId: string | null;
4268
- slug: string;
4269
- displayName: string;
4270
- metadata: unknown;
4271
- description: string | null;
4272
- type: "accessory" | "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "other";
4273
- isPlaceable: boolean;
4274
- imageUrl: string | null;
4275
- }>;
4276
- list: () => Promise<{
4277
- id: string;
4278
- createdAt: Date;
4279
- gameId: string | null;
4280
- slug: string;
4281
- displayName: string;
4282
- metadata: unknown;
4283
- description: string | null;
4284
- type: "accessory" | "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "other";
4285
- isPlaceable: boolean;
4286
- imageUrl: string | null;
4287
- }[]>;
4288
- update: (itemId: string, props: UpdateItemInput) => Promise<{
4289
- id: string;
4290
- createdAt: Date;
4291
- gameId: string | null;
4292
- slug: string;
4293
- displayName: string;
4294
- metadata: unknown;
4295
- description: string | null;
4296
- type: "accessory" | "currency" | "badge" | "trophy" | "collectible" | "consumable" | "unlock" | "upgrade" | "other";
4297
- isPlaceable: boolean;
4298
- imageUrl: string | null;
4299
- }>;
4300
- delete: (itemId: string) => Promise<void>;
4301
- };
4302
- currencies: {
4303
- create: (props: InsertCurrencyInput) => Promise<{
4304
- symbol: string | null;
4305
- id: string;
4306
- createdAt: Date;
4307
- updatedAt: Date | null;
4308
- itemId: string;
4309
- isPrimary: boolean;
4310
- }>;
4311
- get: (currencyId: string) => Promise<{
4312
- symbol: string | null;
4313
- id: string;
4314
- createdAt: Date;
4315
- updatedAt: Date | null;
4316
- itemId: string;
4317
- isPrimary: boolean;
4318
- }>;
4319
- list: () => Promise<{
4320
- symbol: string | null;
4321
- id: string;
4322
- createdAt: Date;
4323
- updatedAt: Date | null;
4324
- itemId: string;
4325
- isPrimary: boolean;
4326
- }[]>;
4327
- update: (currencyId: string, props: UpdateCurrencyInput) => Promise<{
4328
- symbol: string | null;
4329
- id: string;
4330
- createdAt: Date;
4331
- updatedAt: Date | null;
4332
- itemId: string;
4333
- isPrimary: boolean;
4334
- }>;
4335
- delete: (currencyId: string) => Promise<void>;
4336
- };
4337
- shopListings: {
4338
- create: (props: InsertShopListingInput) => Promise<{
4339
- id: string;
4340
- createdAt: Date;
4341
- updatedAt: Date | null;
4342
- itemId: string;
4343
- currencyId: string;
4344
- price: number;
4345
- sellBackPercentage: number | null;
4346
- stock: number | null;
4347
- isActive: boolean;
4348
- availableFrom: Date | null;
4349
- availableUntil: Date | null;
4350
- }>;
4351
- get: (listingId: string) => Promise<{
4352
- id: string;
4353
- createdAt: Date;
4354
- updatedAt: Date | null;
4355
- itemId: string;
4356
- currencyId: string;
4357
- price: number;
4358
- sellBackPercentage: number | null;
4359
- stock: number | null;
4360
- isActive: boolean;
4361
- availableFrom: Date | null;
4362
- availableUntil: Date | null;
4363
- }>;
4364
- list: () => Promise<{
4365
- id: string;
4366
- createdAt: Date;
4367
- updatedAt: Date | null;
4368
- itemId: string;
4369
- currencyId: string;
4370
- price: number;
4371
- sellBackPercentage: number | null;
4372
- stock: number | null;
4373
- isActive: boolean;
4374
- availableFrom: Date | null;
4375
- availableUntil: Date | null;
4376
- }[]>;
4377
- update: (listingId: string, props: UpdateShopListingInput) => Promise<{
4378
- id: string;
4379
- createdAt: Date;
4380
- updatedAt: Date | null;
4381
- itemId: string;
4382
- currencyId: string;
4383
- price: number;
4384
- sellBackPercentage: number | null;
4385
- stock: number | null;
4386
- isActive: boolean;
4387
- availableFrom: Date | null;
4388
- availableUntil: Date | null;
4389
- }>;
4390
- delete: (listingId: string) => Promise<void>;
4391
- };
4392
- };
4393
- /** Shop methods (view) */
4394
- shop: {
4395
- view: () => Promise<ShopViewResponse>;
4396
- };
4397
- /** Level methods (levels) */
4398
- levels: {
4399
- get: () => Promise<UserLevel>;
4400
- progress: (options?: CooldownCacheConfig) => Promise<{
4401
- level: number;
4402
- currentXp: number;
4403
- xpToNextLevel: number;
4404
- totalXP: number;
4405
- }>;
4406
- config: {
4407
- list: () => Promise<LevelConfig[]>;
4408
- get: (level: number) => Promise<LevelConfig | null>;
4409
- };
4410
1176
  };
4411
1177
  /** TimeBack XP methods (today, total, history) */
4412
1178
  timeback: {
@@ -4414,32 +1180,6 @@ declare class PlaycademyClient {
4414
1180
  pauseActivity: () => void;
4415
1181
  resumeActivity: () => void;
4416
1182
  endActivity: (data: _playcademy_timeback_types.EndActivityScoreData) => Promise<EndActivityResponse>;
4417
- management: {
4418
- setup: (request: TimebackSetupRequest) => Promise<TimebackSetupResponse>;
4419
- verify: (gameId: string) => Promise<TimebackVerifyResponse>;
4420
- cleanup: (gameId: string) => Promise<void>;
4421
- get: (gameId: string) => Promise<GameTimebackIntegration | null>;
4422
- getConfig: (gameId: string) => Promise<TimebackSetupRequest["config"]>;
4423
- };
4424
- xp: {
4425
- today: (options?: {
4426
- date?: string;
4427
- timezone?: string;
4428
- }) => Promise<TodayXpResponse>;
4429
- total: () => Promise<TotalXpResponse>;
4430
- history: (options?: {
4431
- startDate?: string;
4432
- endDate?: string;
4433
- }) => Promise<XpHistoryResponse>;
4434
- summary: (options?: {
4435
- date?: string;
4436
- timezone?: string;
4437
- }) => Promise<XpSummaryResponse>;
4438
- };
4439
- };
4440
- /** Telemetry methods (pushMetrics) */
4441
- telemetry: {
4442
- pushMetrics: (metrics: Record<string, number>) => Promise<void>;
4443
1183
  };
4444
1184
  /** Credits methods (credits management) */
4445
1185
  credits: {
@@ -4447,41 +1187,9 @@ declare class PlaycademyClient {
4447
1187
  add: (amount: number) => Promise<number>;
4448
1188
  spend: (amount: number) => Promise<number>;
4449
1189
  };
4450
- /** Platform-wide leaderboard methods (fetch, getUserRank) */
4451
- leaderboard: {
4452
- fetch: (options?: LeaderboardOptions) => Promise<GameLeaderboardEntry[]>;
4453
- getUserRank: (gameId: string, userId: string) => Promise<UserRankResponse>;
4454
- };
4455
1190
  /** Platform-wide scores methods (submit, getUserScores) */
4456
1191
  scores: {
4457
1192
  submit: (gameId: string, score: number, metadata?: Record<string, unknown>) => Promise<ScoreSubmission>;
4458
- getByUser: (gameId: string, userId: string, options?: {
4459
- limit?: number;
4460
- }) => Promise<UserScore$1[]>;
4461
- };
4462
- /** Character methods (get, create, update, components) */
4463
- character: {
4464
- get: (userId?: string) => Promise<PlayerCharacter | null>;
4465
- create: (characterData: CreateCharacterData) => Promise<PlayerCharacter>;
4466
- update: (updates: UpdateCharacterData) => Promise<PlayerCharacter>;
4467
- components: {
4468
- list: (options?: CharacterComponentsOptions & TTLCacheConfig) => Promise<CharacterComponentWithSpriteUrl[]>;
4469
- clearCache: (key?: string) => void;
4470
- getCacheKeys: () => string[];
4471
- };
4472
- accessories: {
4473
- equip: (slot: string, componentId: string) => Promise<PlayerCharacterAccessory>;
4474
- remove: (slot: string) => Promise<{
4475
- success: boolean;
4476
- }>;
4477
- list: () => Promise<PlayerCharacterAccessory[]>;
4478
- };
4479
- };
4480
- /** Sprites methods (templates) */
4481
- sprites: {
4482
- templates: {
4483
- get: (slug: string) => Promise<SpriteTemplateData>;
4484
- };
4485
1193
  };
4486
1194
  /** Realtime methods (token) */
4487
1195
  realtime: {
@@ -4490,36 +1198,6 @@ declare class PlaycademyClient {
4490
1198
  };
4491
1199
  open(channel?: string, url?: string): Promise<_playcademy_realtime_server_types.RealtimeChannel>;
4492
1200
  };
4493
- /** Achievements methods (list, history, progress) */
4494
- achievements: {
4495
- list: (options?: TTLCacheConfig) => Promise<AchievementCurrent[]>;
4496
- history: {
4497
- list: (queryOptions?: {
4498
- limit?: number;
4499
- }, cacheOptions?: TTLCacheConfig) => Promise<AchievementHistoryEntry[]>;
4500
- };
4501
- progress: {
4502
- submit: (achievementId: string) => Promise<AchievementProgressResponse>;
4503
- };
4504
- };
4505
- /** Notifications methods (list, update status, stats) */
4506
- notifications: {
4507
- list: (queryOptions?: {
4508
- status?: NotificationStatus;
4509
- type?: NotificationType;
4510
- limit?: number;
4511
- offset?: number;
4512
- }, cacheOptions?: TTLCacheConfig) => Promise<Notification[]>;
4513
- markAsSeen: (notificationId: string) => Promise<Notification>;
4514
- markAsClicked: (notificationId: string) => Promise<Notification>;
4515
- dismiss: (notificationId: string) => Promise<Notification>;
4516
- stats: {
4517
- get: (queryOptions?: {
4518
- from?: string;
4519
- to?: string;
4520
- }, cacheOptions?: TTLCacheConfig) => Promise<NotificationStats>;
4521
- };
4522
- };
4523
1201
  /** Backend methods for calling custom game API routes */
4524
1202
  backend: {
4525
1203
  get<T = unknown>(path: string, headers?: Record<string, string>): Promise<T>;
@@ -4541,6 +1219,9 @@ declare class PlaycademyClient {
4541
1219
  };
4542
1220
  }
4543
1221
 
1222
+ /**
1223
+ * Core client configuration and lifecycle types
1224
+ */
4544
1225
  type TokenType = 'session' | 'apiKey' | 'gameJwt';
4545
1226
  interface ClientConfig {
4546
1227
  baseUrl: string;
@@ -4573,45 +1254,48 @@ interface DisconnectContext {
4573
1254
  duration?: number;
4574
1255
  }) => void;
4575
1256
  }
4576
- type AuthProviderType = (typeof AUTH_PROVIDER_IDS)[keyof typeof AUTH_PROVIDER_IDS];
4577
- interface AuthOptions {
4578
- /** The identity provider to use for authentication */
4579
- provider: AuthProviderType;
4580
- /** The OAuth callback URL where your server handles the callback */
4581
- callbackUrl: string;
4582
- /** Authentication mode - auto detects best option based on context */
4583
- mode?: 'auto' | 'popup' | 'redirect';
4584
- /** Callback for authentication state changes */
4585
- onStateChange?: (state: AuthStateUpdate) => void;
4586
- /** Custom OAuth configuration (for users embedding the SDK outside of the Playcademy platform) */
4587
- oauth?: {
4588
- clientId: string;
4589
- authorizationEndpoint?: string;
4590
- tokenEndpoint?: string;
4591
- scope?: string;
1257
+ type GameContextPayload = {
1258
+ token: string;
1259
+ baseUrl: string;
1260
+ realtimeUrl: string;
1261
+ gameId: string;
1262
+ forwardKeys?: string[];
1263
+ };
1264
+ interface ClientEvents {
1265
+ authChange: {
1266
+ token: string | null;
1267
+ };
1268
+ inventoryChange: {
1269
+ itemId: string;
1270
+ delta: number;
1271
+ newTotal: number;
1272
+ };
1273
+ levelUp: {
1274
+ oldLevel: number;
1275
+ newLevel: number;
1276
+ creditsAwarded: number;
1277
+ };
1278
+ xpGained: {
1279
+ amount: number;
1280
+ totalXP: number;
1281
+ leveledUp: boolean;
1282
+ };
1283
+ connectionChange: {
1284
+ state: 'online' | 'offline' | 'degraded';
1285
+ reason: string;
4592
1286
  };
4593
- /**
4594
- * Optional custom data to encode in OAuth state parameter.
4595
- * By default, the SDK automatically includes playcademy_user_id and game_id.
4596
- * Use this to add additional custom data if needed.
4597
- */
4598
- stateData?: Record<string, string>;
4599
1287
  }
4600
- interface AuthStateUpdate {
4601
- /** Current status of the authentication flow */
4602
- status: 'opening_popup' | 'exchanging_token' | 'complete' | 'error';
4603
- /** Human-readable message about the current state */
1288
+
1289
+ /**
1290
+ * Event and message payload types for SDK messaging system
1291
+ */
1292
+
1293
+ interface DisplayAlertPayload {
4604
1294
  message: string;
4605
- /** Error details if status is 'error' */
4606
- error?: Error;
4607
- }
4608
- interface AuthResult {
4609
- /** Whether authentication was successful */
4610
- success: boolean;
4611
- /** User information if authentication was successful */
4612
- user?: UserInfo;
4613
- /** Error if authentication failed */
4614
- error?: Error;
1295
+ options?: {
1296
+ type?: 'info' | 'warning' | 'error';
1297
+ duration?: number;
1298
+ };
4615
1299
  }
4616
1300
  /**
4617
1301
  * Authentication state change event payload.
@@ -4669,24 +1353,6 @@ interface KeyEventPayload {
4669
1353
  /** Event type */
4670
1354
  type: 'keydown' | 'keyup';
4671
1355
  }
4672
- interface DisplayAlertPayload {
4673
- message: string;
4674
- options?: {
4675
- type?: 'info' | 'warning' | 'error';
4676
- duration?: number;
4677
- };
4678
- }
4679
- /**
4680
- * Display alert payload.
4681
- * Request from game to show platform-level alert.
4682
- */
4683
- interface DisplayAlertPayload {
4684
- message: string;
4685
- options?: {
4686
- type?: 'info' | 'warning' | 'error';
4687
- duration?: number;
4688
- };
4689
- }
4690
1356
  /**
4691
1357
  * Connection state payload.
4692
1358
  * Broadcast from platform to games when connection changes.
@@ -4695,37 +1361,10 @@ interface ConnectionStatePayload {
4695
1361
  state: 'online' | 'offline' | 'degraded';
4696
1362
  reason: string;
4697
1363
  }
4698
- interface ClientEvents {
4699
- authChange: {
4700
- token: string | null;
4701
- };
4702
- inventoryChange: {
4703
- itemId: string;
4704
- delta: number;
4705
- newTotal: number;
4706
- };
4707
- levelUp: {
4708
- oldLevel: number;
4709
- newLevel: number;
4710
- creditsAwarded: number;
4711
- };
4712
- xpGained: {
4713
- amount: number;
4714
- totalXP: number;
4715
- leveledUp: boolean;
4716
- };
4717
- connectionChange: {
4718
- state: 'online' | 'offline' | 'degraded';
4719
- reason: string;
4720
- };
4721
- }
4722
- type GameContextPayload = {
4723
- token: string;
4724
- baseUrl: string;
4725
- realtimeUrl: string;
4726
- gameId: string;
4727
- forwardKeys?: string[];
4728
- };
1364
+
1365
+ /**
1366
+ * SDK-specific API response types
1367
+ */
4729
1368
  type LoginResponse = {
4730
1369
  token: string;
4731
1370
  };
@@ -4733,12 +1372,74 @@ type GameTokenResponse = {
4733
1372
  token: string;
4734
1373
  exp: number;
4735
1374
  };
4736
- type StartSessionResponse = {
4737
- sessionId: string;
4738
- };
4739
1375
  type InventoryMutationResponse = {
4740
1376
  newTotal: number;
4741
1377
  };
1378
+
1379
+ /**
1380
+ * Realtime namespace types
1381
+ */
1382
+ /**
1383
+ * Response type for the realtime token API
1384
+ */
1385
+ interface RealtimeTokenResponse {
1386
+ token: string;
1387
+ }
1388
+
1389
+ /**
1390
+ * Scores namespace types
1391
+ */
1392
+ interface ScoreSubmission {
1393
+ id: string;
1394
+ score: number;
1395
+ achievedAt: Date;
1396
+ }
1397
+
1398
+ /**
1399
+ * Authentication namespace types
1400
+ */
1401
+
1402
+ type AuthProviderType = (typeof AUTH_PROVIDER_IDS)[keyof typeof AUTH_PROVIDER_IDS];
1403
+ interface AuthOptions {
1404
+ /** The identity provider to use for authentication */
1405
+ provider: AuthProviderType;
1406
+ /** The OAuth callback URL where your server handles the callback */
1407
+ callbackUrl: string;
1408
+ /** Authentication mode - auto detects best option based on context */
1409
+ mode?: 'auto' | 'popup' | 'redirect';
1410
+ /** Callback for authentication state changes */
1411
+ onStateChange?: (state: AuthStateUpdate) => void;
1412
+ /** Custom OAuth configuration (for users embedding the SDK outside of the Playcademy platform) */
1413
+ oauth?: {
1414
+ clientId: string;
1415
+ authorizationEndpoint?: string;
1416
+ tokenEndpoint?: string;
1417
+ scope?: string;
1418
+ };
1419
+ /**
1420
+ * Optional custom data to encode in OAuth state parameter.
1421
+ * By default, the SDK automatically includes playcademy_user_id and game_id.
1422
+ * Use this to add additional custom data if needed.
1423
+ */
1424
+ stateData?: Record<string, string>;
1425
+ }
1426
+ interface AuthStateUpdate {
1427
+ /** Current status of the authentication flow */
1428
+ status: 'opening_popup' | 'exchanging_token' | 'complete' | 'error';
1429
+ /** Human-readable message about the current state */
1430
+ message: string;
1431
+ /** Error details if status is 'error' */
1432
+ error?: Error;
1433
+ }
1434
+ interface AuthResult {
1435
+ /** Whether authentication was successful */
1436
+ success: boolean;
1437
+ /** User information if authentication was successful */
1438
+ user?: UserInfo;
1439
+ /** Error if authentication failed */
1440
+ error?: Error;
1441
+ }
1442
+
4742
1443
  type DevUploadEvent = {
4743
1444
  type: 'init';
4744
1445
  } | {
@@ -4762,41 +1463,6 @@ type DevUploadHooks = {
4762
1463
  onEvent?: (e: DevUploadEvent) => void;
4763
1464
  onClose?: () => void;
4764
1465
  };
4765
- /**
4766
- * Better-auth API key creation response
4767
- */
4768
- interface BetterAuthApiKeyResponse {
4769
- apiKey: string;
4770
- key: {
4771
- id: string;
4772
- name: string | null;
4773
- expiresAt: string | null;
4774
- createdAt: string;
4775
- };
4776
- }
4777
- /**
4778
- * Better-auth API key list item
4779
- */
4780
- interface BetterAuthApiKey {
4781
- id: string;
4782
- name: string | null;
4783
- start: string;
4784
- enabled: boolean;
4785
- expiresAt: string | null;
4786
- createdAt: string;
4787
- updatedAt: string;
4788
- lastRequest: string | null;
4789
- requestCount: number;
4790
- }
4791
- /**
4792
- * Bucket file metadata
4793
- */
4794
- interface BucketFile {
4795
- key: string;
4796
- size: number;
4797
- uploaded: string;
4798
- contentType?: string;
4799
- }
4800
1466
 
4801
1467
  /**
4802
1468
  * Connection Manager