import type { PluginBridgeExecuteEnvelope, PluginBridgeExecutionResult } from "./pluginBridge"; import type { GameClientBridgeCommandFilterRequest, GameClientBridgeQueueRequest, GameClientBridgeSnapshotQuery, LogStreamCursorRequest, LogStreamCursorResponse, LogStreamListResponse, ScumListRequest, ScumUserListResponse, ScumUserTrajectoryListResponse, ScumVehicleLockListResponse, ScumVehicleListResponse, ScumVehicleTrajectoryListResponse } from "../api/types"; export interface PluginDataMutation { operation: "put" | "delete"; key: string; value?: Record; } export interface PluginPageWorkspaceActions { pluginData?: { list: (collection: string, key?: string) => Promise; put: (collection: string, key: string, value: Record) => Promise; delete: (collection: string, key: string) => Promise; transact: (collection: string, mutations: PluginDataMutation[]) => Promise; }; gameClient?: { queue: (request: GameClientBridgeQueueRequest) => Promise; get: (commandId: string) => Promise; list: (filter?: GameClientBridgeCommandFilterRequest) => Promise; snapshots: (query?: GameClientBridgeSnapshotQuery) => Promise; }; logs?: { listStreams: () => Promise; query: (request: LogStreamCursorRequest) => Promise; }; scum?: { users: (request?: ScumListRequest) => Promise; userTrajectories: (request?: ScumListRequest) => Promise; vehicles: (request?: ScumListRequest) => Promise; vehicleTrajectories: (request?: ScumListRequest) => Promise; vehicleLocks: (request?: ScumListRequest) => Promise; }; dispatch?: (envelope: PluginBridgeExecuteEnvelope, signal?: AbortSignal) => Promise; }