@playdrop/playdrop-cli 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/config/client-meta.json +4 -4
  2. package/dist/apps/build.js +49 -6
  3. package/dist/apps/index.d.ts +2 -0
  4. package/dist/apps/index.js +2 -0
  5. package/dist/apps/upload.d.ts +2 -0
  6. package/dist/apps/upload.js +126 -28
  7. package/dist/assetSpecs.d.ts +16 -0
  8. package/dist/assetSpecs.js +263 -0
  9. package/dist/assets/model-artifacts.js +3 -0
  10. package/dist/catalogue.d.ts +57 -3
  11. package/dist/catalogue.js +342 -16
  12. package/dist/commands/ads.d.ts +8 -0
  13. package/dist/commands/ads.js +124 -0
  14. package/dist/commands/boosts.d.ts +25 -0
  15. package/dist/commands/boosts.js +209 -0
  16. package/dist/commands/browse.d.ts +6 -1
  17. package/dist/commands/browse.js +365 -124
  18. package/dist/commands/captureListing.d.ts +53 -0
  19. package/dist/commands/captureListing.js +804 -0
  20. package/dist/commands/create.d.ts +1 -0
  21. package/dist/commands/create.js +183 -3
  22. package/dist/commands/credits.d.ts +6 -0
  23. package/dist/commands/credits.js +47 -1
  24. package/dist/commands/detail.js +38 -4
  25. package/dist/commands/devServer.js +10 -5
  26. package/dist/commands/search.d.ts +5 -0
  27. package/dist/commands/search.js +139 -17
  28. package/dist/commands/tags.d.ts +7 -0
  29. package/dist/commands/tags.js +63 -0
  30. package/dist/commands/upload-content.d.ts +13 -3
  31. package/dist/commands/upload-content.js +86 -20
  32. package/dist/commands/upload.d.ts +2 -0
  33. package/dist/commands/upload.js +187 -11
  34. package/dist/commands/validate.js +163 -2
  35. package/dist/commands/versionsBrowse.js +128 -91
  36. package/dist/index.js +145 -3
  37. package/dist/refs.d.ts +2 -2
  38. package/dist/refs.js +13 -1
  39. package/dist/taskSelection.js +6 -3
  40. package/dist/taskUtils.d.ts +2 -2
  41. package/dist/taskUtils.js +1 -0
  42. package/dist/uploadLog.d.ts +1 -1
  43. package/dist/uploadLog.js +2 -2
  44. package/node_modules/@playdrop/ai-client/package.json +1 -1
  45. package/node_modules/@playdrop/api-client/dist/client.d.ts +131 -10
  46. package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
  47. package/node_modules/@playdrop/api-client/dist/client.js +6 -0
  48. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts +9 -1
  49. package/node_modules/@playdrop/api-client/dist/domains/admin.d.ts.map +1 -1
  50. package/node_modules/@playdrop/api-client/dist/domains/admin.js +45 -0
  51. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +3 -0
  52. package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
  53. package/node_modules/@playdrop/api-client/dist/domains/apps.js +27 -0
  54. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +2 -0
  55. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
  56. package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +16 -0
  57. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +44 -2
  58. package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
  59. package/node_modules/@playdrop/api-client/dist/domains/assets.js +260 -3
  60. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts +17 -1
  61. package/node_modules/@playdrop/api-client/dist/domains/payments.d.ts.map +1 -1
  62. package/node_modules/@playdrop/api-client/dist/domains/payments.js +173 -0
  63. package/node_modules/@playdrop/api-client/dist/domains/search.d.ts.map +1 -1
  64. package/node_modules/@playdrop/api-client/dist/domains/search.js +39 -11
  65. package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts +34 -0
  66. package/node_modules/@playdrop/api-client/dist/domains/tags.d.ts.map +1 -0
  67. package/node_modules/@playdrop/api-client/dist/domains/tags.js +111 -0
  68. package/node_modules/@playdrop/api-client/dist/index.d.ts +61 -1
  69. package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
  70. package/node_modules/@playdrop/api-client/dist/index.js +50 -0
  71. package/node_modules/@playdrop/api-client/package.json +1 -1
  72. package/node_modules/@playdrop/boxel-core/package.json +1 -1
  73. package/node_modules/@playdrop/boxel-three/package.json +1 -1
  74. package/node_modules/@playdrop/config/client-meta.json +4 -4
  75. package/node_modules/@playdrop/config/dist/src/constants.d.ts +11 -0
  76. package/node_modules/@playdrop/config/dist/src/constants.d.ts.map +1 -1
  77. package/node_modules/@playdrop/config/dist/src/constants.js +12 -1
  78. package/node_modules/@playdrop/config/dist/tsconfig.tsbuildinfo +1 -1
  79. package/node_modules/@playdrop/config/package.json +1 -1
  80. package/node_modules/@playdrop/types/dist/api.d.ts +346 -6
  81. package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
  82. package/node_modules/@playdrop/types/dist/api.js +52 -1
  83. package/node_modules/@playdrop/types/dist/asset-pack.d.ts +7 -1
  84. package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
  85. package/node_modules/@playdrop/types/dist/asset-spec-contract-meta-schema.json +86 -0
  86. package/node_modules/@playdrop/types/dist/asset-spec.d.ts +163 -0
  87. package/node_modules/@playdrop/types/dist/asset-spec.d.ts.map +1 -0
  88. package/node_modules/@playdrop/types/dist/asset-spec.js +101 -0
  89. package/node_modules/@playdrop/types/dist/asset.d.ts +23 -6
  90. package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
  91. package/node_modules/@playdrop/types/dist/asset.js +4 -1
  92. package/node_modules/@playdrop/types/dist/graph.d.ts +4 -2
  93. package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
  94. package/node_modules/@playdrop/types/dist/graph.js +9 -2
  95. package/node_modules/@playdrop/types/dist/index.d.ts +1 -0
  96. package/node_modules/@playdrop/types/dist/index.d.ts.map +1 -1
  97. package/node_modules/@playdrop/types/dist/index.js +1 -0
  98. package/node_modules/@playdrop/types/dist/version.d.ts +13 -0
  99. package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
  100. package/node_modules/@playdrop/types/dist/version.js +21 -0
  101. package/node_modules/@playdrop/types/package.json +6 -1
  102. package/node_modules/@playdrop/vox-three/package.json +1 -1
  103. package/package.json +3 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@playdrop/config",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "Shared configuration helpers for Playdrop clients",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -1,6 +1,7 @@
