import * as plugins from '../plugins.js'; export type TBaseOsRuntimeLevel = 'app-layer' | 'host-os' | 'target-state'; export type TBaseOsCloudlyConnectionStatus = | 'not-configured' | 'connecting' | 'connected' | 'failed'; export interface IBaseOsRuntimeInfo { runtime: 'baseos'; runtimeLevel: TBaseOsRuntimeLevel; nodeId: string; cloudlyUrl?: string; cloudlyConnectionStatus: TBaseOsCloudlyConnectionStatus; supervisorAvailable: boolean; supervisorAddress?: string; deviceState?: Record; stateStatus?: Record; checkedAt: number; } export interface IBaseOsDesiredState { release?: string; targetState?: Record; updatedAt?: number; } export interface IBaseOsNodeData { runtimeInfo: IBaseOsRuntimeInfo; desiredState?: IBaseOsDesiredState; createdAt: number; updatedAt: number; lastHeartbeatAt?: number; } export interface IBaseOsNodePublic { id: string; data: IBaseOsNodeData; } @plugins.smartdata.managed() export class BaseOsNode extends plugins.smartdata.SmartDataDbDoc { constructor(optionsArg?: IBaseOsNodePublic & { nodeToken?: string }) { super(); if (optionsArg) { Object.assign(this, optionsArg); } } @plugins.smartdata.unI() public id!: string; @plugins.smartdata.svDb() public nodeToken!: string; @plugins.smartdata.svDb() public data!: IBaseOsNodeData; public toPublicNode(): IBaseOsNodePublic { return { id: this.id, data: this.data, }; } }