import type { RELANCE_TONES } from "../constants/index.js";

export type RelanceTone = (typeof RELANCE_TONES)[number];

/** Une étape d'un plan = un email programmé à T+offsetDays après l'échéance. */
export type PlanStep = {
  id: string;
  /** Position ordonnée dans le plan (0-indexed). */
  order: number;
  /** Décalage en jours par rapport à la date d'échéance. Peut être négatif (rappel avant échéance). */
  offsetDays: number;
  tone: RelanceTone;
  /** Sujet de l'email, peut contenir des variables {{client.name}} etc. */
  subject: string;
  /** Corps de l'email (markdown léger). */
  body: string;
  /**
   * Étape qui requiert une validation manuelle obligatoire (mise en demeure).
   * cf. CLAUDE.md, principes produit §4.
   */
  requiresManualValidation: boolean;
};

export type Plan = {
  id: string;
  organizationId: string;
  /** Slug stable pour les plans pré-fournis (ex. "standard-30j"). null pour plans custom. */
  slug: string | null;
  name: string;
  description: string;
  isDefault: boolean;
  steps: PlanStep[];
  createdAt: string;
  updatedAt: string;
};
