export type PromoContent = {
  tag: string;
  title: string;
  description: string;
  bulletPoints: string[];
};

export type HistoryActionDictionary = {
  menu: string;
  preview: string;
  download: string;
  copyPrompt: string;
  animate: string;
  share: string;
  delete: string;
};

export type NanoWorkbenchDictionary = {
  menuTitle: string;
  imageCategoryLabel: string;
  videoCategoryLabel: string;
  modelLabels: Record<string, string>;
  promptLabel: string;
  promptPlaceholder: string;
  promptHint: string;
  formatLabel: string;
  formatOptions: Array<{ value: string; label: string }>;
  primaryLabel: string;
  primaryEmptyTitle: string;
  primaryEmptyHint: string;
  referencesLabel: string;
  referenceEmptyTitle: string;
  referenceEmptyHint: string;
  removeLabel: string;
  deleteTitle: string;
  generate: string;
  clearAll: string;
  history: {
    title: string;
    subtitle: string;
    button: string;
  };
  historyStatus: {
    submitting: string;
    waiting: string;
    queuing: string;
    generating: string;
    progressLabel: string;
    completed: string;
    failed: string;
    noResult: string;
    promptCopied: string;
    promptCopyError: string;
  };
  historyActions: HistoryActionDictionary;
  historyModals: {
    previewTitle: string;
    animateTitle: string;
    animateDescription: string;
    animateSelectLabel: string;
    animateConfirm: string;
    shareTitle: string;
    shareSubtitle: string;
    shareEmail: string;
    shareTelegram: string;
    shareWhatsapp: string;
    shareCopyLink: string;
    shareCopied: string;
    deleteTitle: string;
    deleteDescription: string;
    deleteConfirm: string;
    cancel: string;
  };
  promos: Record<string, PromoContent>;
};

export type VideoWorkbenchDictionary = {
  menuTitle: string;
  modelLabels: Record<string, string>;
  promptLabel: string;
  promptPlaceholder: string;
  promptHint: string;
  negativePromptLabel: string;
  negativePromptPlaceholder: string;
  modeLabel: string;
  modeOptions: Record<string, string>;
  aspectLabel: string;
  resolutionLabel: string;
  personLabel: string;
  seedLabel: string;
  referenceLabel: string;
  referenceHint: string;
  removeLabel: string;
  generate: string;
  clearAll: string;
  history: {
    title: string;
    subtitle: string;
    button: string;
  };
  promos: Record<string, PromoContent>;
};

type PricingPlanId = "starter" | "creator" | "studio";

export type PricingPlanDictionary = {
  title: string;
  description: string;
  features: string[];
};

export type MarketingDictionary = {
  pricing: {
    heroTitle: string;
    heroSubtitle: string;
    priceSuffix: string;
    buttonLabel: string;
    footerTitle: string;
    footerBody: string;
    plans: Record<PricingPlanId, PricingPlanDictionary>;
  };
};

export type Dictionary = {
  common: {
    brandShort: string;
    brandLong: string;
    logIn: string;
    signOutLabel: string;
    balanceLabel: string;
    creditsSuffix: string;
    searchLabel: string;
    languageMenuLabel: string;
  };
  navigation: {
    suite: string;
    home: string;
    stock: string;
    community: string;
    about: string;
    pricing: string;
    faq: string;
    blog: string;
    imageGenerator: string;
    videoGenerator: string;
    assistant: string;
    allTools: string;
    creations: string;
    pinned: string;
  };
  actions: {
    upgrade: string;
    upgradeDescription: string;
    create: string;
  };
  dashboard: {
    welcome: string;
    selectModel: string;
    guidedMode: string;
    proMode: string;
    promptPlaceholder: string;
    tasks: string;
    history: string;
    historyEmpty: string;
    inspiration: string;
    inspirationRefresh: string;
    recent: string;
  };
  nanoWorkbench: NanoWorkbenchDictionary;
  videoWorkbench: VideoWorkbenchDictionary;
  marketing: MarketingDictionary;
  auth: {
    loginTitle: string;
    loginSubtitle: string;
    registerTitle: string;
    registerSubtitle: string;
    emailLabel: string;
    passwordLabel: string;
    confirmPasswordLabel: string;
    submitLogin: string;
    submitRegister: string;
    orDivider: string;
    googleButton: string;
    registerCta: string;
    registerLink: string;
    loginCta: string;
    loginLink: string;
    errorGeneric: string;
    passwordMismatch: string;
  };
  account: {
    title: string;
    subtitle: string;
    balanceLabel: string;
    historyTitle: string;
    historyEmpty: string;
    refreshLabel: string;
  };
};
