Aetheria/Aetheria.Rts.Web/Client/aetheria-rts-contract.ts
2026-07-05 15:50:22 +01:00

432 lines
10 KiB
TypeScript

// <auto-generated />
// Generated by scripts/generate-rts-bindings.mjs from the RTS CultMesh surface contract.
import type {
CultMeshOperationReceipt,
CultMeshSurfaceCatalogDiagnostic,
CultMeshSurfaceCatalogIndexDiagnostic,
CultMeshViewportRequest,
} from "cultmesh-ts";
export type Viewport = CultMeshViewportRequest;
export type AetheriaRuntimeSetMoveVectorRequest = {
actorEntityKey: string;
directionX: number;
directionY: number;
scalar: number;
observedFrameId?: number;
};
export type AetheriaRuntimeSetTargetRequest = {
actorEntityKey: string;
targetEntityKey: string;
observedFrameId?: number;
};
export type AetheriaRuntimeDaemonCommandReceipt = CultMeshOperationReceipt & {
commandId: string;
};
export type AetheriaRuntimeSelectedObjectRequest = {
entityIndex: number;
};
export type AetheriaRuntimeViewportFeedRequest = {
viewport: Viewport;
selectedEntityIndex?: number;
};
export type AetheriaRuntimeViewportFeedSnapshot = {
viewport: ViewportResponse;
selectedObject: SelectedObjectDocument | null;
inventory: InventoryDocument | null;
daemonHealth: DaemonHealthDocument;
authorityStatus: AuthorityStatusDocument;
starbridgeSession: StarbridgeSessionDocument;
assetManifest: AssetManifestDocument;
receivedAtUtc: string;
sampleMs: number;
};
export type ViewportResponse = {
schema: string;
frameId: number;
publishedAtUtc: string;
simulationTimeSeconds: number;
runId: string;
zoneIndex: number;
zoneName: string;
currentEntityKey: string;
viewport: Viewport;
controlledEntityIndices: number[];
objects: ViewObject[];
gravityInfluences: GravityInfluence[];
bodies: BodyView[];
};
export type ObjectsViewportResponse = {
schema: string;
frameId: number;
publishedAtUtc: string;
simulationTimeSeconds: number;
runId: string;
zoneIndex: number;
zoneName: string;
currentEntityKey: string;
viewport: Viewport;
controlledEntityIndices: number[];
objects: ViewObject[];
};
export type GravityViewportResponse = {
schema: string;
frameId: number;
publishedAtUtc: string;
simulationTimeSeconds: number;
runId: string;
zoneIndex: number;
zoneName: string;
viewport: Viewport;
gravityInfluences: GravityInfluence[];
bodies: BodyView[];
};
export type RenderSplatsViewportResponse = {
schema: string;
frameId: number;
publishedAtUtc: string;
simulationTimeSeconds: number;
runId: string;
zoneIndex: number;
zoneName: string;
viewport: Viewport;
layers: RenderSplatLayerDefinition[];
splats: RenderSplatSoa;
};
export type RenderSplatLayerDefinition = {
layerKey: string;
displayName: string;
channel: number;
blendMode: string;
graphicsFormat: string;
clearBeforeDraw: boolean;
clearR: number;
clearG: number;
clearB: number;
clearA: number;
};
export type RenderSplatSoa = {
count: number;
centerX: number[];
centerY: number[];
halfExtentX: number[];
halfExtentY: number[];
rotationCos: number[];
rotationSin: number[];
channel: number[];
falloff: number[];
valueR: number[];
valueG: number[];
valueB: number[];
valueA: number[];
sourceKey: string[];
layerIndex: number[];
sourceKind: number[];
frequencyX: number[];
frequencyY: number[];
phaseX: number[];
phaseY: number[];
animationSpeed: number[];
sourceFlags: number[];
};
export type ViewObject = {
entityIndex: number;
entityKey: string;
displayName: string;
kind: string;
factionKey: string;
x: number;
y: number;
z: number;
directionX: number;
directionY: number;
velocityX: number;
velocityY: number;
controlled: boolean;
targetEntityIndex: number;
isActive: boolean;
visibility: number;
iconAsset: AssetRef;
status: EntityStatus;
inventory: InventoryItem[];
};
export type EntityStatus = {
hull: number;
shield: number;
heat: number;
};
export type InventoryItem = {
source: string;
itemKey: string;
quantity: number;
quality: number;
durability: number;
enabled: boolean;
iconAsset: AssetRef;
};
export type SelectedObjectDocument = {
schema: string;
frameId: number;
runId: string;
zoneIndex: number;
entityIndex: number;
selected: ViewObject | null;
};
export type InventoryDocument = {
schema: string;
frameId: number;
runId: string;
zoneIndex: number;
entityIndex: number;
entityKey: string;
items: InventoryItem[];
equipment: InventoryItem[];
cargo: InventoryItem[];
};
export type DaemonHealthDocument = {
schema: string;
daemonId: string;
verseId: string;
publishedAtUtc: string;
statePath: string;
frameId: number;
observedCommandCount: number;
appliedCommandCount: number;
rejectedCommandCount: number;
status: string;
publicationSource: string;
transport: string;
commandBoundaryPath: string;
};
export type AuthorityStatusDocument = {
schema: string;
verseId: string;
policyId: string;
ruleVersion: string;
hostRuntimeId: string;
defaultMode: string;
updatedAtUtc: string;
rules: AuthorityRuleDocument[];
};
export type AuthorityRuleDocument = {
ruleId: string;
subjectPrefix: string;
claimKinds: string[];
mode: string;
runtimeIds: string[];
leaseScope: string;
priority: number;
};
export type StarbridgeSessionDocument = {
schema: string;
frameId: number;
publishedAtUtc: string;
sessionId: string;
scenarioId: string;
scenarioName: string;
runId: string;
zoneIndex: number;
zoneName: string;
phase: string;
currentWaveIndex: number;
baseStatus: StarbridgeBaseStatusDocument;
stationStock: StarbridgeStationStockItemDocument[];
waveForecast: StarbridgeWaveForecastDocument[];
runtimeRoles: StarbridgeRuntimeRoleDocument[];
};
export type StarbridgeBaseStatusDocument = {
entityKey: string;
displayName: string;
hull: number;
shield: number;
heat: number;
isActive: boolean;
};
export type StarbridgeStationStockItemDocument = {
itemKey: string;
quantity: number;
quality: number;
durability: number;
source: string;
iconAsset: AssetRef;
};
export type AssetManifestDocument = {
schema: string;
publishedAtUtc: string;
runId: string;
baseUri: string;
assets: AssetManifestEntry[];
};
export type AssetManifestEntry = {
ref: AssetRef;
sizeBytes: number;
width: number;
height: number;
tags: string[];
};
export type AssetRef = {
assetKey: string;
kind: string;
uri: string;
transport: string;
contentHash: string;
mimeType: string;
metadata: Record<string, string>;
};
export type StarbridgeWaveForecastDocument = {
waveIndex: number;
displayName: string;
attackerKeys: string[];
bossKey: string;
recoveredTechnologyKeys: string[];
};
export type StarbridgeRuntimeRoleDocument = {
runtimeId: string;
role: string;
entityKey: string;
};
export type GravityInfluence = {
bodyKey: string;
orbitKey: string;
kind: string;
x: number;
y: number;
radius: number;
gravityDepth: number;
gravityDepthExponent: number;
waveRadius: number;
waveDepth: number;
waveSpeed: number;
};
export type BodyView = {
bodyKey: string;
orbitKey: string;
name: string;
kind: string;
x: number;
y: number;
radius: number;
isAsteroidBelt: boolean;
iconAsset: AssetRef;
iconSize: number;
};
export type AetheriaMenuSurfaceRequest = {
surfaceId?: string;
inGame?: boolean;
canOpenRuntimeInputScreen?: boolean;
panelOnly?: boolean;
};
export type AetheriaEveSurfaceRequest = {
surfaceId?: string;
recordKey?: string;
};
export type AetheriaEveCommandRequest = {
providerId?: string;
surfaceId?: string;
command?: string;
clientId?: string;
issuedAtUtc?: string;
payload?: Record<string, unknown>;
};
export type AetheriaMenuSurfaceDocument = {
providerId: string;
providerKind: string;
title: string;
version: number;
updatedAtUtc: string;
surface: AetheriaMenuSurfaceTree;
commands: AetheriaMenuSurfaceCommand[];
};
export type AetheriaMenuSurfaceTree = {
id: string;
root: AetheriaMenuSurfaceComponent;
styles: AetheriaMenuStyleToken[];
};
export type AetheriaMenuSurfaceComponent = {
id: string;
kind: string;
props: Record<string, string>;
embeddedDocuments?: AetheriaMenuEmbeddedDocumentSlot[];
children: AetheriaMenuSurfaceComponent[];
};
export type AetheriaMenuEmbeddedDocumentSlot = {
slotId: string;
documentId: string;
schemaId: string;
presentationKind: string;
};
export type AetheriaMenuStyleToken = {
name: string;
value: string;
};
export type AetheriaMenuSurfaceCommand = {
command: string;
label: string;
transport: string;
};
export type AetheriaRtsApi = {
mapViewport(request: Viewport): Promise<ViewportResponse>;
objectsViewport(request: Viewport): Promise<ObjectsViewportResponse>;
gravityViewport(request: Viewport): Promise<GravityViewportResponse>;
renderSplatsViewport(request: Viewport): Promise<RenderSplatsViewportResponse>;
selectedObject(request: AetheriaRuntimeSelectedObjectRequest): Promise<SelectedObjectDocument>;
inventory(request: AetheriaRuntimeSelectedObjectRequest): Promise<InventoryDocument>;
daemonHealth(): Promise<DaemonHealthDocument>;
authorityStatus(): Promise<AuthorityStatusDocument>;
starbridgeSession(): Promise<StarbridgeSessionDocument>;
assetManifest(): Promise<AssetManifestDocument>;
watchViewportFeed(request: AetheriaRuntimeViewportFeedRequest, callback: (snapshot: AetheriaRuntimeViewportFeedSnapshot) => void): () => void;
setMoveVector(request: AetheriaRuntimeSetMoveVectorRequest): Promise<AetheriaRuntimeDaemonCommandReceipt>;
setTarget(request: AetheriaRuntimeSetTargetRequest): Promise<AetheriaRuntimeDaemonCommandReceipt>;
surfaceCatalog(): Promise<CultMeshSurfaceCatalogDiagnostic>;
surfaceCatalogIndex(): Promise<CultMeshSurfaceCatalogIndexDiagnostic>;
eveSurface(request: AetheriaEveSurfaceRequest): Promise<AetheriaMenuSurfaceDocument>;
submitEveCommand(request: AetheriaEveCommandRequest): Promise<AetheriaRuntimeDaemonCommandReceipt>;
mainMenuSurface(request: AetheriaMenuSurfaceRequest): Promise<AetheriaMenuSurfaceDocument>;
debugSurface(): Promise<AetheriaMenuSurfaceDocument>;
watchDebugSurface(callback: (surface: AetheriaMenuSurfaceDocument) => void): () => void;
windowControl(action: "minimize" | "maximize" | "close"): Promise<void>;
health(): Promise<unknown>;
};