@crowdedkingdoms/crowdyjs 17.14.0-dev.1 → 18.0.1-dev.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/MIGRATION.md +129 -1
- package/README.md +97 -164
- package/dist/crowdy-client.d.ts +12 -31
- package/dist/crowdy-client.d.ts.map +1 -1
- package/dist/crowdy-client.js +15 -37
- package/dist/crowdy-dsh/bridge.d.ts.map +1 -1
- package/dist/crowdy-dsh/bridge.js +3 -6
- package/dist/crowdy-studio/controller.d.ts +34 -59
- package/dist/crowdy-studio/controller.d.ts.map +1 -1
- package/dist/crowdy-studio/controller.js +96 -225
- package/dist/crowdy-studio/diagnostics.d.ts +3 -12
- package/dist/crowdy-studio/diagnostics.d.ts.map +1 -1
- package/dist/crowdy-studio/dom-shell.d.ts +2 -4
- package/dist/crowdy-studio/dom-shell.d.ts.map +1 -1
- package/dist/crowdy-studio/dom-shell.js +16 -49
- package/dist/crowdy-studio/embed/hud-layer.d.ts +1 -2
- package/dist/crowdy-studio/embed/hud-layer.d.ts.map +1 -1
- package/dist/crowdy-studio/embed/panel.d.ts +3 -13
- package/dist/crowdy-studio/embed/panel.d.ts.map +1 -1
- package/dist/crowdy-studio/embed/panel.js +3 -6
- package/dist/crowdy-studio/index.d.ts +1 -3
- package/dist/crowdy-studio/index.d.ts.map +1 -1
- package/dist/crowdy-studio/index.js +0 -2
- package/dist/crowdy-studio/models.d.ts +3 -4
- package/dist/crowdy-studio/models.d.ts.map +1 -1
- package/dist/crowdy-studio/starter-projects.d.ts +8 -12
- package/dist/crowdy-studio/starter-projects.d.ts.map +1 -1
- package/dist/crowdy-studio/starter-projects.js +12 -103
- package/dist/domains/appAccess.d.ts +14 -1
- package/dist/domains/appAccess.d.ts.map +1 -1
- package/dist/domains/appAccess.js +37 -1
- package/dist/domains/apps.d.ts +1 -10
- package/dist/domains/apps.d.ts.map +1 -1
- package/dist/domains/apps.js +1 -16
- package/dist/domains/host.d.ts +3 -3
- package/dist/domains/host.js +3 -3
- package/dist/domains/hosting.d.ts +0 -6
- package/dist/domains/hosting.d.ts.map +1 -1
- package/dist/domains/hosting.js +1 -16
- package/dist/domains/marketplace.d.ts +9 -70
- package/dist/domains/marketplace.d.ts.map +1 -1
- package/dist/domains/marketplace.js +9 -120
- package/dist/domains/organizations.d.ts +1 -9
- package/dist/domains/organizations.d.ts.map +1 -1
- package/dist/domains/organizations.js +1 -15
- package/dist/domains/payments.d.ts +5 -48
- package/dist/domains/payments.d.ts.map +1 -1
- package/dist/domains/payments.js +5 -57
- package/dist/domains/playerWallet.d.ts +6 -12
- package/dist/domains/playerWallet.d.ts.map +1 -1
- package/dist/domains/playerWallet.js +6 -21
- package/dist/domains/quotas.d.ts +20 -7
- package/dist/domains/quotas.d.ts.map +1 -1
- package/dist/domains/quotas.js +15 -6
- package/dist/domains/users.d.ts +7 -74
- package/dist/domains/users.d.ts.map +1 -1
- package/dist/domains/users.js +7 -105
- package/dist/errors.d.ts +7 -13
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +6 -10
- package/dist/generated/graphql.d.ts +955 -8272
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +5 -329
- package/dist/grid-mods/exec-client-halves.d.ts +19 -3
- package/dist/grid-mods/exec-client-halves.d.ts.map +1 -1
- package/dist/grid-mods/exec-client-halves.js +17 -2
- package/dist/grid-mods/grid-host-calls.d.ts +29 -17
- package/dist/grid-mods/grid-host-calls.d.ts.map +1 -1
- package/dist/grid-mods/grid-host-calls.js +40 -46
- package/dist/grid-mods/mod-runtime.d.ts +18 -11
- package/dist/grid-mods/mod-runtime.d.ts.map +1 -1
- package/dist/grid-mods/mod-runtime.js +4 -2
- package/dist/grid-scope.d.ts +0 -189
- package/dist/grid-scope.d.ts.map +1 -1
- package/dist/grid-scope.js +0 -70
- package/dist/index.d.ts +12 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -16
- package/dist/kit/actions.d.ts +5 -9
- package/dist/kit/actions.d.ts.map +1 -1
- package/dist/kit/actions.js +5 -9
- package/dist/kit/index.d.ts +2 -33
- package/dist/kit/index.d.ts.map +1 -1
- package/dist/kit/index.js +1 -32
- package/dist/kit/kit.d.ts +8 -208
- package/dist/kit/kit.d.ts.map +1 -1
- package/dist/kit/kit.js +5 -163
- package/dist/kit/social.d.ts +1 -3
- package/dist/kit/social.d.ts.map +1 -1
- package/dist/kit/social.js +1 -3
- package/dist/kit/wire.d.ts +16 -5
- package/dist/kit/wire.d.ts.map +1 -1
- package/dist/kit/wire.js +19 -5
- package/dist/live-coding/assets/browser-authoring-index.json +1 -1
- package/dist/live-coding/assets/manifest.json +1 -1
- package/dist/live-coding/browser-authoring-index.generated.d.ts.map +1 -1
- package/dist/live-coding/browser-authoring-index.generated.js +1496 -4386
- package/dist/live-coding/rust-analysis.d.ts.map +1 -1
- package/dist/live-coding/rust-analysis.js +30 -34
- package/dist/player-runtime/client-host-calls.d.ts +8 -0
- package/dist/player-runtime/client-host-calls.d.ts.map +1 -0
- package/dist/player-runtime/client-host-calls.js +28 -0
- package/dist/player-runtime/glue-runtime.d.ts +24 -20
- package/dist/player-runtime/glue-runtime.d.ts.map +1 -1
- package/dist/player-runtime/glue-runtime.js +26 -55
- package/dist/player-runtime/glue-sab.d.ts +2 -2
- package/dist/player-runtime/glue-sab.js +2 -2
- package/dist/player-runtime/player-code-broker.d.ts +70 -43
- package/dist/player-runtime/player-code-broker.d.ts.map +1 -1
- package/dist/player-runtime/player-code-broker.js +159 -64
- package/dist/player-runtime/player-glue-worker.d.ts +8 -9
- package/dist/player-runtime/player-glue-worker.d.ts.map +1 -1
- package/dist/player-runtime/player-glue-worker.js +26 -11
- package/dist/stores/inbox.d.ts +1 -1
- package/dist/stores/inbox.d.ts.map +1 -1
- package/dist/stores/index.d.ts +0 -11
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +0 -4
- package/dist/stores/session.d.ts +0 -2
- package/dist/stores/session.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/crowdy-studio/model-lint-log.d.ts +0 -76
- package/dist/crowdy-studio/model-lint-log.d.ts.map +0 -1
- package/dist/crowdy-studio/model-lint-log.js +0 -93
- package/dist/crowdy-studio/model-lint.d.ts +0 -61
- package/dist/crowdy-studio/model-lint.d.ts.map +0 -1
- package/dist/crowdy-studio/model-lint.js +0 -45
- package/dist/domains/compute.d.ts +0 -208
- package/dist/domains/compute.d.ts.map +0 -1
- package/dist/domains/compute.js +0 -274
- package/dist/domains/controlPlane.d.ts +0 -38
- package/dist/domains/controlPlane.d.ts.map +0 -1
- package/dist/domains/controlPlane.js +0 -43
- package/dist/domains/gameModel.d.ts +0 -1174
- package/dist/domains/gameModel.d.ts.map +0 -1
- package/dist/domains/gameModel.js +0 -1333
- package/dist/domains/playerCompute.d.ts +0 -91
- package/dist/domains/playerCompute.d.ts.map +0 -1
- package/dist/domains/playerCompute.js +0 -136
- package/dist/domains/playerModel.d.ts +0 -20
- package/dist/domains/playerModel.d.ts.map +0 -1
- package/dist/domains/playerModel.js +0 -54
- package/dist/kit/abilities.d.ts +0 -66
- package/dist/kit/abilities.d.ts.map +0 -1
- package/dist/kit/abilities.js +0 -71
- package/dist/kit/blueprints/combat.d.ts +0 -81
- package/dist/kit/blueprints/combat.d.ts.map +0 -1
- package/dist/kit/blueprints/combat.js +0 -357
- package/dist/kit/blueprints/core.d.ts +0 -222
- package/dist/kit/blueprints/core.d.ts.map +0 -1
- package/dist/kit/blueprints/core.js +0 -185
- package/dist/kit/blueprints/decks.d.ts +0 -50
- package/dist/kit/blueprints/decks.d.ts.map +0 -1
- package/dist/kit/blueprints/decks.js +0 -163
- package/dist/kit/blueprints/economy.d.ts +0 -88
- package/dist/kit/blueprints/economy.d.ts.map +0 -1
- package/dist/kit/blueprints/economy.js +0 -533
- package/dist/kit/blueprints/guild.d.ts +0 -51
- package/dist/kit/blueprints/guild.d.ts.map +0 -1
- package/dist/kit/blueprints/guild.js +0 -50
- package/dist/kit/blueprints/index.d.ts +0 -23
- package/dist/kit/blueprints/index.d.ts.map +0 -1
- package/dist/kit/blueprints/index.js +0 -22
- package/dist/kit/blueprints/inventory.d.ts +0 -84
- package/dist/kit/blueprints/inventory.d.ts.map +0 -1
- package/dist/kit/blueprints/inventory.js +0 -257
- package/dist/kit/blueprints/leaderboards.d.ts +0 -49
- package/dist/kit/blueprints/leaderboards.d.ts.map +0 -1
- package/dist/kit/blueprints/leaderboards.js +0 -126
- package/dist/kit/blueprints/liveops.d.ts +0 -42
- package/dist/kit/blueprints/liveops.d.ts.map +0 -1
- package/dist/kit/blueprints/liveops.js +0 -170
- package/dist/kit/blueprints/locks.d.ts +0 -82
- package/dist/kit/blueprints/locks.d.ts.map +0 -1
- package/dist/kit/blueprints/locks.js +0 -155
- package/dist/kit/blueprints/loot.d.ts +0 -90
- package/dist/kit/blueprints/loot.d.ts.map +0 -1
- package/dist/kit/blueprints/loot.js +0 -229
- package/dist/kit/blueprints/matches.d.ts +0 -84
- package/dist/kit/blueprints/matches.d.ts.map +0 -1
- package/dist/kit/blueprints/matches.js +0 -349
- package/dist/kit/blueprints/moderation.d.ts +0 -32
- package/dist/kit/blueprints/moderation.d.ts.map +0 -1
- package/dist/kit/blueprints/moderation.js +0 -140
- package/dist/kit/blueprints/npcs.d.ts +0 -78
- package/dist/kit/blueprints/npcs.d.ts.map +0 -1
- package/dist/kit/blueprints/npcs.js +0 -125
- package/dist/kit/blueprints/plots.d.ts +0 -63
- package/dist/kit/blueprints/plots.d.ts.map +0 -1
- package/dist/kit/blueprints/plots.js +0 -151
- package/dist/kit/blueprints/progression.d.ts +0 -68
- package/dist/kit/blueprints/progression.d.ts.map +0 -1
- package/dist/kit/blueprints/progression.js +0 -324
- package/dist/kit/blueprints/quests.d.ts +0 -72
- package/dist/kit/blueprints/quests.d.ts.map +0 -1
- package/dist/kit/blueprints/quests.js +0 -285
- package/dist/kit/blueprints/worldsim.d.ts +0 -91
- package/dist/kit/blueprints/worldsim.d.ts.map +0 -1
- package/dist/kit/blueprints/worldsim.js +0 -468
- package/dist/kit/combat.d.ts +0 -141
- package/dist/kit/combat.d.ts.map +0 -1
- package/dist/kit/combat.js +0 -196
- package/dist/kit/decks.d.ts +0 -157
- package/dist/kit/decks.d.ts.map +0 -1
- package/dist/kit/decks.js +0 -186
- package/dist/kit/director.d.ts +0 -88
- package/dist/kit/director.d.ts.map +0 -1
- package/dist/kit/director.js +0 -86
- package/dist/kit/economy.d.ts +0 -289
- package/dist/kit/economy.d.ts.map +0 -1
- package/dist/kit/economy.js +0 -427
- package/dist/kit/engine.d.ts +0 -48
- package/dist/kit/engine.d.ts.map +0 -1
- package/dist/kit/engine.js +0 -113
- package/dist/kit/features.d.ts +0 -60
- package/dist/kit/features.d.ts.map +0 -1
- package/dist/kit/features.js +0 -65
- package/dist/kit/instances.d.ts +0 -52
- package/dist/kit/instances.d.ts.map +0 -1
- package/dist/kit/instances.js +0 -60
- package/dist/kit/inventory.d.ts +0 -129
- package/dist/kit/inventory.d.ts.map +0 -1
- package/dist/kit/inventory.js +0 -200
- package/dist/kit/leaderboards.d.ts +0 -86
- package/dist/kit/leaderboards.d.ts.map +0 -1
- package/dist/kit/leaderboards.js +0 -133
- package/dist/kit/liveops.d.ts +0 -112
- package/dist/kit/liveops.d.ts.map +0 -1
- package/dist/kit/liveops.js +0 -183
- package/dist/kit/loot.d.ts +0 -128
- package/dist/kit/loot.d.ts.map +0 -1
- package/dist/kit/loot.js +0 -160
- package/dist/kit/matches.d.ts +0 -301
- package/dist/kit/matches.d.ts.map +0 -1
- package/dist/kit/matches.js +0 -458
- package/dist/kit/matchmaking.d.ts +0 -57
- package/dist/kit/matchmaking.d.ts.map +0 -1
- package/dist/kit/matchmaking.js +0 -59
- package/dist/kit/minigames.d.ts +0 -30
- package/dist/kit/minigames.d.ts.map +0 -1
- package/dist/kit/minigames.js +0 -38
- package/dist/kit/mobs.d.ts +0 -90
- package/dist/kit/mobs.d.ts.map +0 -1
- package/dist/kit/mobs.js +0 -98
- package/dist/kit/moderation.d.ts +0 -73
- package/dist/kit/moderation.d.ts.map +0 -1
- package/dist/kit/moderation.js +0 -103
- package/dist/kit/movement.d.ts +0 -78
- package/dist/kit/movement.d.ts.map +0 -1
- package/dist/kit/movement.js +0 -103
- package/dist/kit/notifications.d.ts +0 -45
- package/dist/kit/notifications.d.ts.map +0 -1
- package/dist/kit/notifications.js +0 -67
- package/dist/kit/npcs.d.ts +0 -226
- package/dist/kit/npcs.d.ts.map +0 -1
- package/dist/kit/npcs.js +0 -141
- package/dist/kit/objects.d.ts +0 -116
- package/dist/kit/objects.d.ts.map +0 -1
- package/dist/kit/objects.js +0 -119
- package/dist/kit/pets.d.ts +0 -85
- package/dist/kit/pets.d.ts.map +0 -1
- package/dist/kit/pets.js +0 -96
- package/dist/kit/plots.d.ts +0 -85
- package/dist/kit/plots.d.ts.map +0 -1
- package/dist/kit/plots.js +0 -113
- package/dist/kit/progression.d.ts +0 -181
- package/dist/kit/progression.d.ts.map +0 -1
- package/dist/kit/progression.js +0 -265
- package/dist/kit/quests.d.ts +0 -171
- package/dist/kit/quests.d.ts.map +0 -1
- package/dist/kit/quests.js +0 -237
- package/dist/kit/racing.d.ts +0 -85
- package/dist/kit/racing.d.ts.map +0 -1
- package/dist/kit/racing.js +0 -99
- package/dist/kit/shared.d.ts +0 -73
- package/dist/kit/shared.d.ts.map +0 -1
- package/dist/kit/shared.js +0 -101
- package/dist/kit/telemetry.d.ts +0 -66
- package/dist/kit/telemetry.d.ts.map +0 -1
- package/dist/kit/telemetry.js +0 -133
- package/dist/kit/territory.d.ts +0 -97
- package/dist/kit/territory.d.ts.map +0 -1
- package/dist/kit/territory.js +0 -114
- package/dist/kit/worldsim.d.ts +0 -263
- package/dist/kit/worldsim.d.ts.map +0 -1
- package/dist/kit/worldsim.js +0 -268
- package/dist/stores/model.d.ts +0 -81
- package/dist/stores/model.d.ts.map +0 -1
- package/dist/stores/model.js +0 -163
package/dist/kit/director.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
function toRun(body) {
|
|
2
|
-
const boss = body.boss;
|
|
3
|
-
return {
|
|
4
|
-
runId: String(body.runId ?? ''),
|
|
5
|
-
encounterId: String(body.encounterId ?? ''),
|
|
6
|
-
players: Number(body.players ?? 1),
|
|
7
|
-
phase: body.phase ?? {},
|
|
8
|
-
pending: Number(body.pending ?? 0),
|
|
9
|
-
wavesCleared: Number(body.wavesCleared ?? 0),
|
|
10
|
-
wavesTotal: Number(body.wavesTotal ?? 0),
|
|
11
|
-
boss: boss
|
|
12
|
-
? {
|
|
13
|
-
hp: Number(boss.hp ?? 0),
|
|
14
|
-
maxHp: Number(boss.maxHp ?? 0),
|
|
15
|
-
phase: Number(boss.phase ?? 0),
|
|
16
|
-
thresholds: Array.isArray(boss.thresholds) ? boss.thresholds.map(Number) : [],
|
|
17
|
-
}
|
|
18
|
-
: null,
|
|
19
|
-
finished: body.finished === true,
|
|
20
|
-
outcome: String(body.outcome ?? ''),
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Runtime helpers for the director engine (Wave 2): data-driven encounter
|
|
25
|
-
* direction — wave schedules, spawn budgets, boss phases, party scaling.
|
|
26
|
-
* The director emits `director_spawn` compute events; the mob layer
|
|
27
|
-
* simulates and reports kills back.
|
|
28
|
-
*
|
|
29
|
-
* Obtained via `client.kit(appId).director`.
|
|
30
|
-
*/
|
|
31
|
-
export class DirectorKit {
|
|
32
|
-
constructor(appId, gameModel, engines, options = {}) {
|
|
33
|
-
this.appId = appId;
|
|
34
|
-
this.gameModel = gameModel;
|
|
35
|
-
this.engines = engines;
|
|
36
|
-
this.moduleName = options.moduleName ?? 'director';
|
|
37
|
-
this.defTypeName = options.defTypeName ?? 'EncounterDef';
|
|
38
|
-
}
|
|
39
|
-
/** Is the director deployed + enabled (cached per session)? */
|
|
40
|
-
engineAvailable() {
|
|
41
|
-
return this.engines.has(this.moduleName);
|
|
42
|
-
}
|
|
43
|
-
/** STUDIO (admin) — create an encounter definition container. */
|
|
44
|
-
async defineEncounter(input) {
|
|
45
|
-
return this.gameModel.createContainer({
|
|
46
|
-
appId: this.appId,
|
|
47
|
-
typeName: this.defTypeName,
|
|
48
|
-
displayName: input.displayName ?? `Encounter ${input.encounterId}`,
|
|
49
|
-
properties: [
|
|
50
|
-
{ key: 'encounter_id', valueType: 'string', valueJson: JSON.stringify(input.encounterId) },
|
|
51
|
-
{ key: 'waves', valueType: 'string', valueJson: JSON.stringify(JSON.stringify(input.waves)) },
|
|
52
|
-
...(input.spawnBudget !== undefined
|
|
53
|
-
? [{ key: 'spawn_budget', valueType: 'int', valueJson: String(input.spawnBudget) }]
|
|
54
|
-
: []),
|
|
55
|
-
],
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
/** Start a run (party size scales unit counts server-side). */
|
|
59
|
-
async startRun(encounterId, players = 1) {
|
|
60
|
-
return toRun(await this.invoke('start_run', { encounterId, players }));
|
|
61
|
-
}
|
|
62
|
-
/** Report kills toward the live wave (trusted callers/engines). */
|
|
63
|
-
async reportKill(runId, count = 1) {
|
|
64
|
-
return toRun(await this.invoke('report_kill', { runId, count }));
|
|
65
|
-
}
|
|
66
|
-
/** Report boss hp; phase transitions announce on the compute bus. */
|
|
67
|
-
async reportBossHp(runId, hp) {
|
|
68
|
-
return toRun(await this.invoke('report_boss_hp', { runId, hp }));
|
|
69
|
-
}
|
|
70
|
-
/** Force-clear the live wave (run creator only). */
|
|
71
|
-
async skipWave(runId) {
|
|
72
|
-
return toRun(await this.invoke('skip_wave', { runId }));
|
|
73
|
-
}
|
|
74
|
-
/** One run's state (or engine totals without an id). */
|
|
75
|
-
async runState(runId) {
|
|
76
|
-
const body = await this.invoke('run_state', runId ? { runId } : {});
|
|
77
|
-
return runId ? toRun(body) : body;
|
|
78
|
-
}
|
|
79
|
-
async invoke(exportName, params) {
|
|
80
|
-
const result = await this.engines.invoke(this.moduleName, exportName, params);
|
|
81
|
-
if (!result.success) {
|
|
82
|
-
throw new Error(`director.${exportName} failed: ${result.reason ?? 'unknown'}`);
|
|
83
|
-
}
|
|
84
|
-
return result.body;
|
|
85
|
-
}
|
|
86
|
-
}
|
package/dist/kit/economy.d.ts
DELETED
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
import type { GameModelAPI } from '../domains/gameModel.js';
|
|
2
|
-
import type { EngineDetector } from './engine.js';
|
|
3
|
-
import type { Scalars, SeedPropertyInput } from '../generated/graphql.js';
|
|
4
|
-
import { type KitInvokeResult } from './shared.js';
|
|
5
|
-
/** Options for {@link EconomyKit}. Must match the deployed economy blueprint. */
|
|
6
|
-
export interface EconomyKitOptions {
|
|
7
|
-
/** The `typePrefix` the economy blueprint was deployed with. */
|
|
8
|
-
typePrefix?: string;
|
|
9
|
-
/** The `currencies` the blueprint was deployed with. Defaults to `['gold']`. */
|
|
10
|
-
currencies?: string[];
|
|
11
|
-
/** The order-book market engine module. Defaults to `'market-engine'`. */
|
|
12
|
-
marketModuleName?: string;
|
|
13
|
-
}
|
|
14
|
-
/** A parsed view of one wallet. */
|
|
15
|
-
export interface KitWallet {
|
|
16
|
-
containerId: string;
|
|
17
|
-
displayName: string;
|
|
18
|
-
ownerUserId: string | null;
|
|
19
|
-
/** Balance per currency property. */
|
|
20
|
-
balances: Record<string, number>;
|
|
21
|
-
}
|
|
22
|
-
/** A parsed view of one shop listing. */
|
|
23
|
-
export interface KitShopListing {
|
|
24
|
-
containerId: string;
|
|
25
|
-
displayName: string;
|
|
26
|
-
itemId: string;
|
|
27
|
-
price: number;
|
|
28
|
-
stock: number;
|
|
29
|
-
maxStock: number;
|
|
30
|
-
}
|
|
31
|
-
/** A parsed view of one escrow trade offer. */
|
|
32
|
-
export interface KitTradeOffer {
|
|
33
|
-
containerId: string;
|
|
34
|
-
displayName: string;
|
|
35
|
-
/** The offer creator (server-assigned container owner). */
|
|
36
|
-
fromUserId: string | null;
|
|
37
|
-
toUserId: number;
|
|
38
|
-
giveStackId: string;
|
|
39
|
-
receiveStackId: string;
|
|
40
|
-
giveItemId: string;
|
|
41
|
-
giveQty: number;
|
|
42
|
-
wantItemId: string;
|
|
43
|
-
wantQty: number;
|
|
44
|
-
status: string;
|
|
45
|
-
}
|
|
46
|
-
/** A parsed view of one market listing. */
|
|
47
|
-
export interface KitMarketListing {
|
|
48
|
-
containerId: string;
|
|
49
|
-
displayName: string;
|
|
50
|
-
/** The seller (server-assigned container owner). */
|
|
51
|
-
sellerUserId: string | null;
|
|
52
|
-
stackId: string;
|
|
53
|
-
itemId: string;
|
|
54
|
-
quantity: number;
|
|
55
|
-
price: number;
|
|
56
|
-
active: boolean;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Runtime helpers for the {@link economyBlueprint} conventions: wallets with
|
|
60
|
-
* per-currency balances, shop purchases, escrow trades, and player market
|
|
61
|
-
* listings. Every movement of currency or items is a single gated invoke —
|
|
62
|
-
* balances, stock, item identity, and ownership are all verified
|
|
63
|
-
* server-side, and a denial resolves with `success: false` (never an
|
|
64
|
-
* exception).
|
|
65
|
-
*
|
|
66
|
-
* `earn` is a trusted grant: with the default blueprint authority
|
|
67
|
-
* (`'server'`) it succeeds only for app admins — call it from studio/backend
|
|
68
|
-
* code, or drive grants through automations instead.
|
|
69
|
-
*
|
|
70
|
-
* Obtained via `client.kit(appId).economy`.
|
|
71
|
-
*/
|
|
72
|
-
export declare class EconomyKit {
|
|
73
|
-
private readonly appId;
|
|
74
|
-
private readonly gameModel;
|
|
75
|
-
private readonly names;
|
|
76
|
-
private readonly typePrefix;
|
|
77
|
-
private readonly currencies;
|
|
78
|
-
constructor(appId: Scalars['BigInt']['input'], gameModel: GameModelAPI, options?: EconomyKitOptions, engines?: EngineDetector);
|
|
79
|
-
/**
|
|
80
|
-
* The order-book market (Wave 2 engine): bid/ask methods over the
|
|
81
|
-
* market-engine's escrowed order books. The model-side listing `market`
|
|
82
|
-
* on this kit keeps working without it (fixed-price stack listings);
|
|
83
|
-
* `orderBook` adds real price discovery when the engine is deployed.
|
|
84
|
-
*/
|
|
85
|
-
readonly orderBook: MarketKit;
|
|
86
|
-
private get defaultCurrency();
|
|
87
|
-
/**
|
|
88
|
-
* Find the player's wallet, creating it when absent (member-instantiable;
|
|
89
|
-
* the server assigns ownership to the caller). Sets the `owner_user_id`
|
|
90
|
-
* mirror property the blueprint's guards read.
|
|
91
|
-
*
|
|
92
|
-
* @param ownerUserId - The calling player's user id (decimal string).
|
|
93
|
-
*/
|
|
94
|
-
ensureWallet(ownerUserId: Scalars['BigInt']['input'], options?: {
|
|
95
|
-
displayName?: string;
|
|
96
|
-
sessionId?: string;
|
|
97
|
-
}): Promise<{
|
|
98
|
-
__typename?: "GmContainer";
|
|
99
|
-
containerId: string;
|
|
100
|
-
appId: string;
|
|
101
|
-
sessionId: string | null;
|
|
102
|
-
typeName: string;
|
|
103
|
-
displayName: string;
|
|
104
|
-
description: string | null;
|
|
105
|
-
ownerUserId: string | null;
|
|
106
|
-
metadataJson: string;
|
|
107
|
-
}>;
|
|
108
|
-
/** Read one currency balance (default: the blueprint's first currency). */
|
|
109
|
-
balance(walletId: string, currency?: string): Promise<number>;
|
|
110
|
-
/** Read a wallet with every configured currency balance parsed. */
|
|
111
|
-
wallet(walletId: string): Promise<KitWallet>;
|
|
112
|
-
/**
|
|
113
|
-
* Mint currency into a wallet — a **trusted** grant (default blueprint
|
|
114
|
-
* authority: app admins only). Resolves with the new balance.
|
|
115
|
-
*/
|
|
116
|
-
earn(walletId: string, amount: number, currency?: string): Promise<KitInvokeResult<number>>;
|
|
117
|
-
/**
|
|
118
|
-
* Spend currency from the caller's own wallet. The server refuses to
|
|
119
|
-
* overdraw. Resolves with the new balance.
|
|
120
|
-
*/
|
|
121
|
-
spend(walletId: string, amount: number, currency?: string): Promise<KitInvokeResult<number>>;
|
|
122
|
-
/** Shop (admin-priced listings; atomic buys). */
|
|
123
|
-
readonly shop: {
|
|
124
|
-
/**
|
|
125
|
-
* Create a shop listing (admin — the type is admin-instantiable).
|
|
126
|
-
* `maxStock` feeds the optional restock automation.
|
|
127
|
-
*/
|
|
128
|
-
create: (input: {
|
|
129
|
-
displayName: string;
|
|
130
|
-
itemId: string;
|
|
131
|
-
price: number;
|
|
132
|
-
stock?: number;
|
|
133
|
-
maxStock?: number;
|
|
134
|
-
properties?: SeedPropertyInput[];
|
|
135
|
-
}) => Promise<{
|
|
136
|
-
__typename?: "GmContainer";
|
|
137
|
-
containerId: string;
|
|
138
|
-
appId: string;
|
|
139
|
-
sessionId: string | null;
|
|
140
|
-
typeName: string;
|
|
141
|
-
displayName: string;
|
|
142
|
-
description: string | null;
|
|
143
|
-
ownerUserId: string | null;
|
|
144
|
-
metadataJson: string;
|
|
145
|
-
}>;
|
|
146
|
-
/** List shop listings with parsed state. */
|
|
147
|
-
list: () => Promise<KitShopListing[]>;
|
|
148
|
-
/**
|
|
149
|
-
* Buy one unit: wallet debit + stock decrement + item grant into
|
|
150
|
-
* `toStackId` (a stack of the listed item), all in one transaction.
|
|
151
|
-
* Resolves with the wallet's remaining balance.
|
|
152
|
-
*/
|
|
153
|
-
buy: (input: {
|
|
154
|
-
listingId: string;
|
|
155
|
-
walletId: string;
|
|
156
|
-
toStackId: string;
|
|
157
|
-
}) => Promise<KitInvokeResult<number>>;
|
|
158
|
-
};
|
|
159
|
-
/** Escrow trades (player↔player item swaps, atomic on accept). */
|
|
160
|
-
readonly trades: {
|
|
161
|
-
/**
|
|
162
|
-
* Create a trade offer to another player. The stacks named here are the
|
|
163
|
-
* OFFERER's: `giveStackId` is the escrowed source, `receiveStackId`
|
|
164
|
-
* receives the wanted items when the trade is accepted. The offer's
|
|
165
|
-
* container ownership (server-assigned to the caller) is what the accept
|
|
166
|
-
* guards trust — a forged offer over someone else's stacks can never be
|
|
167
|
-
* accepted.
|
|
168
|
-
*/
|
|
169
|
-
offer: (input: {
|
|
170
|
-
toUserId: Scalars["BigInt"]["input"];
|
|
171
|
-
giveStackId: string;
|
|
172
|
-
giveItemId: string;
|
|
173
|
-
giveQty: number;
|
|
174
|
-
wantItemId: string;
|
|
175
|
-
wantQty: number;
|
|
176
|
-
receiveStackId: string;
|
|
177
|
-
displayName?: string;
|
|
178
|
-
sessionId?: string;
|
|
179
|
-
}) => Promise<{
|
|
180
|
-
__typename?: "GmContainer";
|
|
181
|
-
containerId: string;
|
|
182
|
-
appId: string;
|
|
183
|
-
sessionId: string | null;
|
|
184
|
-
typeName: string;
|
|
185
|
-
displayName: string;
|
|
186
|
-
description: string | null;
|
|
187
|
-
ownerUserId: string | null;
|
|
188
|
-
metadataJson: string;
|
|
189
|
-
}>;
|
|
190
|
-
/**
|
|
191
|
-
* Accept a trade as the invited player, supplying YOUR two stacks: the
|
|
192
|
-
* one paying the wanted items and the one receiving the given items. The
|
|
193
|
-
* offerer's stacks come from the offer record. All four quantity writes
|
|
194
|
-
* commit atomically or not at all.
|
|
195
|
-
*/
|
|
196
|
-
accept: (input: {
|
|
197
|
-
offerId: string;
|
|
198
|
-
wantStackId: string;
|
|
199
|
-
toGiveStackId: string;
|
|
200
|
-
}) => Promise<KitInvokeResult<string>>;
|
|
201
|
-
/** Cancel an open trade (either party may). */
|
|
202
|
-
cancel: (offerId: string) => Promise<KitInvokeResult<string>>;
|
|
203
|
-
/** Read one trade offer with parsed state. */
|
|
204
|
-
get: (offerId: string) => Promise<KitTradeOffer>;
|
|
205
|
-
/** List trades the user created or was invited to (open ones first). */
|
|
206
|
-
listMine: (userId: Scalars["BigInt"]["input"]) => Promise<KitTradeOffer[]>;
|
|
207
|
-
};
|
|
208
|
-
/** Player market (list a stack for currency; atomic purchases). */
|
|
209
|
-
readonly market: {
|
|
210
|
-
/**
|
|
211
|
-
* List items for sale: names YOUR escrowed source stack and the ask
|
|
212
|
-
* price. Payment lands straight in your wallet when someone buys.
|
|
213
|
-
*/
|
|
214
|
-
list: (input: {
|
|
215
|
-
stackId: string;
|
|
216
|
-
itemId: string;
|
|
217
|
-
quantity: number;
|
|
218
|
-
price: number;
|
|
219
|
-
displayName?: string;
|
|
220
|
-
sessionId?: string;
|
|
221
|
-
}) => Promise<{
|
|
222
|
-
__typename?: "GmContainer";
|
|
223
|
-
containerId: string;
|
|
224
|
-
appId: string;
|
|
225
|
-
sessionId: string | null;
|
|
226
|
-
typeName: string;
|
|
227
|
-
displayName: string;
|
|
228
|
-
description: string | null;
|
|
229
|
-
ownerUserId: string | null;
|
|
230
|
-
metadataJson: string;
|
|
231
|
-
}>;
|
|
232
|
-
/** Browse market listings (active ones only by default). */
|
|
233
|
-
browse: (options?: {
|
|
234
|
-
includeInactive?: boolean;
|
|
235
|
-
}) => Promise<KitMarketListing[]>;
|
|
236
|
-
/**
|
|
237
|
-
* Buy a market listing: pays the seller's wallet and transfers the items
|
|
238
|
-
* into `toStackId` in one transaction. The seller's wallet and source
|
|
239
|
-
* stack are resolved from the listing. Resolves with the buyer wallet's
|
|
240
|
-
* remaining balance.
|
|
241
|
-
*/
|
|
242
|
-
buy: (input: {
|
|
243
|
-
listingId: string;
|
|
244
|
-
walletId: string;
|
|
245
|
-
toStackId: string;
|
|
246
|
-
}) => Promise<KitInvokeResult<number>>;
|
|
247
|
-
/** Take a listing down (seller only). */
|
|
248
|
-
cancel: (listingId: string) => Promise<KitInvokeResult<boolean>>;
|
|
249
|
-
};
|
|
250
|
-
/** Find an existing wallet container id for a user (no creation). */
|
|
251
|
-
private ensureSellerWallet;
|
|
252
|
-
private toTrade;
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Order-book market methods over the market-engine (Wave 2): price-time
|
|
256
|
-
* priority matching with escrowed settlement. Deposits/withdrawals bridge
|
|
257
|
-
* to the game's wallets via compute events the game layer consumes.
|
|
258
|
-
*
|
|
259
|
-
* Obtained via `client.kit(appId).economy.market`.
|
|
260
|
-
*/
|
|
261
|
-
export declare class MarketKit {
|
|
262
|
-
private readonly engines;
|
|
263
|
-
private readonly moduleName;
|
|
264
|
-
constructor(engines: EngineDetector | undefined, moduleName: string);
|
|
265
|
-
/** Is the market engine deployed + enabled (cached per session)? */
|
|
266
|
-
engineAvailable(): Promise<boolean>;
|
|
267
|
-
/** Move coins into your market account (escrow source for bids). */
|
|
268
|
-
depositCoins(amount: number): Promise<Record<string, unknown>>;
|
|
269
|
-
/** Move items into your market account (escrow source for asks). */
|
|
270
|
-
depositItems(item: string, quantity: number): Promise<Record<string, unknown>>;
|
|
271
|
-
/** Place a limit bid: locks coins at your limit; fills at maker price. */
|
|
272
|
-
bid(item: string, price: number, quantity: number): Promise<Record<string, unknown>>;
|
|
273
|
-
/** Place a limit ask: locks items until filled or cancelled. */
|
|
274
|
-
ask(item: string, price: number, quantity: number): Promise<Record<string, unknown>>;
|
|
275
|
-
/** Cancel a resting order (owner only); escrow refunds instantly. */
|
|
276
|
-
cancel(item: string, orderId: number): Promise<Record<string, unknown>>;
|
|
277
|
-
/** Book depth: best bids/asks as [price, quantity] levels. */
|
|
278
|
-
book(item: string): Promise<Record<string, unknown>>;
|
|
279
|
-
/** Your market account (settled + locked balances). */
|
|
280
|
-
account(): Promise<Record<string, unknown>>;
|
|
281
|
-
/** Withdraw settled balances back to the game layer. */
|
|
282
|
-
withdraw(input: {
|
|
283
|
-
coins?: number;
|
|
284
|
-
item?: string;
|
|
285
|
-
quantity?: number;
|
|
286
|
-
}): Promise<Record<string, unknown>>;
|
|
287
|
-
private invoke;
|
|
288
|
-
}
|
|
289
|
-
//# sourceMappingURL=economy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"economy.d.ts","sourceRoot":"","sources":["../../src/kit/economy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAM1E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAErB,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,mCAAmC;AACnC,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAU;IAMnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAW;gBAGnB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACjC,SAAS,EAAE,YAAY,EACxC,OAAO,GAAE,iBAAsB,EAC/B,OAAO,CAAC,EAAE,cAAc;IAQ1B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B,OAAO,KAAK,eAAe,GAE1B;IAED;;;;;;OAMG;IACG,YAAY,CAChB,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EACvC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;;;;;;;;;;;IAsB5D,2EAA2E;IACrE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASnE,mEAAmE;IAC7D,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBlD;;;OAGG;IACG,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAanC;;;OAGG;IACG,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAanC,iDAAiD;IACjD,QAAQ,CAAC,IAAI;QACX;;;WAGG;wBACmB;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;SAClC;;;;;;;;;;;QAmBD,4CAA4C;oBAC5B,OAAO,CAAC,cAAc,EAAE,CAAC;QAwBzC;;;;WAIG;qBACgB;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;SACnB,KAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;MAQpC;IAEF,kEAAkE;IAClE,QAAQ,CAAC,MAAM;QACb;;;;;;;WAOG;uBACkB;YACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;YACrC,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,EAAE,MAAM,CAAC;YACvB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB;;;;;;;;;;;QAoCD;;;;;WAKG;wBACmB;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;SACvB,KAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAepC,+CAA+C;0BACvB,MAAM,KAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QASjE,8CAA8C;uBACzB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;QAYpD,wEAAwE;2BAC/C,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC,aAAa,EAAE,CAAC;MAmB9E;IAEF,mEAAmE;IACnE,QAAQ,CAAC,MAAM;QACb;;;WAGG;sBACiB;YAClB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB;;;;;;;;;;;QAwBD,4DAA4D;2BAEjD;YAAE,eAAe,CAAC,EAAE,OAAO,CAAA;SAAE,KACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QA2B9B;;;;;WAKG;qBACgB;YACjB,SAAS,EAAE,MAAM,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC;YACjB,SAAS,EAAE,MAAM,CAAC;SACnB,KAAG,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QA2BpC,yCAAyC;4BACf,MAAM,KAAG,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;MAQpE;IAEF,qEAAqE;YACvD,kBAAkB;YAgBlB,OAAO;CAwBtB;AAED;;;;;;GAMG;AACH,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM;IAGrC,oEAAoE;IACpE,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC,oEAAoE;IAC9D,YAAY,CAAC,MAAM,EAAE,MAAM;IAIjC,oEAAoE;IAC9D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIjD,0EAA0E;IACpE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIvD,gEAAgE;IAC1D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIvD,qEAAqE;IAC/D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAI1C,8DAA8D;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM;IAIvB,uDAAuD;IACjD,OAAO;IAIb,wDAAwD;IAClD,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;YAI5D,MAAM;CAUrB"}
|