export interface GetLatestRequest {
  organization_apikey: string;
  app_apikey: string;
  tenant_apikey?: string;  // Optional, required for multi-tenant apps
  item_id: string;
}

export interface AnalyzeLogsRequest {
  organization_apikey: string;
  app_apikey: string;
  tenant_apikey?: string;  // Optional, required for multi-tenant apps
  item_id: string;
  after?: string;          // Optional, ISO 8601 timestamp
  before?: string;         // Optional, ISO 8601 timestamp
}

export interface AnalyzeCurrentRequest {
  organization_apikey: string;
  app_apikey: string;
  tenant_apikey?: string;  // Optional, required for multi-tenant apps
  item_id: string;
}

export interface AnalyzeCurrentResponse {
  timestamp: string;       // ISO 8601 timestamp
  overview: string;
  status: 'normal' | 'warning' | 'critical';
  description: string;
  metrics: Record<string, {
    status: 'normal' | 'warning' | 'critical';
    value: any;
    unit?: string;
    description: string;
  }>;
  recommendations: Array<{
    priority: 'high' | 'medium' | 'low';
    title: string;
    description: string;
    action: string;
  }>;
}

export interface AnalysisResult {
  summary: {
    total_logs: number;
    item_id: string;
    first_log_time: string;    // ISO 8601 timestamp
    last_log_time: string;     // ISO 8601 timestamp
    time_range: string;
    average_interval?: string;
  };
  metrics: Record<string, {
    min: number;
    max: number;
    average: number;
    std_dev: number;
  }>;
  time_series: Array<{
    timestamp: string;         // ISO 8601 timestamp
    metrics: Record<string, any>;
  }>;
  ai_analysis?: {
    timestamp: string;         // ISO 8601 timestamp
    overview: string;
    status_summary: string;
    current_status: {
      status: string;
      description: string;
      alerts: Array<{
        level: string;
        title: string;
        description: string;
        metric?: string;
        value?: string;
        threshold?: string;
      }>;
      metrics: Record<string, {
        status: string;
        value: string;
        unit?: string;
        description: string;
      }>;
      contexts: Array<{
        context: string;
        count: number;
        first_seen: string;    // ISO 8601 timestamp
        last_seen: string;     // ISO 8601 timestamp
        relevance: string;
        description: string;
        impact: string;
      }>;
    };
    historical_analysis: {
      patterns: Array<{
        type: string;
        title: string;
        description: string;
        confidence: number;
      }>;
      anomalies: Array<{
        type: string;
        title: string;
        description: string;
        metric?: string;
        value?: string;
        expected?: string;
        severity: string;
      }>;
      insights: Array<{
        category: string;
        title: string;
        description: string;
        impact: string;
      }>;
      recommendations: Array<{
        priority: string;
        title: string;
        description: string;
        action: string;
        impact: string;
      }>;
      metrics: Record<string, {
        status: string;
        trend: string;
        summary: string;
        anomalies: Array<{
          type: string;
          title: string;
          description: string;
          metric?: string;
          value?: string;
          expected?: string;
          severity: string;
        }>;
        recommendations: Array<{
          priority: string;
          title: string;
          description: string;
          action: string;
          impact: string;
        }>;
      }>;
      contexts: Array<{
        context: string;
        count: number;
        first_seen: string;    // ISO 8601 timestamp
        last_seen: string;     // ISO 8601 timestamp
        relevance: string;
        description: string;
        impact: string;
      }>;
    };
  };
} 