/** Donna (the AI product) — usage and monthly gifts, amounts in EUR. `price` = client price (cost × markup). */

export interface DonnaGift {
  id: number;
  amount_eur: number;
  vehicles_count: number;
  price_per_vehicle: number;
  /** The amount was typed by an admin instead of computed. */
  custom: boolean;
  note?: string | null;
  revoked: boolean;
}

/** A company that is not on the list yet. */
export interface DonnaCandidate {
  id: number;
  name: string;
}

export interface DonnaUsageClientRow {
  company: { id: number; name: string };
  price_per_vehicle: number | null;
  gift_enabled: boolean;
  gift: DonnaGift | null;
  donna: { calls: number; price_eur: number; cost_eur: number; gift_used_eur: number; overage_eur: number };
  platform: { calls: number; price_eur: number; cost_eur: number };
  net_eur: number;
}

export interface DonnaUsageTotals {
  gift_eur: number;
  donna_price_eur: number;
  donna_cost_eur: number;
  overage_eur: number;
  platform_price_eur: number;
  platform_cost_eur: number;
  unassigned_cost_eur: number;
  net_eur: number;
}

export interface DonnaUsageMonth {
  period: string;
  currency: string;
  markup: number;
  gift_rate: number;
  gift_enabled: boolean;
  totals: DonnaUsageTotals;
  clients: DonnaUsageClientRow[];
}

export interface DonnaUsageLine {
  feature: string;
  group: "chat" | "worker" | "platform";
  label: string;
  calls: number;
  price_eur: number;
  cost_eur: number;
}

export interface DonnaWorker {
  key: string;
  label: string;
  job: string | null;
  enabled: boolean | null;
  price_eur: number;
}

export interface DonnaClientDetail {
  period: string;
  company: { id: number; name: string };
  price_per_vehicle: number | null;
  gift_enabled: boolean;
  gift_quote: { vehicles_count: number; price_per_vehicle: number; amount_eur: number } | null;
  donna: {
    gift: (DonnaGift & { granted_at: string | null; seen: boolean }) | null;
    used_eur: number;
    remaining_eur: number;
    overage_eur: number;
    cost_eur: number;
    lines: DonnaUsageLine[];
    workers: DonnaWorker[];
  };
  platform: { offered: boolean; used_eur: number; cost_eur: number; lines: DonnaUsageLine[] };
  daily: { day: string; account: "donna" | "platform"; price_eur: number; cost_eur: number }[];
}

/** Donna's pricing, all managed here: provider prices are USD per million tokens. */
export interface DonnaModelPrice {
  model: string;
  input: number;
  output: number;
  cache_read: number | null;
  cache_write: number | null;
}

export interface DonnaSettings {
  markup: number;
  usd_to_eur: number;
  gift_enabled: boolean;
  gift_rate: number;
  ocr_page_usd: number;
  default_price: { input: number; output: number };
  models: DonnaModelPrice[];
}

export interface UpdateDonnaClientPayload {
  donna_price_per_vehicle?: number | null;
  donna_gift_enabled?: boolean;
}
