/**
 * Bendri tipai / shared types for the A.R.K.A. node.
 * Dvikalbis tekstas saugomas kaip { lt, en }; pirminė kalba — lietuvių.
 */
export interface Bilingual {
  lt: string
  en: string
}

/** TCP gynybos lygmenys, perkelti į „zero connectivity" kontekstą. */
export type TcpLayer = 'perimeter' | 'system' | 'human'

export type ModuleStatus = 'online' | 'degraded' | 'offline' | 'not_installed'

export interface ArkaModule {
  id: string
  name: Bilingual
  description: Bilingual
  /** Su kuriuo TCP lygmeniu modulis siejasi. */
  layer: TcpLayer
  /** Tabler ikonos pavadinimas (naudoja UI). */
  icon: string
  /** Bazinė būsena, kai modulis nepriklauso nuo atsisiųsto turinio. */
  status: ModuleStatus
  /**
   * Jei nustatyta, modulio būsena tampa „online", kai atsisiųstas bent vienas
   * šio tipo išteklius (wiki ZIM ar žemėlapis). Kitu atveju lieka bazinė `status`.
   */
  contentType?: 'wiki' | 'map'
  /** Atitinkamas TCP žingsnis (sužymėk/atskirk/sukietink/stebėk/atsistatyk/išgyvenk). */
  tcpStep: Bilingual
}

export type KnowledgeCategory =
  | 'medicine'
  | 'survival'
  | 'security'
  | 'engineering'
  | 'comms'

export interface KnowledgeEntry {
  id: string
  title: Bilingual
  category: KnowledgeCategory
  tags: string[]
  /** Trumpas turinys, naudojamas tiek paieškai, tiek RAG kontekstui. */
  body: Bilingual
}

export interface MapRegion {
  id: string
  name: Bilingual
  /** Apytikslis dydis baitais (vektorinis PMTiles paketas). */
  sizeBytes: number
  available: boolean
}

export interface ChatMessage {
  role: 'system' | 'user' | 'assistant'
  content: string
}

/** Realus vietinio mazgo vykdymo aplinkos momentinis vaizdas. */
export interface NodeRuntime {
  name: string
  version: string
  hostname: string
  mode: 'local-only'
  uptimeSeconds: number
  processUptimeSeconds: number
  memory: {
    totalBytes: number
    freeBytes: number
    usedPercent: number
  }
  storage: {
    path: string
    totalBytes: number
    freeBytes: number
    usedPercent: number
  }
  updatedAt: string
}
