export type SeoPageKind =
  | "service-city"
  | "service-state"
  | "segment"
  | "segment-city"
  | "segment-state"
  | "service-segment"
  | "service-segment-city"
  | "service-segment-state";

export interface SeoService {
  slug: string;
  name: string;
  shortName: string;
  description: string;
  keywords: string[];
  features: string[];
}

export interface SeoSegment {
  slug: string;
  name: string;
  plural: string;
  description: string;
  relatedSlugs: string[];
  keywords: string[];
}

export interface SeoState {
  slug: string;
  name: string;
  uf: string;
  region: string;
  preposition: "em" | "no" | "na";
}

export interface SeoCity {
  slug: string;
  name: string;
  stateSlug: string;
  uf: string;
  populationTier: 1 | 2 | 3;
  nearbySlugs: string[];
}

export interface SeoFaqItem {
  question: string;
  answer: string;
}

export interface SeoContentBlock {
  id: string;
  heading: string;
  paragraphs: string[];
}

export interface SeoPageContext {
  kind: SeoPageKind;
  slug: string;
  service?: SeoService;
  segment?: SeoSegment;
  city?: SeoCity;
  state?: SeoState;
}

export interface SeoPageContent {
  h1: string;
  eyebrow: string;
  intro: string;
  blocks: SeoContentBlock[];
  faq: SeoFaqItem[];
  keywords: string[];
  title: string;
  metaDescription: string;
  canonicalPath: string;
  locationLabel: string;
  ctaHeadline: string;
  ctaSubline: string;
}

export interface SeoBlogPost {
  slug: string;
  title: string;
  excerpt: string;
  category: string;
  publishedAt: string;
  readMinutes: number;
  keywords: string[];
  author: string;
  content: SeoContentBlock[];
  faq: SeoFaqItem[];
}
