export type PlayStatus = "preparing" | "running" | "suspending" | "broken"; export type InstanceStatus = | "prepare" | "running" | "pausing" | "paused" | "resuming" | "closing" | "closed" | "error"; export interface Play { gameCode: string; started: string; parentId?: string; id: string; finished?: string; status: PlayStatus; } export interface Permission { writeTick?: boolean; readTick?: boolean; subscribeTick?: boolean; sendEvent?: boolean; subscribeEvent?: boolean; maxEventPriority: number; } export interface PlayToken { id: string; playId: string; value: string; expire: string; url: string; permission: string | Permission; meta: { userId: string; }; } export interface AuthToken { accessToken: string; idToken: string; expiresIn: number; } export type ModuleCodes = | "dynamicPlaylogWorker" | "staticPlaylogWorker" | "videoPublisher" | "eventHandlers" | "akashicEngineParameters"; export interface DynamicPlaylogWorkerValues { playId: string; executionMode: string; frameRateRatio?: number; } export interface StaticPlaylogWorkerValues { playlog: | { playId: string; } | { playData: string; }; frameRateRatio?: number; seed?: number; terminateAge?: number; enbaleSnapshot?: boolean; } export interface VideoPublisherValues { videoPublishUri?: string; videoFrameRate: number; } export interface AkashicEventHandler { type: "instanceStatus" | "error" | "gameEvent"; endpoint: string; protocol: string; } export interface EventHandlersValues { handlers: AkashicEventHandler[]; } export interface AkashicEngineParametersValues { gameConfigurations?: string[]; contentJsonUrl?: string; args?: {}; externals?: { code: "nicoservice" | "contentStorage"; }[]; } export type ModuleValues = | DynamicPlaylogWorkerValues | StaticPlaylogWorkerValues | VideoPublisherValues | EventHandlersValues | AkashicEngineParametersValues; export interface BaseModule { code: ModuleCodes; values: ModuleValues; } export interface DynamicPlaylogWorkerModule extends BaseModule { code: "dynamicPlaylogWorker"; values: DynamicPlaylogWorkerValues; } export interface StaticPlaylogWorkerModule extends BaseModule { code: "staticPlaylogWorker"; values: StaticPlaylogWorkerValues; } export interface VideoPublisherModule extends BaseModule { code: "videoPublisher"; values: VideoPublisherValues; } export interface EventHandlersModule extends BaseModule { code: "eventHandlers"; values: EventHandlersValues; } export interface AkashicEngineParametersModule extends BaseModule { code: "akashicEngineParameters"; values: AkashicEngineParametersValues; } export type Module = | DynamicPlaylogWorkerModule | StaticPlaylogWorkerModule | VideoPublisherModule | EventHandlersModule | AkashicEngineParametersModule; export interface Instance { id: string; gameCode: string; status: InstanceStatus; modules?: Module[]; region: string; entryPoint: string; cost: number; exitCode?: number; processName?: string; } export interface JoinEventValues { userId: string; name: string; } export interface LeaveEventValues { userId: string; } export interface MessageEventValues { userId: string; event: any; priority?: number; isTransient?: boolean; } export interface JoinEventParams { type: "JoinPlayer"; values: JoinEventValues; } export interface LeaveEventParams { type: "LeavePlayer"; values: LeaveEventValues; } export interface MessageEventParams { type: "Message"; values: MessageEventValues; } export type PlayEventParams = JoinEventParams | LeaveEventParams | MessageEventParams;