1
1
  import type { AppType, AppSurface } from './app.js';
2
- import type { AppAuthMode, AppControllerMode, AppHostingMode, AppVersionVisibility } from './version.js';
2
+ import type { AppAuthMode, AppControllerMode, AppHostingMode, ReviewState, AppVersionVisibility } from './version.js';
3
3
  import type { AssetCategory, AssetResponse } from './asset.js';
4
+ import type { AppMetadataAssetSpecSupport, AssetSpecListResponse, AssetSpecSearchResult, AssetSpecVersionResponse, AssetSpecVersionsListResponse } from './asset-spec.js';
4
5
  import type { AssetPackResponse } from './asset-pack.js';
5
6
  export interface CreateAppRequest {
6
7
  name: string;
@@ -89,6 +90,28 @@ export interface ApiErrorResponse {
89
90
  error: string;
90
91
  message?: string;
91
92
  }
93
+ export declare const TAG_SLUG_REGEX: RegExp;
94
+ export interface ContentTagSummary {
95
+ ref: string;
96
+ groupSlug: string;
97
+ groupDisplayName: string;
98
+ slug: string;
99
+ displayName: string;
100
+ }
101
+ export interface TagGroupSummary {
102
+ slug: string;
103
+ displayName: string;
104
+ allowedTargetKinds: SavedItemKind[];
105
+ createdAt: string;
106
+ updatedAt: string;
107
+ }
108
+ export interface TagSummary extends ContentTagSummary {
109
+ createdAt: string;
110
+ updatedAt: string;
111
+ }
112
+ export interface TagGroupWithTagsSummary extends TagGroupSummary {
113
+ tags: TagSummary[];
114
+ }
92
115
  export interface AppResponse {
93
116
  id?: number;
94
117
  name: string;
@@ -114,12 +137,18 @@ export interface AppResponse {
114
137
  previewable?: boolean;
115
138
  /** Visibility of current version */
116
139
  visibility?: AppVersionVisibility;
140
+ /** Review state of current version */
141
+ reviewState?: ReviewState;
142
+ reviewStartedAt?: string | null;
143
+ reviewCompletedAt?: string | null;
117
144
  /** Base URL for loading the app (from current version) */
118
145
  assetUrl: string | null;
119
146
  /** Entry point file within assetUrl */
120
147
  entryPoint?: string | null;
121
148
  /** Surface targets from current version (undefined for draft apps with no version) */
122
149
  surfaceTargets?: AppSurface[];
150
+ /** Asset spec support declarations from the current version */
151
+ assetSpecSupport?: AppMetadataAssetSpecSupport[];
123
152
  bundleSize?: number | null;
124
153
  sourceUrl?: string | null;
125
154
  hasEcs?: boolean;
@@ -138,6 +167,10 @@ export interface AppResponse {
138
167
  playCount?: number;
139
168
  commentCount?: number;
140
169
  remixCount?: number;
170
+ boostedUntil?: string | null;
171
+ promotionSource?: string | null;
172
+ promotionToken?: string | null;
173
+ tags: ContentTagSummary[];
141
174
  }
142
175
  export type AdminAppResponse = AppResponse;
143
176
  export interface AdminAppsListResponse {
@@ -507,6 +540,38 @@ export interface UpdateAppResponse {
507
540
  export interface AdminUpdateAppResponse {
508
541
  app: AdminAppResponse;
509
542
  }
543
+ export interface AdminAppVersionReviewSummary {
544
+ versionId: number;
545
+ version: string;
546
+ appId: number;
547
+ appName: string;
548
+ appDisplayName: string;
549
+ appType: AppType;
550
+ creatorId: number;
551
+ creatorUsername: string;
552
+ isCurrent: boolean;
553
+ visibility: AppVersionVisibility;
554
+ reviewState: ReviewState;
555
+ reviewMessage?: string | null;
556
+ reviewStartedAt?: string | null;
557
+ reviewCompletedAt?: string | null;
558
+ createdAt: string;
559
+ updatedAt: string;
560
+ assetUrl: string;
561
+ }
562
+ export interface AdminAppVersionReviewsListResponse {
563
+ versions: AdminAppVersionReviewSummary[];
564
+ }
565
+ export interface AdminUpdateAppVersionReviewRequest {
566
+ reviewState?: ReviewState;
567
+ reviewMessage?: string | null;
568
+ }
569
+ export interface AdminUpdateAppVersionReviewResponse {
570
+ version: AdminAppVersionReviewSummary;
571
+ }
572
+ export interface AdminClaimNextAppVersionReviewResponse {
573
+ version: AdminAppVersionReviewSummary | null;
574
+ }
510
575
  export interface ProfileAssetSummary {
511
576
  assetRef: string;
512
577
  assetId: number;
@@ -580,26 +645,33 @@ export interface AdminUserResponse {
580
645
  user: AdminUserDetail;
581
646
  }
582
647
  export type UserDetailResponse = PublicUserResponse;
583
- export declare const SEARCH_RESULT_KIND_VALUES: readonly ["creator", "app", "asset", "pack"];
648
+ export declare const SEARCH_RESULT_KIND_VALUES: readonly ["creator", "app", "asset", "asset-spec", "pack"];
584
649
  export type SearchResultKind = typeof SEARCH_RESULT_KIND_VALUES[number];
585
- export declare const SEARCH_KIND_VALUES: readonly ["all", "creator", "app", "asset", "pack"];
650
+ export declare const SEARCH_KIND_VALUES: readonly ["all", "creator", "app", "asset", "asset-spec", "pack"];
586
651
  export type SearchKind = typeof SEARCH_KIND_VALUES[number];
587
652
  export declare const SEARCH_MODE_VALUES: readonly ["grouped", "flat"];
588
653
  export type SearchMode = typeof SEARCH_MODE_VALUES[number];
589
654
  export declare const SEARCH_ASSET_TYPE_VALUES: readonly ["image", "video", "audio", "song", "sfx", "3d"];
590
655
  export type SearchAssetType = typeof SEARCH_ASSET_TYPE_VALUES[number];
656
+ export declare const SEARCH_SORT_VALUES: readonly ["relevance", "recent", "likes", "downloads", "remixes", "comments", "assets", "apps", "alpha"];
657
+ export type SearchSort = typeof SEARCH_SORT_VALUES[number];
591
658
  export interface SearchRequest {
592
659
  q: string;
593
660
  mode?: SearchMode;
594
661
  kind?: SearchKind;
662
+ sort?: SearchSort;
595
663
  page?: number;
596
664
  pageSize?: number;
597
665
  appType?: AppType;
598
666
  assetType?: SearchAssetType;
599
667
  assetCategory?: AssetCategory;
600
668
  assetSubcategory?: string;
669
+ assetSpec?: string;
670
+ assetSpecOwner?: string;
671
+ assetSpecName?: string;
601
672
  packContainsCategory?: AssetCategory;
602
673
  packContainsSubcategory?: string;
674
+ tags?: string[];
603
675
  }
604
676
  export interface SearchSuggestRequest {
605
677
  q: string;
@@ -608,6 +680,7 @@ export interface SearchCountsByKind {
608
680
  creator: number;
609
681
  app: number;
610
682
  asset: number;
683
+ assetSpec: number;
611
684
  pack: number;
612
685
  total: number;
613
686
  }
@@ -624,6 +697,7 @@ export interface SearchTabCounts {
624
697
  songs: number;
625
698
  sfx: number;
626
699
  models3d: number;
700
+ assetSpecs: number;
627
701
  packs: number;
628
702
  }
629
703
  export interface HomeCreatorResponse {
@@ -639,6 +713,63 @@ export interface HomeCreatorResponse {
639
713
  }
640
714
  export declare const SAVED_ITEM_KIND_VALUES: readonly ["APP", "ASSET", "PACK"];
641
715
  export type SavedItemKind = typeof SAVED_ITEM_KIND_VALUES[number];
716
+ export interface ListTagsRequest {
717
+ targetKind?: SavedItemKind;
718
+ groupSlug?: string;
719
+ limit?: number;
720
+ offset?: number;
721
+ }
722
+ export interface TagListResponse {
723
+ groups: TagGroupWithTagsSummary[];
724
+ pagination: PaginationMeta;
725
+ }
726
+ export interface TagDetailResponse {
727
+ tag: TagSummary & {
728
+ group: TagGroupSummary;
729
+ };
730
+ }
731
+ export interface AdminTagGroupsResponse {
732
+ groups: TagGroupWithTagsSummary[];
733
+ }
734
+ export interface AdminTagGroupResponse {
735
+ group: TagGroupSummary;
736
+ }
737
+ export interface AdminTagResponse {
738
+ tag: TagSummary;
739
+ }
740
+ export interface CreateTagGroupRequest {
741
+ slug: string;
742
+ displayName: string;
743
+ allowedTargetKinds?: SavedItemKind[];
744
+ }
745
+ export interface UpdateTagGroupRequest {
746
+ displayName?: string;
747
+ allowedTargetKinds?: SavedItemKind[];
748
+ }
749
+ export interface CreateTagRequest {
750
+ slug: string;
751
+ displayName: string;
752
+ }
753
+ export interface UpdateTagRequest {
754
+ displayName?: string;
755
+ }
756
+ export interface CatalogueTagDefinition {
757
+ slug: string;
758
+ displayName: string;
759
+ }
760
+ export interface CatalogueTagGroupDefinition {
761
+ slug: string;
762
+ displayName: string;
763
+ allowedTargetKinds?: SavedItemKind[];
764
+ tags: CatalogueTagDefinition[];
765
+ }
766
+ export declare function isValidTagSlug(value: unknown): value is string;
767
+ export declare function normalizeTagSlug(value: string): string;
768
+ export declare function parseTagRef(value: string): {
769
+ groupSlug: string;
770
+ tagSlug: string;
771
+ } | null;
772
+ export declare function normalizeTagRef(value: string): string;
642
773
  export declare const ENGAGEMENT_EVENT_TYPE_VALUES: readonly ["VIEW", "LAUNCH", "PLAY", "DOWNLOAD", "LIKE", "UNLIKE", "SAVE", "UNSAVE", "FOLLOW", "UNFOLLOW"];
643
774
  export type EngagementEventType = typeof ENGAGEMENT_EVENT_TYPE_VALUES[number];
644
775
  export declare const ENGAGEMENT_TARGET_KIND_VALUES: readonly ["CREATOR", "APP", "ASSET", "PACK"];
@@ -690,6 +821,7 @@ export interface TrackEngagementEventRequest {
690
821
  creatorUsername: string;
691
822
  itemName?: string;
692
823
  launchContext?: AppLaunchContext;
824
+ promotionToken?: string | null;
693
825
  }
694
826
  export interface TrackEngagementEventResponse {
695
827
  recorded: boolean;
@@ -734,11 +866,12 @@ export interface AssetPackSearchResult {
734
866
  targetPath: string;
735
867
  pack: AssetPackResponse;
736
868
  }
737
- export type SearchResult = CreatorSearchResult | AppSearchResult | AssetSearchResult | AssetPackSearchResult;
869
+ export type SearchResult = CreatorSearchResult | AppSearchResult | AssetSearchResult | AssetSpecSearchResult | AssetPackSearchResult;
738
870
  export interface SearchGroupedResults {
739
871
  creators: CreatorSearchResult[];
740
872
  apps: AppSearchResult[];
741
873
  assets: AssetSearchResult[];
874
+ assetSpecs: AssetSpecSearchResult[];
742
875
  packs: AssetPackSearchResult[];
743
876
  }
744
877
  export interface SearchResponse {
@@ -756,6 +889,11 @@ export interface SearchSuggestResponse {
756
889
  countsByKind: SearchCountsByKind;
757
890
  groups: SearchGroupedResults;
758
891
  }
892
+ export type AssetSpecsResponse = AssetSpecListResponse;
893
+ export type AssetSpecVersionsResponse = AssetSpecVersionsListResponse;
894
+ export interface AssetSpecVersionResponseEnvelope {
895
+ version: AssetSpecVersionResponse;
896
+ }
759
897
  export interface SavedItemMutationResponse {
760
898
  saved: boolean;
761
899
  }
@@ -798,7 +936,7 @@ export interface DeleteContentCommentResponse {
798
936
  export interface CreatorFollowMutationResponse {
799
937
  following: boolean;
800
938
  }
801
- export declare const FREE_CREDIT_OBJECTIVE_VALUES: readonly ["WELCOME", "PLAY_GAME", "FOLLOW_CREATOR", "INVITED", "SHARE_CODE", "ENABLE_PUSH", "CREATE_SONG", "CREATE_IMAGE", "CREATE_3D", "CLI_LOGIN", "PUBLISH_GAME"];
939
+ export declare const FREE_CREDIT_OBJECTIVE_VALUES: readonly ["WELCOME", "PLAY_GAME", "FOLLOW_CREATOR", "INVITED", "SHARE_CODE", "ENABLE_PUSH", "CREATE_SONG", "CREATE_IMAGE", "CREATE_3D", "CLI_LOGIN", "PUBLISH_GAME", "BOOST_GAME"];
802
940
  export type FreeCreditObjectiveKey = typeof FREE_CREDIT_OBJECTIVE_VALUES[number];
803
941
  export declare const FREE_CREDIT_REWARD_STATUS_VALUES: readonly ["INCOMPLETE", "CLAIMABLE", "CLAIMED"];
804
942
  export type FreeCreditRewardStatus = typeof FREE_CREDIT_REWARD_STATUS_VALUES[number];
@@ -1002,6 +1140,7 @@ export interface CreditPack {
1002
1140
  export interface ShopCollection {
1003
1141
  id: string;
1004
1142
  title: string;
1143
+ metadata?: Record<string, unknown> | null;
1005
1144
  items: ShopItem[];
1006
1145
  }
1007
1146
  export type ShopItem = {
@@ -1024,9 +1163,17 @@ export type ShopItem = {
1024
1163
  priceCredits: number;
1025
1164
  owned: boolean;
1026
1165
  creatorUsername: string;
1166
+ } | {
1167
+ type: 'boost_pack';
1168
+ id: string;
1169
+ sku: BoostSku;
1170
+ name: string;
1171
+ units: number;
1172
+ priceCredits: number;
1027
1173
  };
1028
1174
  export interface ShopResponse {
1029
1175
  collections: ShopCollection[];
1176
+ boostBalance?: number;
1030
1177
  }
1031
1178
  export interface AdminCreditPack {
1032
1179
  sku: string;
@@ -1051,7 +1198,7 @@ export interface CreditPackResponse {
1051
1198
  export type CreditTransactionDirection = 'IN' | 'OUT';
1052
1199
  export type CreditTransactionKind = 'CONSUMABLE' | 'ENTITLEMENT';
1053
1200
  export type CreditTransactionStatus = 'PENDING' | 'AUTHORIZED' | 'CONSUMED' | 'GRANTED' | 'CANCELLED';
1054
- export type CreditTransactionType = 'CREDIT_PACK' | 'ASSET' | 'IN_APP' | 'AI_SERVICE' | 'ADMIN_GRANT' | 'FREE_CREDIT';
1201
+ export type CreditTransactionType = 'CREDIT_PACK' | 'ASSET' | 'IN_APP' | 'AI_SERVICE' | 'ADMIN_GRANT' | 'FREE_CREDIT' | 'AD_PAYOUT' | 'BOOST_PURCHASE';
1055
1202
  export interface CreditTransaction {
1056
1203
  id: number;
1057
1204
  sourceId: number;
@@ -1067,6 +1214,7 @@ export interface CreditTransaction {
1067
1214
  netAmount: number;
1068
1215
  buyer: string;
1069
1216
  seller: string;
1217
+ metadata?: Record<string, unknown> | null;
1070
1218
  createdAt: string;
1071
1219
  updatedAt: string;
1072
1220
  }
@@ -1088,9 +1236,200 @@ export interface AdminCreditTransaction {
1088
1236
  buyer: string;
1089
1237
  sellerId: number;
1090
1238
  seller: string;
1239
+ metadata?: Record<string, unknown> | null;
1240
+ createdAt: string;
1241
+ updatedAt: string;
1242
+ }
1243
+ export declare const BOOST_SKU_VALUES: readonly ["boost_1", "boost_3", "boost_7", "boost_14", "boost_31"];
1244
+ export type BoostSku = typeof BOOST_SKU_VALUES[number];
1245
+ export interface BoostOffer {
1246
+ sku: BoostSku;
1247
+ displayName: string;
1248
+ units: number;
1249
+ priceCredits: number;
1250
+ durationHours: number;
1251
+ }
1252
+ export interface BoostBalanceResponse {
1253
+ balance: number;
1254
+ offers: BoostOffer[];
1255
+ }
1256
+ export interface BoostPurchaseRequest {
1257
+ sku: BoostSku;
1258
+ quantity?: number;
1259
+ }
1260
+ export interface BoostEligibleGameSummary {
1261
+ name: string;
1262
+ displayName: string;
1263
+ creatorUsername: string;
1264
+ type: AppType;
1265
+ }
1266
+ export interface BoostPurchaseResponse {
1267
+ offer: BoostOffer;
1268
+ quantity: number;
1269
+ unitsAdded: number;
1270
+ boostBalance: number;
1271
+ creditBalance: number;
1272
+ transaction: CreditTransaction;
1273
+ eligibleGameCount: number;
1274
+ eligibleGame: BoostEligibleGameSummary | null;
1275
+ }
1276
+ export interface BoostActivationRequest {
1277
+ units?: number;
1278
+ }
1279
+ export interface BoostRunSummary {
1280
+ id: number;
1281
+ status: 'ACTIVE' | 'EXPIRED' | 'CANCELLED';
1282
+ startedAt: string;
1283
+ endsAt: string;
1284
+ consumedUnits: number;
1285
+ deliveredImpressionCount: number;
1286
+ promotedDetailViewCount: number;
1287
+ promotedPlayCount: number;
1091
1288
  createdAt: string;
1092
1289
  updatedAt: string;
1093
1290
  }
1291
+ export interface BoostStatusResponse {
1292
+ app: AppResponse;
1293
+ boostsAvailable: number;
1294
+ isActive: boolean;
1295
+ boostedUntil: string | null;
1296
+ currentRun: BoostRunSummary | null;
1297
+ totals: {
1298
+ deliveredImpressions: number;
1299
+ promotedDetailViews: number;
1300
+ promotedPlays: number;
1301
+ };
1302
+ }
1303
+ export interface BoostHistoryResponse {
1304
+ runs: BoostRunSummary[];
1305
+ }
1306
+ export interface BoostReportQuery {
1307
+ days?: number;
1308
+ startDateUtc?: string;
1309
+ endDateUtc?: string;
1310
+ }
1311
+ export interface BoostReportPoint {
1312
+ dateUtc: string;
1313
+ provisional: boolean;
1314
+ regularDetailViews: number;
1315
+ promotedDetailViews: number;
1316
+ regularPlays: number;
1317
+ promotedPlays: number;
1318
+ boostedHomeViews: number;
1319
+ adViews: number;
1320
+ boostedHomePlays: number;
1321
+ adPlays: number;
1322
+ interstitialImpressions: number;
1323
+ rewardedImpressions: number;
1324
+ creditedImpressions: number;
1325
+ adEarnings: number;
1326
+ }
1327
+ export interface BoostReportResponse {
1328
+ appId: number;
1329
+ days: BoostReportPoint[];
1330
+ }
1331
+ export interface CreatorEarningsAppDayRow {
1332
+ appId: number;
1333
+ appName: string;
1334
+ creatorUsername: string;
1335
+ format: 'interstitial' | 'rewarded';
1336
+ amount: number;
1337
+ servedCount: number;
1338
+ creditedCount: number;
1339
+ settled: boolean;
1340
+ }
1341
+ export interface CreatorEarningsDay {
1342
+ dateUtc: string;
1343
+ provisional: boolean;
1344
+ totalAmount: number;
1345
+ interstitialAmount: number;
1346
+ rewardedAmount: number;
1347
+ servedCount: number;
1348
+ creditedCount: number;
1349
+ apps: CreatorEarningsAppDayRow[];
1350
+ }
1351
+ export interface CreatorEarningsSummary {
1352
+ provisionalToday: number;
1353
+ settledLast7Days: number;
1354
+ settledLast30Days: number;
1355
+ boostSpendLast30Days: number;
1356
+ }
1357
+ export interface CreatorEarningsResponse {
1358
+ summary: CreatorEarningsSummary;
1359
+ days: CreatorEarningsDay[];
1360
+ }
1361
+ export type AdFormat = 'INTERSTITIAL' | 'REWARDED';
1362
+ export type AdLoadStatus = 'ready' | 'no_fill' | 'rate_limited' | 'blocked';
1363
+ export type AdInterstitialShowStatus = 'dismissed' | 'not_ready' | 'expired';
1364
+ export type AdRewardedShowStatus = 'completed' | 'dismissed' | 'not_ready' | 'expired';
1365
+ export type AdTargetType = 'BOOSTED_APP' | 'HOUSE_AVATAR' | 'HOUSE_GAME' | 'HOUSE_CREATE_ACCOUNT' | 'HOUSE_INVITE_FRIENDS';
1366
+ export interface AdCreative {
1367
+ targetType: AdTargetType;
1368
+ title: string;
1369
+ body: string | null;
1370
+ ctaLabel: string | null;
1371
+ targetHref: string;
1372
+ imageUrl: string | null;
1373
+ promotedApp?: AppResponse | null;
1374
+ }
1375
+ export type AdLoadResult = {
1376
+ status: 'ready';
1377
+ } | {
1378
+ status: 'no_fill';
1379
+ } | {
1380
+ status: 'rate_limited';
1381
+ retryAfterSeconds: number;
1382
+ } | {
1383
+ status: 'blocked';
1384
+ reason: string;
1385
+ };
1386
+ export type AdLoadResponse = {
1387
+ status: 'ready';
1388
+ format: AdFormat;
1389
+ reservationId: string;
1390
+ creative: AdCreative;
1391
+ } | {
1392
+ status: 'no_fill';
1393
+ format: AdFormat;
1394
+ } | {
1395
+ status: 'rate_limited';
1396
+ format: AdFormat;
1397
+ retryAfterSeconds: number;
1398
+ } | {
1399
+ status: 'blocked';
1400
+ format: AdFormat;
1401
+ reason: string;
1402
+ };
1403
+ export interface AdShowRequest {
1404
+ reservationId: string;
1405
+ viewedMs: number;
1406
+ }
1407
+ export type AdInterstitialShowResponse = {
1408
+ status: 'dismissed';
1409
+ reservationId: string;
1410
+ impressionId: number;
1411
+ } | {
1412
+ status: 'not_ready';
1413
+ reservationId: null;
1414
+ impressionId?: null;
1415
+ } | {
1416
+ status: 'expired';
1417
+ reservationId: string | null;
1418
+ impressionId?: null;
1419
+ };
1420
+ export type AdRewardedShowResponse = {
1421
+ status: 'completed' | 'dismissed';
1422
+ reservationId: string;
1423
+ impressionId: number;
1424
+ } | {
1425
+ status: 'not_ready';
1426
+ reservationId: null;
1427
+ impressionId?: null;
1428
+ } | {
1429
+ status: 'expired';
1430
+ reservationId: string | null;
1431
+ impressionId?: null;
1432
+ };
1094
1433
  export interface AdminCreditTransactionsResponse {
1095
1434
  transactions: AdminCreditTransaction[];
1096
1435
  pagination: PaginationMeta;
@@ -1123,6 +1462,7 @@ export interface IapPurchaseRequest {
1123
1462
  displayName: string;
1124
1463
  priceCredits: number;
1125
1464
  }
1465
+ export declare const MUSIC_PROMPT_MAX_LENGTH = 4000;
1126
1466
  export type AiGenerationType = 'TEXT' | 'JSON' | 'IMAGE' | 'MUSIC' | 'SFX' | 'VIDEO' | 'MODEL_3D';
1127
1467
  export type AiGenerationStatus = 'SUCCESS' | 'FAILURE';
1128
1468
  export type AiGenerationPaidBy = 'USER' | 'CREATOR';