declare namespace MasterModel {
  /**
   * Trạng thái kết nối terminal
   */
  interface TerminalConnection {
    online: boolean;
    lastSeen?: number;
  }

  /**
   * Format SenML record nhận từ MQTT
   */
  interface SenmlRecord {
    vs?: string; // value string - dữ liệu terminal
  }

  /**
   * Preset theme cho terminal
   */
  interface TerminalThemePreset {
    name: string;
    theme: {
      background: string;
      foreground: string;
      cursor: string;
      selectionBackground: string;
    };
  }

  /**
   * Định nghĩa các preset themes cho terminal
   */
  type TerminalThemes = Record<string, TerminalThemePreset>;

  /**
   * Record SenML gửi tới MQTT (dùng cho terminal commands)
   * Format: SenML (Sensor Measurement List)
   */
  interface MqttTerminalRecord {
    bn: string; // base name - session ID
    n: string; // name - tên field
    bt: number; // base time - timestamp (seconds)
    vs: string; // value string - command được encode Base64
  }

  /**
   * Payload gửi tới MQTT cho terminal
   * Là mảng các SenML records
   */
  type MqttTerminalPayload = MqttTerminalRecord[];

  /**
   * Options cho MQTT publish
   */
  interface MqttPublishOptions {
    topic: string;
    payload: string;
  }
}
