@crowdedkingdoms/crowdyjs 13.9.0 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/MIGRATION.md +44 -0
  2. package/README.md +68 -33
  3. package/dist/binary-relay.d.ts +1 -1
  4. package/dist/binary-relay.js +1 -1
  5. package/dist/crowdy-client.d.ts +29 -34
  6. package/dist/crowdy-client.d.ts.map +1 -1
  7. package/dist/crowdy-client.js +42 -40
  8. package/dist/domains/appAccess.d.ts +3 -3
  9. package/dist/domains/appAccess.d.ts.map +1 -1
  10. package/dist/domains/appAccess.js +16 -16
  11. package/dist/domains/apps.d.ts +4 -8
  12. package/dist/domains/apps.d.ts.map +1 -1
  13. package/dist/domains/apps.js +19 -23
  14. package/dist/domains/auth.d.ts +1 -1
  15. package/dist/domains/billing.d.ts +3 -3
  16. package/dist/domains/billing.d.ts.map +1 -1
  17. package/dist/domains/billing.js +9 -9
  18. package/dist/domains/controlPlane.d.ts +2 -2
  19. package/dist/domains/controlPlane.d.ts.map +1 -1
  20. package/dist/domains/controlPlane.js +4 -4
  21. package/dist/domains/discovery.d.ts +50 -0
  22. package/dist/domains/discovery.d.ts.map +1 -0
  23. package/dist/domains/discovery.js +35 -0
  24. package/dist/domains/marketplace.d.ts +4 -5
  25. package/dist/domains/marketplace.d.ts.map +1 -1
  26. package/dist/domains/marketplace.js +25 -26
  27. package/dist/domains/organizations.d.ts +3 -3
  28. package/dist/domains/organizations.d.ts.map +1 -1
  29. package/dist/domains/organizations.js +22 -22
  30. package/dist/domains/payments.d.ts +3 -3
  31. package/dist/domains/payments.d.ts.map +1 -1
  32. package/dist/domains/payments.js +11 -11
  33. package/dist/domains/platform.d.ts +5 -6
  34. package/dist/domains/platform.d.ts.map +1 -1
  35. package/dist/domains/platform.js +6 -7
  36. package/dist/domains/portal.d.ts +19 -2
  37. package/dist/domains/portal.d.ts.map +1 -1
  38. package/dist/domains/portal.js +12 -12
  39. package/dist/domains/quotas.d.ts +3 -3
  40. package/dist/domains/quotas.d.ts.map +1 -1
  41. package/dist/domains/quotas.js +8 -8
  42. package/dist/domains/serverStatus.d.ts +1 -2
  43. package/dist/domains/serverStatus.d.ts.map +1 -1
  44. package/dist/domains/serverStatus.js +1 -2
  45. package/dist/domains/sharedEnvironment.d.ts +3 -3
  46. package/dist/domains/sharedEnvironment.d.ts.map +1 -1
  47. package/dist/domains/sharedEnvironment.js +15 -15
  48. package/dist/domains/udp.d.ts +1 -1
  49. package/dist/domains/udp.js +1 -1
  50. package/dist/domains/usage.d.ts +2 -2
  51. package/dist/domains/usage.d.ts.map +1 -1
  52. package/dist/domains/usage.js +5 -5
  53. package/dist/domains/users.d.ts +1 -1
  54. package/dist/domains/users.js +1 -1
  55. package/dist/generated/graphql.d.ts +65 -16
  56. package/dist/generated/graphql.d.ts.map +1 -1
  57. package/dist/generated/graphql.js +1 -0
  58. package/dist/index.d.ts +10 -13
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +12 -16
  61. package/dist/kit/decks.d.ts +1 -1
  62. package/dist/kit/npcs.d.ts +2 -2
  63. package/dist/kit/npcs.d.ts.map +1 -1
  64. package/dist/kit/social.d.ts.map +1 -1
  65. package/dist/kit/worldsim.d.ts +1 -1
  66. package/dist/rediscover.d.ts +7 -3
  67. package/dist/rediscover.d.ts.map +1 -1
  68. package/dist/rediscover.js +7 -3
  69. package/dist/session.d.ts +21 -0
  70. package/dist/session.d.ts.map +1 -1
  71. package/dist/session.js +23 -0
  72. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { AppAccessTiersDocument, MyAppAccessDocument, AppUserAccessByAppDocument
3
3
  * App access tiers + per-user access grants — exposed as `client.appAccess`
4
4
  * (and grouped under `client.admin`).
5
5
  *
6
- * Targets the **management-api**. Tiers define the runtime-permission bundles
6
+ * Part of the management surface. Tiers define the runtime-permission bundles
7
7
  * (`access`, `teleport`, `update_voxel_data`, `use_voice_chat`, ...) a player
8
8
  * gets; grants attach a user to a tier. New apps auto-provision an open default
9
9
  * tier, so most players need no explicit grant.
@@ -16,8 +16,8 @@ import { AppAccessTiersDocument, MyAppAccessDocument, AppUserAccessByAppDocument
16
16
  * per the permission notes above.
17
17
  */
18
18
  export class AppAccessAPI {
19
- constructor(management) {
20
- this.management = management;
19
+ constructor(api) {
20
+ this.api = api;
21
21
  }
22
22
  /**
23
23
  * List the access tiers defined for an app. **Public.**
@@ -26,7 +26,7 @@ export class AppAccessAPI {
26
26
  * @returns The app's tiers, ordered.
27
27
  */
28
28
  async tiers(appId) {
29
- const data = await this.management.request(AppAccessTiersDocument, {
29
+ const data = await this.api.request(AppAccessTiersDocument, {
30
30
  appId,
31
31
  });
32
32
  return data.appAccessTiers;
@@ -39,7 +39,7 @@ export class AppAccessAPI {
39
39
  * @returns The caller's {@link AppUserAccess}, or `null`.
40
40
  */
41
41
  async myAccess(appId) {
42
- const data = await this.management.request(MyAppAccessDocument, { appId });
42
+ const data = await this.api.request(MyAppAccessDocument, { appId });
43
43
  return data.myAppAccess;
44
44
  }
45
45
  /**
@@ -52,7 +52,7 @@ export class AppAccessAPI {
52
52
  * @returns The matching access records.
53
53
  */
54
54
  async usersByApp(appId, opts = {}) {
55
- const data = await this.management.request(AppUserAccessByAppDocument, {
55
+ const data = await this.api.request(AppUserAccessByAppDocument, {
56
56
  appId,
57
57
  status: opts.status,
58
58
  limit: opts.limit,
@@ -71,7 +71,7 @@ export class AppAccessAPI {
71
71
  * @returns An {@link AppUserAccessConnection}.
72
72
  */
73
73
  async usersByAppConnection(args) {
74
- const data = await this.management.request(AppUserAccessConnectionDocument, args);
74
+ const data = await this.api.request(AppUserAccessConnectionDocument, args);
75
75
  return data.appUserAccessConnection;
76
76
  }
77
77
  /**
@@ -82,7 +82,7 @@ export class AppAccessAPI {
82
82
  * @returns The runtime permission keys.
83
83
  */
84
84
  async runtimePermissions() {
85
- const data = await this.management.request(RuntimePermissionsDocument);
85
+ const data = await this.api.request(RuntimePermissionsDocument);
86
86
  return data.runtimePermissions;
87
87
  }
88
88
  /**
@@ -94,7 +94,7 @@ export class AppAccessAPI {
94
94
  * @returns The candidate users (id + email/gamertag where known).
95
95
  */
96
96
  async grantMemberCandidates(appId) {
97
- const data = await this.management.request(AppGrantMemberCandidatesDocument, { appId });
97
+ const data = await this.api.request(AppGrantMemberCandidatesDocument, { appId });
98
98
  return data.appGrantMemberCandidates;
99
99
  }
100
100
  /**
@@ -106,7 +106,7 @@ export class AppAccessAPI {
106
106
  * @returns The caller's new {@link AppUserAccess} record.
107
107
  */
108
108
  async claimFree(appId) {
109
- const data = await this.management.request(ClaimFreeAppAccessDocument, {
109
+ const data = await this.api.request(ClaimFreeAppAccessDocument, {
110
110
  appId,
111
111
  });
112
112
  return data.claimFreeAppAccess;
@@ -119,7 +119,7 @@ export class AppAccessAPI {
119
119
  * @returns The caller's new {@link AppUserAccess} record.
120
120
  */
121
121
  async grantMine(appId) {
122
- const data = await this.management.request(GrantMyAppAccessDocument, {
122
+ const data = await this.api.request(GrantMyAppAccessDocument, {
123
123
  appId,
124
124
  });
125
125
  return data.grantMyAppAccess;
@@ -133,7 +133,7 @@ export class AppAccessAPI {
133
133
  * @returns The created tier.
134
134
  */
135
135
  async createTier(input) {
136
- const data = await this.management.request(CreateAccessTierDocument, {
136
+ const data = await this.api.request(CreateAccessTierDocument, {
137
137
  input,
138
138
  });
139
139
  return data.createAccessTier;
@@ -147,7 +147,7 @@ export class AppAccessAPI {
147
147
  * @returns The updated tier.
148
148
  */
149
149
  async updateTier(tierId, input) {
150
- const data = await this.management.request(UpdateAccessTierDocument, {
150
+ const data = await this.api.request(UpdateAccessTierDocument, {
151
151
  tierId,
152
152
  input,
153
153
  });
@@ -161,7 +161,7 @@ export class AppAccessAPI {
161
161
  * @returns The archived tier's new status.
162
162
  */
163
163
  async archiveTier(tierId) {
164
- const data = await this.management.request(ArchiveAccessTierDocument, {
164
+ const data = await this.api.request(ArchiveAccessTierDocument, {
165
165
  tierId,
166
166
  });
167
167
  return data.archiveAccessTier;
@@ -175,7 +175,7 @@ export class AppAccessAPI {
175
175
  * @returns The created/updated access record.
176
176
  */
177
177
  async grant(input) {
178
- const data = await this.management.request(GrantAppAccessDocument, {
178
+ const data = await this.api.request(GrantAppAccessDocument, {
179
179
  input,
180
180
  });
181
181
  return data.grantAppAccess;
@@ -189,7 +189,7 @@ export class AppAccessAPI {
189
189
  * @returns `true` on success.
190
190
  */
191
191
  async revoke(appId, userId) {
192
- const data = await this.management.request(RevokeAppAccessDocument, {
192
+ const data = await this.api.request(RevokeAppAccessDocument, {
193
193
  appId,
194
194
  userId,
195
195
  });
@@ -30,7 +30,7 @@ export interface AppRoute {
30
30
  /**
31
31
  * App discovery & game-api routing — exposed as `client.apps`.
32
32
  *
33
- * Targets the **management-api** (every call routes to `managementUrl`), where
33
+ * Part of the management surface, where
34
34
  * the apps catalog lives. After the database split an app may be served by its
35
35
  * own per-tenant cks-game-api; the catalog returns each app's `gameApiUrl` so
36
36
  * you can build a per-app `CrowdyClient` against the correct endpoint (see
@@ -45,17 +45,13 @@ export interface AppRoute {
45
45
  *
46
46
  * @example
47
47
  * ```ts
48
- * const base = createCrowdyClient({
49
- * managementUrl: 'https://api.example.com',
50
- * httpUrl: 'https://legacy-game-api.example.com', // pre-split fallback
51
- * });
48
+ * const base = createCrowdyClient({ httpUrl: 'https://api.example.com/graphql' });
52
49
  * await base.auth.login({ email, password });
53
50
  *
54
51
  * const route = await base.apps.routeFor(appId);
55
52
  * if (route.gameApiUrl) {
56
53
  * // route gameplay to the app's resolved game-api endpoint
57
54
  * const perAppClient = createCrowdyClient({
58
- * managementUrl: 'https://api.example.com',
59
55
  * httpUrl: route.gameApiUrl,
60
56
  * wsUrl: route.gameApiUrl.replace(/^http/, 'ws'),
61
57
  * tokenStore: base.session.tokenStore,
@@ -64,8 +60,8 @@ export interface AppRoute {
64
60
  * ```
65
61
  */
66
62
  export declare class AppsAPI {
67
- private readonly management;
68
- constructor(management: GraphQLClient);
63
+ private readonly api;
64
+ constructor(api: GraphQLClient);
69
65
  /**
70
66
  * Read the app's player-code admission mode. Requires
71
67
  * `view_compute_diagnostics`.
@@ -1 +1 @@
1
- {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/domains/apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/domains/apps.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ function appRouteFromAppRow(row) {
15
15
  /**
16
16
  * App discovery & game-api routing — exposed as `client.apps`.
17
17
  *
18
- * Targets the **management-api** (every call routes to `managementUrl`), where
18
+ * Part of the management surface, where
19
19
  * the apps catalog lives. After the database split an app may be served by its
20
20
  * own per-tenant cks-game-api; the catalog returns each app's `gameApiUrl` so
21
21
  * you can build a per-app `CrowdyClient` against the correct endpoint (see
@@ -30,17 +30,13 @@ function appRouteFromAppRow(row) {
30
30
  *
31
31
  * @example
32
32
  * ```ts
33
- * const base = createCrowdyClient({
34
- * managementUrl: 'https://api.example.com',
35
- * httpUrl: 'https://legacy-game-api.example.com', // pre-split fallback
36
- * });
33
+ * const base = createCrowdyClient({ httpUrl: 'https://api.example.com/graphql' });
37
34
  * await base.auth.login({ email, password });
38
35
  *
39
36
  * const route = await base.apps.routeFor(appId);
40
37
  * if (route.gameApiUrl) {
41
38
  * // route gameplay to the app's resolved game-api endpoint
42
39
  * const perAppClient = createCrowdyClient({
43
- * managementUrl: 'https://api.example.com',
44
40
  * httpUrl: route.gameApiUrl,
45
41
  * wsUrl: route.gameApiUrl.replace(/^http/, 'ws'),
46
42
  * tokenStore: base.session.tokenStore,
@@ -49,15 +45,15 @@ function appRouteFromAppRow(row) {
49
45
  * ```
50
46
  */
51
47
  export class AppsAPI {
52
- constructor(management) {
53
- this.management = management;
48
+ constructor(api) {
49
+ this.api = api;
54
50
  }
55
51
  /**
56
52
  * Read the app's player-code admission mode. Requires
57
53
  * `view_compute_diagnostics`.
58
54
  */
59
55
  async codeAdmissionMode(appId) {
60
- const data = await this.management.request(AppCodeAdmissionModeDocument, {
56
+ const data = await this.api.request(AppCodeAdmissionModeDocument, {
61
57
  appId,
62
58
  });
63
59
  return data.appCodeAdmissionMode;
@@ -72,7 +68,7 @@ export class AppsAPI {
72
68
  appId,
73
69
  includeRevoked,
74
70
  };
75
- const data = await this.management.request(AppCodeAdmissionsDocument, variables);
71
+ const data = await this.api.request(AppCodeAdmissionsDocument, variables);
76
72
  return data.appCodeAdmissions;
77
73
  }
78
74
  /**
@@ -81,7 +77,7 @@ export class AppsAPI {
81
77
  * `manage_compute`.
82
78
  */
83
79
  async setCodeAdmissionMode(appId, mode) {
84
- const data = await this.management.request(SetAppCodeAdmissionModeDocument, {
80
+ const data = await this.api.request(SetAppCodeAdmissionModeDocument, {
85
81
  appId,
86
82
  mode,
87
83
  });
@@ -92,7 +88,7 @@ export class AppsAPI {
92
88
  * controls execution only and never grants source visibility.
93
89
  */
94
90
  async admitCode(input) {
95
- const data = await this.management.request(AdmitAppCodeDocument, { input });
91
+ const data = await this.api.request(AdmitAppCodeDocument, { input });
96
92
  return data.admitAppCode;
97
93
  }
98
94
  /**
@@ -100,7 +96,7 @@ export class AppsAPI {
100
96
  * change, then drains affected server modules and blocks client artifacts.
101
97
  */
102
98
  async revokeCodeAdmission(appId, admissionId) {
103
- const data = await this.management.request(RevokeAppCodeAdmissionDocument, { appId, admissionId });
99
+ const data = await this.api.request(RevokeAppCodeAdmissionDocument, { appId, admissionId });
104
100
  return data.revokeAppCodeAdmission;
105
101
  }
106
102
  /**
@@ -114,7 +110,7 @@ export class AppsAPI {
114
110
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` if the caller is not signed in.
115
111
  */
116
112
  async app(appId) {
117
- const data = await this.management.request(AppDocument, { appId });
113
+ const data = await this.api.request(AppDocument, { appId });
118
114
  return data.app;
119
115
  }
120
116
  /**
@@ -131,7 +127,7 @@ export class AppsAPI {
131
127
  * @throws {CrowdyGraphQLError} on transport/validation failures.
132
128
  */
133
129
  async appBySlug(orgSlug, appSlug) {
134
- const data = await this.management.request(AppBySlugDocument, { orgSlug, appSlug });
130
+ const data = await this.api.request(AppBySlugDocument, { orgSlug, appSlug });
135
131
  return data.appBySlug;
136
132
  }
137
133
  /**
@@ -144,7 +140,7 @@ export class AppsAPI {
144
140
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` if the caller is not signed in.
145
141
  */
146
142
  async myApps() {
147
- const data = await this.management.request(MyAppsDocument, {});
143
+ const data = await this.api.request(MyAppsDocument, {});
148
144
  return data.myApps;
149
145
  }
150
146
  /**
@@ -179,7 +175,7 @@ export class AppsAPI {
179
175
  * @throws {CrowdyGraphQLError} `UNAUTHENTICATED` / `FORBIDDEN`.
180
176
  */
181
177
  async forOrg(orgSlug) {
182
- const data = await this.management.request(AppsForOrgDocument, { orgSlug });
178
+ const data = await this.api.request(AppsForOrgDocument, { orgSlug });
183
179
  return data.appsForOrg;
184
180
  }
185
181
  /**
@@ -193,7 +189,7 @@ export class AppsAPI {
193
189
  * large catalogs; the offset args here are deprecated server-side.
194
190
  */
195
191
  async marketplace(opts = {}) {
196
- const data = await this.management.request(MarketplaceAppsDocument, opts);
192
+ const data = await this.api.request(MarketplaceAppsDocument, opts);
197
193
  return data.apps;
198
194
  }
199
195
  /**
@@ -205,7 +201,7 @@ export class AppsAPI {
205
201
  * @returns An apps connection.
206
202
  */
207
203
  async marketplaceConnection(args = {}) {
208
- const data = await this.management.request(AppsConnectionDocument, args);
204
+ const data = await this.api.request(AppsConnectionDocument, args);
209
205
  return data.appsConnection;
210
206
  }
211
207
  /**
@@ -219,7 +215,7 @@ export class AppsAPI {
219
215
  * `manage_apps`, or `BAD_USER_INPUT` (e.g. duplicate slug).
220
216
  */
221
217
  async create(input) {
222
- const data = await this.management.request(CreateAppDocument, { input });
218
+ const data = await this.api.request(CreateAppDocument, { input });
223
219
  return data.createApp;
224
220
  }
225
221
  /**
@@ -232,7 +228,7 @@ export class AppsAPI {
232
228
  * `manage_apps`.
233
229
  */
234
230
  async update(appId, input) {
235
- const data = await this.management.request(UpdateAppDocument, {
231
+ const data = await this.api.request(UpdateAppDocument, {
236
232
  appId,
237
233
  input,
238
234
  });
@@ -247,7 +243,7 @@ export class AppsAPI {
247
243
  * `manage_apps`.
248
244
  */
249
245
  async archive(appId) {
250
- const data = await this.management.request(ArchiveAppDocument, { appId });
246
+ const data = await this.api.request(ArchiveAppDocument, { appId });
251
247
  return data.archiveApp;
252
248
  }
253
249
  /**
@@ -259,7 +255,7 @@ export class AppsAPI {
259
255
  * @throws {CrowdyGraphQLError} `FORBIDDEN` for non-super-admins.
260
256
  */
261
257
  async setVisibility(appId, visibility) {
262
- const data = await this.management.request(SetAppVisibilityDocument, {
258
+ const data = await this.api.request(SetAppVisibilityDocument, {
263
259
  appId,
264
260
  visibility,
265
261
  });
@@ -9,7 +9,7 @@ import type { AuthState } from '../auth-state.js';
9
9
  * SESSION token (management-plane), which is stored on the shared session state
10
10
  * automatically. Gameplay tokens are minted separately via `client.portal`.
11
11
  *
12
- * Targets the **management-api** (`managementUrl`).
12
+ * Part of the management surface.
13
13
  *
14
14
  * **Public (no session):** {@link requestLoginLink}, {@link completeLoginLink},
15
15
  * {@link socialLoginStart}, {@link socialLoginComplete}, {@link devLogin},
@@ -4,7 +4,7 @@ import { type WalletBalanceQuery, type WalletTransactionsQuery, type WalletTrans
4
4
  * Org wallet + per-app budgets — exposed as `client.billing` (and grouped under
5
5
  * `client.admin`).
6
6
  *
7
- * Targets the **management-api**. Reads require the `view_billing` org/app
7
+ * Part of the management surface. Reads require the `view_billing` org/app
8
8
  * permission; {@link setAppBudget} requires `manage_billing`. Monetary values
9
9
  * are minor currency units (`*Cents`) and serialized as `BigInt` decimal
10
10
  * strings.
@@ -13,8 +13,8 @@ import { type WalletBalanceQuery, type WalletTransactionsQuery, type WalletTrans
13
13
  * per the permission notes above.
14
14
  */
15
15
  export declare class BillingAPI {
16
- private readonly management;
17
- constructor(management: GraphQLClient);
16
+ private readonly api;
17
+ constructor(api: GraphQLClient);
18
18
  /**
19
19
  * Return an organization's wallet balance. Requires the `view_billing` org
20
20
  * permission.
@@ -1 +1 @@
1
- {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/domains/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAC/C,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAEtD;;;;;;OAMG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAK/C;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7C,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IASzD;;;;;;;OAOG;IACG,SAAS,CACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAQvC;;;;;;OAMG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAKvE;;;;;;;;;OASG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAShD;;;;;;;;OAQG;IACG,4BAA4B,CAChC,IAAI,EAAE,0CAA0C,GAC/C,OAAO,CACR,iCAAiC,CAAC,8BAA8B,CAAC,CAClE;CAWF"}
1
+ {"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/domains/billing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAC/C,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;;;;OAMG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAK/C;;;;;;;OAOG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC7C,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IASzD;;;;;;;OAOG;IACG,SAAS,CACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAQvC;;;;;;OAMG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAKvE;;;;;;;;;OASG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAShD;;;;;;;;OAQG;IACG,4BAA4B,CAChC,IAAI,EAAE,0CAA0C,GAC/C,OAAO,CACR,iCAAiC,CAAC,8BAA8B,CAAC,CAClE;CAWF"}
@@ -3,7 +3,7 @@ import { WalletBalanceDocument, WalletTransactionsDocument, WalletTransactionsCo
3
3
  * Org wallet + per-app budgets — exposed as `client.billing` (and grouped under
4
4
  * `client.admin`).
5
5
  *
6
- * Targets the **management-api**. Reads require the `view_billing` org/app
6
+ * Part of the management surface. Reads require the `view_billing` org/app
7
7
  * permission; {@link setAppBudget} requires `manage_billing`. Monetary values
8
8
  * are minor currency units (`*Cents`) and serialized as `BigInt` decimal
9
9
  * strings.
@@ -12,8 +12,8 @@ import { WalletBalanceDocument, WalletTransactionsDocument, WalletTransactionsCo
12
12
  * per the permission notes above.
13
13
  */
14
14
  export class BillingAPI {
15
- constructor(management) {
16
- this.management = management;
15
+ constructor(api) {
16
+ this.api = api;
17
17
  }
18
18
  /**
19
19
  * Return an organization's wallet balance. Requires the `view_billing` org
@@ -23,7 +23,7 @@ export class BillingAPI {
23
23
  * @returns The wallet balance (cents as a decimal string).
24
24
  */
25
25
  async walletBalance(orgId) {
26
- const data = await this.management.request(WalletBalanceDocument, { orgId });
26
+ const data = await this.api.request(WalletBalanceDocument, { orgId });
27
27
  return data.walletBalance;
28
28
  }
29
29
  /**
@@ -35,7 +35,7 @@ export class BillingAPI {
35
35
  * @returns The wallet transactions.
36
36
  */
37
37
  async walletTransactions(orgId, opts = {}) {
38
- const data = await this.management.request(WalletTransactionsDocument, {
38
+ const data = await this.api.request(WalletTransactionsDocument, {
39
39
  orgId,
40
40
  limit: opts.limit,
41
41
  offset: opts.offset,
@@ -51,7 +51,7 @@ export class BillingAPI {
51
51
  * @returns The app budget, or `null` if unset.
52
52
  */
53
53
  async appBudget(orgId, appId) {
54
- const data = await this.management.request(AppBudgetDocument, {
54
+ const data = await this.api.request(AppBudgetDocument, {
55
55
  orgId,
56
56
  appId,
57
57
  });
@@ -65,7 +65,7 @@ export class BillingAPI {
65
65
  * @returns The app budgets.
66
66
  */
67
67
  async appBudgets(orgId) {
68
- const data = await this.management.request(AppBudgetsDocument, { orgId });
68
+ const data = await this.api.request(AppBudgetsDocument, { orgId });
69
69
  return data.appBudgets;
70
70
  }
71
71
  /**
@@ -79,7 +79,7 @@ export class BillingAPI {
79
79
  * @returns The updated app budget.
80
80
  */
81
81
  async setAppBudget(orgId, appId, monthlyLimitCents) {
82
- const data = await this.management.request(SetAppBudgetDocument, {
82
+ const data = await this.api.request(SetAppBudgetDocument, {
83
83
  orgId,
84
84
  appId,
85
85
  monthlyLimitCents,
@@ -96,7 +96,7 @@ export class BillingAPI {
96
96
  * @returns A wallet-transactions connection.
97
97
  */
98
98
  async walletTransactionsConnection(args) {
99
- const data = await this.management.request(WalletTransactionsConnectionDocument, args);
99
+ const data = await this.api.request(WalletTransactionsConnectionDocument, args);
100
100
  return data.walletTransactionsConnection;
101
101
  }
102
102
  }
@@ -14,8 +14,8 @@ import { type CpComputePlatformCeilingsQuery, type CpSetComputePlatformCeilingsM
14
14
  * when the caller is not an operator.
15
15
  */
16
16
  export declare class ControlPlaneAPI {
17
- private readonly management;
18
- constructor(management: GraphQLClient);
17
+ private readonly api;
18
+ constructor(api: GraphQLClient);
19
19
  /**
20
20
  * The platform-wide compute ceilings (max modules, tick rates, fuel,
21
21
  * memory, run time, db-op and egress budgets).
@@ -1 +1 @@
1
- {"version":3,"file":"controlPlane.d.ts","sourceRoot":"","sources":["../../src/domains/controlPlane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAGL,KAAK,8BAA8B,EACnC,KAAK,oCAAoC,EACzC,KAAK,iCAAiC,EACvC,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa;IAEtD;;;;;OAKG;IACG,uBAAuB,IAAI,OAAO,CACtC,8BAA8B,CAAC,2BAA2B,CAAC,CAC5D;IAOD;;;;;;;;;OASG;IACG,0BAA0B,CAC9B,KAAK,EAAE,iCAAiC,GACvC,OAAO,CACR,oCAAoC,CAAC,8BAA8B,CAAC,CACrE;CAOF"}
1
+ {"version":3,"file":"controlPlane.d.ts","sourceRoot":"","sources":["../../src/domains/controlPlane.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAGL,KAAK,8BAA8B,EACnC,KAAK,oCAAoC,EACzC,KAAK,iCAAiC,EACvC,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;;;OAKG;IACG,uBAAuB,IAAI,OAAO,CACtC,8BAA8B,CAAC,2BAA2B,CAAC,CAC5D;IAOD;;;;;;;;;OASG;IACG,0BAA0B,CAC9B,KAAK,EAAE,iCAAiC,GACvC,OAAO,CACR,oCAAoC,CAAC,8BAA8B,CAAC,CACrE;CAOF"}
@@ -13,8 +13,8 @@ import { CpComputePlatformCeilingsDocument, CpSetComputePlatformCeilingsDocument
13
13
  * when the caller is not an operator.
14
14
  */
15
15
  export class ControlPlaneAPI {
16
- constructor(management) {
17
- this.management = management;
16
+ constructor(api) {
17
+ this.api = api;
18
18
  }
19
19
  /**
20
20
  * The platform-wide compute ceilings (max modules, tick rates, fuel,
@@ -23,7 +23,7 @@ export class ControlPlaneAPI {
23
23
  * @returns The stored ceilings row.
24
24
  */
25
25
  async computePlatformCeilings() {
26
- const data = await this.management.request(CpComputePlatformCeilingsDocument);
26
+ const data = await this.api.request(CpComputePlatformCeilingsDocument);
27
27
  return data.cpComputePlatformCeilings;
28
28
  }
29
29
  /**
@@ -37,7 +37,7 @@ export class ControlPlaneAPI {
37
37
  * @returns The stored ceilings after the patch.
38
38
  */
39
39
  async setComputePlatformCeilings(input) {
40
- const data = await this.management.request(CpSetComputePlatformCeilingsDocument, { input });
40
+ const data = await this.api.request(CpSetComputePlatformCeilingsDocument, { input });
41
41
  return data.cpSetComputePlatformCeilings;
42
42
  }
43
43
  }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Where each app lives — the call a client makes BEFORE it authenticates.
3
+ *
4
+ * WHY IT COMES FIRST. `ck.<tier>.cp.cks-env.com` is a multivalue DNS record over every
5
+ * datacenter's load balancer, so a cold client's first request lands wherever DNS
6
+ * pointed it — and roughly half the time that is not the datacenter hosting the app.
7
+ * Authenticating there writes the session in the wrong place and then mints the app
8
+ * token across a WAN.
9
+ *
10
+ * A client already knows its app id before it has any credential: it is a build-time
11
+ * constant. So it can ask this, move to the returned origin, and log in locally. That is
12
+ * the whole trick, and it is why this query takes no token.
13
+ *
14
+ * PLURAL. A launcher or in-game switcher resolves every game it might offer in one call
15
+ * and caches the answer, so switching games is instant instead of a round trip at click
16
+ * time. Placement changes rarely and only an operator can change it.
17
+ *
18
+ * An app with no placement comes back with null endpoints, which means "stay on the
19
+ * shared origin" — not "this app is broken".
20
+ */
21
+ import type { GraphQLClient } from '../client.js';
22
+ export interface AppEndpoint {
23
+ /** The app this entry describes (decimal string). */
24
+ appId: string;
25
+ /** Datacenter code, e.g. `or` / `va`. Null when the app has no placement. */
26
+ datacenterCode: string | null;
27
+ /** HTTPS GraphQL origin for the app's own datacenter, or null if unplaced. */
28
+ gameApiUrl: string | null;
29
+ /** The wss:// form of gameApiUrl. */
30
+ gameApiWsUrl: string | null;
31
+ }
32
+ export declare class DiscoveryDomain {
33
+ private readonly gql;
34
+ constructor(gql: GraphQLClient);
35
+ /**
36
+ * Resolve where one or more apps are placed. No authentication required.
37
+ *
38
+ * Call this against the SHARED origin — that is the name every datacenter answers, and
39
+ * the only one a client can rely on before it knows where it belongs.
40
+ */
41
+ apps(appIds: Array<string | number | bigint>): Promise<AppEndpoint[]>;
42
+ /**
43
+ * Resolve one app, or null if it has no placement.
44
+ *
45
+ * Convenience over {@link apps}; prefer the plural form when you have more than one,
46
+ * because it is one round trip rather than N.
47
+ */
48
+ app(appId: string | number | bigint): Promise<AppEndpoint | null>;
49
+ }
50
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/domains/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,qCAAqC;IACrC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;;;OAKG;IACG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAY3E;;;;;OAKG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;CAKxE"}
@@ -0,0 +1,35 @@
1
+ import { AppDiscoveryDocument } from '../generated/graphql.js';
2
+ export class DiscoveryDomain {
3
+ constructor(gql) {
4
+ this.gql = gql;
5
+ }
6
+ /**
7
+ * Resolve where one or more apps are placed. No authentication required.
8
+ *
9
+ * Call this against the SHARED origin — that is the name every datacenter answers, and
10
+ * the only one a client can rely on before it knows where it belongs.
11
+ */
12
+ async apps(appIds) {
13
+ const data = await this.gql.request(AppDiscoveryDocument, {
14
+ appIds: appIds.map((id) => String(id)),
15
+ });
16
+ return data.appDiscovery.map((entry) => ({
17
+ appId: String(entry.appId),
18
+ datacenterCode: entry.datacenterCode ?? null,
19
+ gameApiUrl: entry.gameApiUrl ?? null,
20
+ gameApiWsUrl: entry.gameApiWsUrl ?? null,
21
+ }));
22
+ }
23
+ /**
24
+ * Resolve one app, or null if it has no placement.
25
+ *
26
+ * Convenience over {@link apps}; prefer the plural form when you have more than one,
27
+ * because it is one round trip rather than N.
28
+ */
29
+ async app(appId) {
30
+ const [entry] = await this.apps([appId]);
31
+ if (!entry || !entry.gameApiUrl)
32
+ return null;
33
+ return entry;
34
+ }
35
+ }
@@ -3,9 +3,9 @@ import { type MarketplaceCreateAccountSessionMutation, type MarketplaceCreateAcc
3
3
  /**
4
4
  * The P4a player-code marketplace (free mode) — exposed as
5
5
  * `client.marketplace`. Player-facing browse/publish/acquire/install/consent
6
- * and the D4 grid claim flows route to the Game API; studio moderation
7
- * (admission queue, catalog administration, ownership transfer, claim-policy
8
- * config) routes to the Management API.
6
+ * and the D4 grid claim flows, plus studio moderation (admission queue, catalog
7
+ * administration, ownership transfer, claim-policy config). Player and moderation
8
+ * operations differ by the permissions they require, not by endpoint.
9
9
  *
10
10
  * No money moves through any of these calls: every listing is free in P4a,
11
11
  * an acquisition is an entitlement write, and the paid modes ship with P4b.
@@ -14,8 +14,7 @@ import { type MarketplaceCreateAccountSessionMutation, type MarketplaceCreateAcc
14
14
  */
15
15
  export declare class MarketplaceAPI {
16
16
  private readonly game;
17
- private readonly management;
18
- constructor(game: GraphQLClient, management: GraphQLClient);
17
+ constructor(game: GraphQLClient);
19
18
  /** Browse the app's active listings with admission standing per listing. */
20
19
  listings(variables: MarketplaceListingsQueryVariables): Promise<MarketplaceListingsQuery['playerCodeListings']>;
21
20
  /** Published versions of one listing (capability summaries + consent hashes). */
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/domains/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAsCL,KAAK,uCAAuC,EAC5C,KAAK,gDAAgD,EACrD,KAAK,0CAA0C,EAC/C,KAAK,mDAAmD,EAOxD,KAAK,4CAA4C,EACjD,KAAK,4CAA4C,EACjD,KAAK,6CAA6C,EAClD,KAAK,qCAAqC,EAC1C,KAAK,wCAAwC,EAC7C,KAAK,6CAA6C,EAClD,KAAK,uCAAuC,EAC5C,KAAK,iDAAiD,EACtD,KAAK,oDAAoD,EACzD,KAAK,yCAAyC,EAC9C,KAAK,+CAA+C,EACpD,KAAK,0CAA0C,EAC/C,KAAK,0CAA0C,EAC/C,KAAK,6CAA6C,EAClD,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,wCAAwC,EAC7C,KAAK,2CAA2C,EAChD,KAAK,+BAA+B,EACpC,KAAK,iCAAiC,EACtC,KAAK,oCAAoC,EACzC,KAAK,wBAAwB,EAC7B,KAAK,iCAAiC,EACtC,KAAK,+BAA+B,EACpC,KAAK,wCAAwC,EAC7C,KAAK,8BAA8B,EACnC,KAAK,uCAAuC,EAC5C,KAAK,0BAA0B,EAC/B,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,KAAK,uCAAuC,EAC5C,KAAK,8BAA8B,EACnC,KAAK,uCAAuC,EAC5C,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAC/C,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAC/C,KAAK,0BAA0B,EAC/B,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAC/B,KAAK,mCAAmC,EACxC,KAAK,qCAAqC,EAC1C,KAAK,gDAAgD,EACrD,KAAK,kCAAkC,EACvC,KAAK,2CAA2C,EAChD,KAAK,+BAA+B,EACpC,KAAK,wCAAwC,EAC7C,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAC/C,KAAK,qCAAqC,EAC1C,KAAK,8CAA8C,EACnD,KAAK,iCAAiC,EACtC,KAAK,0CAA0C,EAC/C,KAAK,qCAAqC,EAC1C,KAAK,8CAA8C,EACnD,KAAK,kCAAkC,EACvC,KAAK,2CAA2C,EAChD,KAAK,gDAAgD,EACrD,KAAK,8BAA8B,EACnC,KAAK,uCAAuC,EAC5C,KAAK,2BAA2B,EAChC,KAAK,oCAAoC,EACzC,KAAK,+BAA+B,EACpC,KAAK,wCAAwC,EAC7C,KAAK,kCAAkC,EACvC,KAAK,2CAA2C,EAChD,KAAK,mCAAmC,EACxC,KAAK,4CAA4C,EACjD,KAAK,qCAAqC,EAC1C,KAAK,8CAA8C,EACpD,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,aAAa;IAK5C,4EAA4E;IACtE,QAAQ,CACZ,SAAS,EAAE,iCAAiC,GAC3C,OAAO,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC;IAQ1D,iFAAiF;IAC3E,QAAQ,CACZ,SAAS,EAAE,wCAAwC,GAClD,OAAO,CAAC,+BAA+B,CAAC,2BAA2B,CAAC,CAAC;IAQxE,6CAA6C;IACvC,cAAc,CAClB,SAAS,EAAE,uCAAuC,GACjD,OAAO,CAAC,8BAA8B,CAAC,0BAA0B,CAAC,CAAC;IAQtE,gDAAgD;IAC1C,UAAU,CACd,SAAS,EAAE,mCAAmC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;IAQ9D,sEAAsE;IAChE,cAAc,CAClB,SAAS,EAAE,0CAA0C,GACpD,OAAO,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,CAAC;IAQlE,gFAAgF;IAC1E,cAAc,CAClB,SAAS,EAAE,0CAA0C,GACpD,OAAO,CAAC,iCAAiC,CAAC,0BAA0B,CAAC,CAAC;IAQzE,2EAA2E;IACrE,OAAO,CACX,SAAS,EAAE,mCAAmC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;IAQ3D;;;OAGG;IACG,OAAO,CACX,SAAS,EAAE,mCAAmC,GAC7C,OAAO,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;IAQ3D,8EAA8E;IACxE,SAAS,CACb,SAAS,EAAE,qCAAqC,GAC/C,OAAO,CAAC,OAAO,CAAC;IAUnB,uEAAuE;IACjE,cAAc,CAClB,SAAS,EAAE,uCAAuC,GACjD,OAAO,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAQ5D,sEAAsE;IAChE,oBAAoB,CACxB,SAAS,EAAE,gDAAgD,GAC1D,OAAO,CAAC,OAAO,CAAC;IASnB;;;;OAIG;IACG,eAAe,CACnB,SAAS,EAAE,2CAA2C,GACrD,OAAO,CAAC,kCAAkC,CAAC,iBAAiB,CAAC,CAAC;IAQjE,gFAAgF;IAC1E,cAAc,CAClB,SAAS,EAAE,uCAAuC,GACjD,OAAO,CAAC,8BAA8B,CAAC,0BAA0B,CAAC,CAAC;IAQtE;;;;OAIG;IACG,mBAAmB,CACvB,SAAS,EAAE,uCAAuC,GACjD,OAAO,CAAC;QACT,KAAK,EAAE,WAAW,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAgBF,kFAAkF;IAC5E,eAAe,CACnB,SAAS,EAAE,wCAAwC,GAClD,OAAO,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;IAQ9D,+EAA+E;IACzE,iBAAiB,CACrB,SAAS,EAAE,0CAA0C,GACpD,OAAO,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,CAAC;IAQlE,yEAAyE;IACnE,kBAAkB,CACtB,SAAS,EAAE,8CAA8C,GACxD,OAAO,CAAC,qCAAqC,CAAC,oBAAoB,CAAC,CAAC;IAQvE;;;;OAIG;IACG,cAAc,CAClB,SAAS,EAAE,0CAA0C,GACpD,OAAO,CAAC,iCAAiC,CAAC,gBAAgB,CAAC,CAAC;IAQ/D;;;OAGG;IACG,kBAAkB,CACtB,SAAS,EAAE,8CAA8C,GACxD,OAAO,CAAC,qCAAqC,CAAC,oBAAoB,CAAC,CAAC;IAQvE,iEAAiE;IAC3D,eAAe,CACnB,SAAS,EAAE,2CAA2C,GACrD,OAAO,CAAC,kCAAkC,CAAC,iBAAiB,CAAC,CAAC;IAQjE,oEAAoE;IAC9D,oBAAoB,CACxB,SAAS,EAAE,gDAAgD,GAC1D,OAAO,CAAC,OAAO,CAAC;IAWnB,qEAAqE;IAC/D,cAAc,CAClB,SAAS,EAAE,uCAAuC,GACjD,OAAO,CAAC,8BAA8B,CAAC,uBAAuB,CAAC,CAAC;IAQnE,gFAAgF;IAC1E,WAAW,CACf,SAAS,EAAE,oCAAoC,GAC9C,OAAO,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;IAQhE,uDAAuD;IACjD,eAAe,CACnB,SAAS,EAAE,wCAAwC,GAClD,OAAO,CAAC,+BAA+B,CAAC,2BAA2B,CAAC,CAAC;IASxE,sDAAsD;IAChD,eAAe,CACnB,SAAS,EAAE,2CAA2C,GACrD,OAAO,CAAC,kCAAkC,CAAC,2BAA2B,CAAC,CAAC;IAS3E;;;;OAIG;IACG,gBAAgB,CACpB,SAAS,EAAE,4CAA4C,GACtD,OAAO,CAAC,mCAAmC,CAAC,4BAA4B,CAAC,CAAC;IAS7E,8DAA8D;IACxD,kBAAkB,CACtB,SAAS,EAAE,8CAA8C,GACxD,OAAO,CAAC,qCAAqC,CAAC,uBAAuB,CAAC,CAAC;IAW1E,0EAA0E;IACpE,gBAAgB,CAAC,SAAS,EAAE,4CAA4C;;;;;;;;;;;;IAQ9E,yEAAyE;IACnE,gBAAgB,CAAC,SAAS,EAAE,4CAA4C;;;;;;;;;;;;IAQ9E,uFAAuF;IACjF,iBAAiB,CACrB,SAAS,EAAE,6CAA6C,GACvD,OAAO,CAAC,MAAM,CAAC;IAQlB,sCAAsC;IAChC,YAAY,CAChB,SAAS,EAAE,qCAAqC,GAC/C,OAAO,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAQxD,+EAA+E;IACzE,YAAY,CAChB,SAAS,EAAE,wCAAwC,GAClD,OAAO,CAAC,+BAA+B,CAAC,cAAc,CAAC,CAAC;IAU3D,6DAA6D;IACvD,iBAAiB,CACrB,SAAS,EAAE,6CAA6C,GACvD,OAAO,CAAC,OAAO,CAAC;IAQnB,yEAAyE;IACnE,WAAW,CACf,SAAS,EAAE,uCAAuC,GACjD,OAAO,CAAC,MAAM,CAAC;IAQlB;;;;;;OAMG;IACG,oBAAoB,CACxB,SAAS,EAAE,gDAAgD,GAC1D,OAAO,CACR,uCAAuC,CAAC,4BAA4B,CAAC,CACtE;IAQD,sFAAsF;IAChF,uBAAuB,CAC3B,SAAS,EAAE,mDAAmD,GAC7D,OAAO,CACR,0CAA0C,CAAC,+BAA+B,CAAC,CAC5E;IAQD,6EAA6E;IACvE,qBAAqB,CACzB,SAAS,EAAE,iDAAiD,GAC3D,OAAO,CAAC,wCAAwC,CAAC,uBAAuB,CAAC,CAAC;IAQ7E,8EAA8E;IACxE,wBAAwB,CAC5B,SAAS,EAAE,oDAAoD,GAC9D,OAAO,CACR,2CAA2C,CAAC,0BAA0B,CAAC,CACxE;IAQD,kDAAkD;IAC5C,eAAe,IAAI,OAAO,CAC9B,+BAA+B,CAAC,uBAAuB,CAAC,CACzD;IAQD,6EAA6E;IACvE,aAAa,CACjB,SAAS,GAAE,yCAA8C,GACxD,OAAO,CAAC,MAAM,CAAC;IAQlB,kFAAkF;IAC5E,mBAAmB,CACvB,SAAS,EAAE,+CAA+C,GACzD,OAAO,CAAC,MAAM,CAAC;IAQlB,+DAA+D;IACzD,iBAAiB,CACrB,SAAS,EAAE,0CAA0C,GACpD,OAAO,CAAC,iCAAiC,CAAC,mBAAmB,CAAC,CAAC;IAQlE,2DAA2D;IACrD,cAAc,CAClB,SAAS,EAAE,0CAA0C,GACpD,OAAO,CAAC,OAAO,CAAC;IAQnB,0EAA0E;IACpE,iBAAiB,CACrB,SAAS,EAAE,6CAA6C,GACvD,OAAO,CAAC,oCAAoC,CAAC,mBAAmB,CAAC,CAAC;CAOtE"}
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/domains/marketplace.ts"],"names":[],"mappings":"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"}