// ─── Entities ─────────────────────────────────────────────────────────────────
export type TemplateStage = "Stage 1" | "Stage 2";
export type TemplateType  = "DOCUMENT" | "CERTIFICATE";

export interface Template {
  id:           number;
  name:         string;
  stageName:    TemplateStage;
  templateType: TemplateType;
  version:      string;
  filePath:     string;
  isActive:     boolean;
  createdBy:    number | null;
  createdAt:    string;
  updatedAt:    string;
  url:          string;
}

// ─── DTOs ─────────────────────────────────────────────────────────────────────
export interface CreateTemplateDto {
  name:         string;
  stageName:    TemplateStage;
  templateType: TemplateType;
  version:      string;
  filePath:     string;
  isActive?:    boolean;
  createdBy?:   number | null;
}

export type UpdateTemplateDto = Partial<CreateTemplateDto>;

// ─── Paginated response ───────────────────────────────────────────────────────
export interface PaginatedTemplatesResponse {
  data: Template[];
  meta: {
    total:       number;
    page:        number;
    limit:       number;
    totalPages:  number;
    hasNextPage: boolean;
    hasPrevPage: boolean;
  };
}

// ─── Table row (used in TemplateTable / TemplateRow / DynamicTemplateRow) ─────
export interface TemplateRow {
  sno:          number;
  id:           number;
  name:         string;
  stageName:    TemplateStage;
  templateType: TemplateType;
  version:      string;
  filePath:     string;
  isActive:     boolean;
  createdBy:    number | null;
  createdAt:    string;
  updatedAt:    string;
  url:          string;
  [key: string]: any;
}
