export type ClientProfileData = {
  account?: {
    name?: string;
    email?: string;
    phone?: string;
  };
  personType?: "pf" | "pj";
  pf?: {
    cpf?: string;
    birthDate?: string;
  };
  pj?: {
    cnpj?: string;
    legalName?: string;
    tradeName?: string;
    stateRegistration?: string;
  };
  address?: {
    cep?: string;
    street?: string;
    number?: string;
    complement?: string;
    district?: string;
    city?: string;
    state?: string;
  };
  couponCode?: string;
  customizationNotes?: string;
};

export type AdminClientCompany = {
  id: number;
  name: string;
  slug: string;
  document?: string | null;
  email?: string | null;
  phone?: string | null;
  logo?: string | null;
  isActive: boolean;
  settings?: Record<string, unknown>;
  createdAt?: string;
};

export type AdminClientSubscription = {
  id: number;
  planName: string;
  planSlug?: string;
  status: string;
  billingCycle?: string;
  amount: number;
  gateway?: string;
  startsAt?: string;
  nextPayment?: string;
  cancelledAt?: string;
};

export type AdminClientPlanningQuote = {
  id: number;
  tipoProjeto?: string;
  tipoAplicativo?: string;
  objetivo?: string;
  funcionalidades: string[];
  plataformas: string[];
  servicosOpcionais: string[];
  estiloVisual?: string;
  referencias: unknown;
  plano: string;
  valor: number;
  prazo?: string;
  complexidade?: string;
  statusPagamento: string;
  statusProjeto: string;
  createdAt?: string;
};

export type AdminClientPayment = {
  id: number;
  amount: number;
  status: string;
  gateway?: string;
  paymentMethod?: string;
  paidAt?: string;
  createdAt?: string;
};

export type AdminClientApp = {
  id: number;
  name: string;
  platform?: string;
  status?: string;
  version?: string;
};

export type AdminClientDetail = {
  id: number;
  name: string;
  email: string;
  phone?: string | null;
  avatar?: string | null;
  role: string;
  personType?: "pf" | "pj" | null;
  profile: ClientProfileData;
  isActive: boolean;
  emailVerifiedAt?: string | null;
  createdAt?: string;
  updatedAt?: string;
  company: AdminClientCompany | null;
  activePlan: {
    subscriptionId: number;
    planId: number;
    planName: string;
    planSlug?: string;
    status: string;
    billingCycle?: string;
    amount: number;
    startsAt?: string;
    nextPayment?: string;
    expiresAt?: string;
  } | null;
  subscriptions: AdminClientSubscription[];
  planningQuotes: AdminClientPlanningQuote[];
  payments: AdminClientPayment[];
  apps: AdminClientApp[];
  stats: {
    subscriptionsCount: number;
    planningQuotesCount: number;
    paymentsCount: number;
    appsCount: number;
  };
};
