export interface Dictionary {
  common: {
    welcome: string;
    loading: string;
    error: string;
    save: string;
    cancel: string;
    confirm: string;
    search: string;
    back: string;
    backToLogin: string;
    backToHome: string;
    or: string;
    comingSoon: string;
    menu: string;
    language: string;
    currencySAR: string;
    remove: string;
  };
  home: {
    tagline: string;
    nav: {
      home: string;
      services: string;
      howItWorks: string;
      becomeProvider: string;
      downloadApp: string;
      contact: string;
      providerLogin: string;
      registerProvider: string;
      openMenu: string;
      closeMenu: string;
    };
    hero: {
      eyebrow: string;
      title: string;
      description: string;
      downloadCta: string;
    };
    stats: {
      services: { value: string; label: string };
      providers: { value: string; label: string };
      cities: { value: string; label: string };
      rating: { value: string; label: string };
    };
    services: {
      eyebrow: string;
      title: string;
      subtitle: string;
      learnMore: string;
      items: {
        exteriorWash: { name: string; description: string };
        interiorCleaning: { name: string; description: string };
        fullDetailing: { name: string; description: string };
        premiumWash: { name: string; description: string };
        ceramicCoating: { name: string; description: string };
        engineCleaning: { name: string; description: string };
        waxPolish: { name: string; description: string };
        addOn: { name: string; description: string };
      };
    };
    why: {
      eyebrow: string;
      title: string;
      subtitle: string;
      items: {
        verifiedPros: { title: string; description: string };
        doorstep: { title: string; description: string };
        gpsTracking: { title: string; description: string };
        securePayments: { title: string; description: string };
        beforeAfter: { title: string; description: string };
        instantScheduled: { title: string; description: string };
        digitalInvoice: { title: string; description: string };
        ratings: { title: string; description: string };
        support247: { title: string; description: string };
      };
    };
    how: {
      eyebrow: string;
      title: string;
      subtitle: string;
      stepLabel: string;
      steps: {
        detectLocation: { title: string; description: string };
        selectService: { title: string; description: string };
        chooseProvider: { title: string; description: string };
        bookDateTime: { title: string; description: string };
        trackEnjoy: { title: string; description: string };
      };
    };
    app: {
      eyebrow: string;
      title: string;
      subtitle: string;
      features: {
        otpLogin: string;
        gpsDetection: string;
        smartSelection: string;
        nearbyProviders: string;
        liveTracking: string;
        onlinePayments: string;
        bookingHistory: string;
        pushNotifications: string;
        digitalInvoices: string;
        ratingsReviews: string;
      };
    };
    partner: {
      eyebrow: string;
      title: string;
      description: string;
      benefits: {
        moreBookings: { title: string; description: string };
        dashboard: { title: string; description: string };
        securePayments: { title: string; description: string };
        scheduleMgmt: { title: string; description: string };
        ratingsReviews: { title: string; description: string };
        analytics: { title: string; description: string };
      };
      registerCta: string;
      loginCta: string;
    };
    testimonials: {
      eyebrow: string;
      title: string;
      subtitle: string;
      items: {
        one: { name: string; role: string; quote: string };
        two: { name: string; role: string; quote: string };
        three: { name: string; role: string; quote: string };
        four: { name: string; role: string; quote: string };
      };
    };
    download: {
      eyebrow: string;
      title: string;
      description: string;
      appStore: string;
      googlePlay: string;
      qrHint: string;
    };
    contact: {
      eyebrow: string;
      title: string;
      subtitle: string;
      infoTitle: string;
      addressLabel: string;
      addressValue: string;
      emailLabel: string;
      emailValue: string;
      phoneLabel: string;
      phoneValue: string;
      hoursLabel: string;
      hoursValue: string;
      form: {
        fullName: string;
        fullNamePlaceholder: string;
        email: string;
        emailPlaceholder: string;
        phone: string;
        subject: string;
        subjectPlaceholder: string;
        message: string;
        messagePlaceholder: string;
        submit: string;
        success: string;
      };
      validation: {
        fullNameRequired: string;
        emailRequired: string;
        emailInvalid: string;
        phoneInvalid: string;
        subjectRequired: string;
        messageRequired: string;
        messageMin: string;
      };
    };
    footer: {
      tagline: string;
      company: {
        title: string;
        about: string;
        services: string;
        careers: string;
        contact: string;
      };
      providers: {
        title: string;
        login: string;
        register: string;
        dashboard: string;
      };
      support: {
        title: string;
        faqs: string;
        helpCenter: string;
        privacy: string;
        terms: string;
        refund: string;
      };
      followUs: string;
      rights: string;
    };
  };
  auth: {
    login: {
      title: string;
      subtitle: string;
      identifier: string;
      identifierPlaceholder: string;
      chooseSignInMethod: string;
      authType: {
        password: string;
        otp: string;
      };
      password: string;
      passwordPlaceholder: string;
      showPassword: string;
      hidePassword: string;
      otpCode: string;
      sendOtp: string;
      otpSent: string;
      resendOtp: string;
      forgotPassword: string;
      submit: string;
      providerPrompt: string;
      registerAsProvider: string;
    };
    registerProvider: {
      title: string;
      subtitle: string;
      comingSoonBody: string;
      steps: {
        account: string;
        business: string;
        location: string;
        documents: string;
        review: string;
      };
      nav: {
        back: string;
        next: string;
        submit: string;
      };
      account: {
        title: string;
        subtitle: string;
        firstName: string;
        firstNamePlaceholder: string;
        lastName: string;
        lastNamePlaceholder: string;
        email: string;
        emailPlaceholder: string;
        phone: string;
        password: string;
        passwordPlaceholder: string;
        confirmPassword: string;
        confirmPasswordPlaceholder: string;
        sendOtp: string;
        otpSent: string;
        otpLabel: string;
        verify: string;
        resendOtp: string;
        resendIn: string;
        verified: string;
        changeNumber: string;
        alreadyRegistered: string;
        verifyRequired: string;
      };
      business: {
        title: string;
        subtitle: string;
        businessName: string;
        businessNamePlaceholder: string;
        logo: string;
        logoHint: string;
      };
      location: {
        title: string;
        subtitle: string;
        address: string;
        addressPlaceholder: string;
        city: string;
        cityPlaceholder: string;
        state: string;
        statePlaceholder: string;
        zip: string;
        zipPlaceholder: string;
        pinHint: string;
        coordinates: string;
        radius: string;
        radiusValue: string;
        radiusHint: string;
        kmUnit: string;
        searchPlaceholder: string;
        search: string;
        searching: string;
        clearSearch: string;
        useEnteredAddress: string;
        noResults: string;
        searchError: string;
        enterAddressFirst: string;
      };
      documents: {
        title: string;
        subtitle: string;
        optionalHint: string;
        docHint: string;
        types: {
          BUSINESS_REGISTRATION: string;
          TRADE_LICENSE: string;
          NATIONAL_ID: string;
          TAX_CERTIFICATE: string;
        };
      };
      review: {
        title: string;
        subtitle: string;
        account: string;
        business: string;
        location: string;
        documents: string;
        noDocuments: string;
        edit: string;
      };
      success: {
        title: string;
        body: string;
        goToDashboard: string;
        backToLogin: string;
      };
      errors: {
        phoneTaken: string;
        emailTaken: string;
        businessNameTaken: string;
        generic: string;
        fixHighlighted: string;
      };
    };
    forgotPassword: {
      title: string;
      subtitle: string;
      identifierLabel: string;
      identifierPlaceholder: string;
      submit: string;
      step1Title: string;
      step1Subtitle: string;
      step2Title: string;
      step2Subtitle: string;
      otpLabel: string;
      newPasswordLabel: string;
      newPasswordPlaceholder: string;
      confirmPasswordLabel: string;
      confirmPasswordPlaceholder: string;
      resetSubmit: string;
      successTitle: string;
      successSubtitle: string;
      backToLogin: string;
    };
    validation: {
      identifierRequired: string;
      passwordRequired: string;
      passwordMin: string;
      otpRequired: string;
      otpLength: string;
      confirmPasswordRequired: string;
      passwordMismatch: string;
      firstNameRequired: string;
      lastNameRequired: string;
      emailRequired: string;
      emailInvalid: string;
      phoneRequired: string;
      phoneInvalid: string;
      passwordMin8: string;
      passwordMax: string;
      businessNameLength: string;
      addressRequired: string;
      cityRequired: string;
      locationRequired: string;
      radiusRange: string;
    };
    logout: string;
    logoutConfirm: {
      title: string;
      description: string;
    };
  };
  legal: {
    consent: string;
    signupConsent: string;
    termsLinkLabel: string;
    privacyLinkLabel: string;
    lastUpdated: string;
  };
  dashboard: {
    title: string;
    stats: string;
    recentActivity: string;
  };
  calendar: {
    today: string;
    month: string;
    week: string;
    day: string;
    allDay: string;
    moreEvents: string;
    previousPeriod: string;
    nextPeriod: string;
    viewLabel: string;
    viewDay: string;
    noEvents: string;
    bookingsCount: string;
    options: string;
  };
  schedule: {
    title: string;
  };
  providers: {
    title: string;
    searchPlaceholder: string;
    emptyTitle: string;
    emptyDescription: string;
    emptyPendingTitle: string;
    emptyPendingDescription: string;
    /** Keys match the ProviderStatus enum so `t(`providers.status.${s}`)` resolves */
    status: {
      PENDING_VERIFICATION: string;
      ACTIVE: string;
      SUSPENDED: string;
      REJECTED: string;
    };
    /** Keys match the VerificationStatus enum */
    documentStatus: {
      PENDING: string;
      APPROVED: string;
      REJECTED: string;
    };
    /** Keys match the DocumentType enum */
    documentType: {
      BUSINESS_REGISTRATION: string;
      TRADE_LICENSE: string;
      NATIONAL_ID: string;
      TAX_CERTIFICATE: string;
    };
    filters: {
      all: string;
    };
    columns: {
      business: string;
      status: string;
      rating: string;
      team: string;
      documents: string;
      commission: string;
      joined: string;
    };
    actions: {
      view: string;
      approve: string;
      activate: string;
      deactivate: string;
      reject: string;
      editCommission: string;
    };
    confirm: {
      approveTitle: string;
      approveDescription: string;
      activateTitle: string;
      activateDescription: string;
      deactivateTitle: string;
      deactivateDescription: string;
      rejectTitle: string;
      rejectDescription: string;
      noteNotRecorded: string;
    };
    commission: {
      title: string;
      description: string;
      label: string;
      placeholder: string;
      platformDefault: string;
      cannotClear: string;
      save: string;
    };
    detail: {
      notFoundTitle: string;
      notFoundDescription: string;
      backToList: string;
      tabs: {
        overview: string;
        documents: string;
        team: string;
        services: string;
        coverage: string;
        activity: string;
      };
      overview: {
        accountTitle: string;
        businessName: string;
        status: string;
        commission: string;
        registered: string;
        verifiedAt: string;
        lastUpdated: string;
        notVerified: string;
        ratingTitle: string;
        reviewsCount: string;
        noReviews: string;
        kycTitle: string;
        kycProgress: string;
        kycNoDocuments: string;
        teamSize: string;
        servicesCount: string;
      };
      documents: {
        title: string;
        description: string;
        emptyTitle: string;
        emptyDescription: string;
        uploaded: string;
        verifiedBy: string;
        rejectionReason: string;
        review: string;
        openOriginal: string;
      };
      team: {
        emptyTitle: string;
        emptyDescription: string;
        name: string;
        contact: string;
        role: string;
        accountStatus: string;
        joined: string;
        active: string;
        inactive: string;
        noContact: string;
      };
      services: {
        emptyTitle: string;
        emptyDescription: string;
        service: string;
        duration: string;
        price: string;
        priceRange: string;
        minutes: string;
        inactivePackage: string;
      };
      coverage: {
        title: string;
        description: string;
        emptyTitle: string;
        emptyDescription: string;
        loadingMap: string;
        areaLabel: string;
        areaValue: string;
        pointsLabel: string;
        centerLabel: string;
      };
      activity: {
        title: string;
        description: string;
        emptyTitle: string;
        emptyDescription: string;
        registered: string;
        verified: string;
        documentUploaded: string;
        documentApproved: string;
        documentRejected: string;
        memberJoined: string;
      };
    };
    review: {
      title: string;
      approve: string;
      reject: string;
      approveTitle: string;
      approveDescription: string;
      rejectTitle: string;
      rejectDescription: string;
      rejectReasonLabel: string;
      rejectReasonPlaceholder: string;
      previewUnavailable: string;
      previewUnavailableDescription: string;
      previewFailed: string;
      previewFailedDescription: string;
      alreadyApproved: string;
      alreadyRejected: string;
    };
    toast: {
      statusUpdated: string;
      statusFailed: string;
      commissionUpdated: string;
      documentApproved: string;
      documentRejected: string;
      documentFailed: string;
    };
    validation: {
      commissionRequired: string;
      commissionRange: string;
      rejectionReasonMin: string;
    };
  };
  /**
   * Admin-owned service catalog, plus the provider-facing screen that selects
   * from it. Both live here because they describe the same wash packages.
   */
  catalog: {
    title: string;
    searchPlaceholder: string;
    emptyTitle: string;
    emptyDescription: string;
    minutes: string;
    status: {
      active: string;
      inactive: string;
    };
    /** Keys match the CatalogView tab values */
    filters: {
      ALL: string;
      ACTIVE: string;
      INACTIVE: string;
    };
    columns: {
      package: string;
      duration: string;
      priceRange: string;
      features: string;
      status: string;
    };
    actions: {
      new: string;
      edit: string;
      delete: string;
    };
    form: {
      newTitle: string;
      editTitle: string;
      description: string;
      name: string;
      nameHint: string;
      namePlaceholder: string;
      descriptionLabel: string;
      descriptionPlaceholder: string;
      duration: string;
      durationUnit: string;
      minPrice: string;
      maxPrice: string;
      features: string;
      featuresHint: string;
      featuresPlaceholder: string;
      icon: string;
      iconHint: string;
      create: string;
    };
    /** Keys match PACKAGE_ICONS in lib/constants/package-icons.ts */
    icons: {
      external_wash: string;
      interior_wash: string;
      internal_external_wash: string;
      full_detail: string;
      polish: string;
      wax_coating: string;
      engine_wash: string;
      steam_wash: string;
      dry_wash: string;
      upholstery: string;
      add_on: string;
    };
    confirm: {
      deleteTitle: string;
      deleteDescription: string;
      deleteNote: string;
    };
    toast: {
      created: string;
      updated: string;
      saveFailed: string;
      deleted: string;
      deleteFailed: string;
      serviceEnabled: string;
      serviceDisabled: string;
      toggleFailed: string;
    };
    validation: {
      nameRequired: string;
      durationRequired: string;
      durationInvalid: string;
      minPriceRequired: string;
      maxPriceRequired: string;
      priceInvalid: string;
      maxBelowMin: string;
      priceRequired: string;
      priceOutOfRange: string;
    };
    myServices: {
      title: string;
      emptyTitle: string;
      emptyDescription: string;
      notSet: string;
      /** Keys match the ProviderServicesView tab values */
      filters: {
        ALL: string;
        OFFERED: string;
        AVAILABLE: string;
      };
      columns: {
        allowedRange: string;
        myPrice: string;
        offering: string;
      };
      actions: {
        startOffering: string;
        changePrice: string;
        stopOffering: string;
      };
      priceDialog: {
        enableTitle: string;
        editTitle: string;
        description: string;
        label: string;
        rangeHint: string;
        enable: string;
      };
      confirm: {
        optOutTitle: string;
        optOutDescription: string;
        optOutNote: string;
      };
    };
  };
  /** Keys match the UserRole enum values so `t(`roles.${role}`)` resolves directly */
  roles: {
    ADMIN_SUPER: string;
    ADMIN_SUPPORT: string;
    PROVIDER_OWNER: string;
    PROVIDER_MANAGER: string;
    PROVIDER_TECHNICIAN: string;
    CUSTOMER: string;
  };
  rbac: {
    noAccess: {
      title: string;
      description: string;
    };
  };
  errors: {
    title: string;
    description: string;
    retry: string;
    notFoundTitle: string;
    notFoundDescription: string;
  };
  fileUpload: {
    browse: string;
    dropHint: string;
    uploading: string;
    view: string;
    remove: string;
    retry: string;
    errors: {
      tooLarge: string;
      invalidType: string;
      failed: string;
    };
  };
  confirmDialog: {
    reasonLabel: string;
    reasonPlaceholder: string;
    reasonRequired: string;
  };
  dataTable: {
    searchPlaceholder: string;
    emptyTitle: string;
    emptyDescription: string;
    noResultsTitle: string;
    noResultsDescription: string;
    rowsPerPage: string;
    pageOf: string;
    selectedCount: string;
    previous: string;
    next: string;
    actions: string;
    selectAll: string;
    selectRow: string;
    clearSelection: string;
  };
}
