import type { FaqPageEnum, PricingPageEnum } from "../enum/Enum";

export interface AboutUsItem {
  _id: string;
  title: string;
  description: string;
  imageUrl: string;
  createdAt: string;
  updatedAt: string;
}

export interface AboutUsResults {
  aboutUs: AboutUsItem[];
}

export interface AboutUsResponse {
  status: number;
  success: boolean;
  results: AboutUsResults;
}

export interface CreateAboutUs {
  title: string;
  description: string;
  imageUrl: string;
}

export interface FaqItem {
  _id: string;
  question: string;
  answer: string;
  page: string;
  createdAt: string;
  updatedAt: string;
}

export interface FaqResults {
  faqs: FaqItem[];
}

export interface FaqResponse {
  status: number;
  success: boolean;
  results: FaqResults;
}

export interface CreateFaqType {
  question: string;
  answer: string;
  page: FaqPageEnum;
}

export interface FaqDetailResults {
  faq: FaqItem;
}

export interface FaqDetailResponse {
  status: number;
  success: boolean;
  results: FaqDetailResults;
}

export interface SiteSetting {
  _id: string;
  siteLogo?: string;
  footerPhone?: string;
  footerEmail?: string;
  footerAddress?: string;
  shipmentContent?: string;
  faqContent?: string;
  policyContent?: string;
  returnRulesContent?: string;
  jobsContent?: string;
  footerDescription?: string;
  downloadAppDetails?: {
    pic: string;
    url: string;
    _id?: string;
    id?: string;
  }[];
  socialMediaLinks?: {
    icon: string;
    url: string;
    _id?: string;
    id?: string;
  }[];
  shopPostalCode?: string;
}

export interface SiteSettingResults {
  siteSetting: SiteSetting;
}

export interface SiteSettingResponse {
  status: number;
  success: boolean;
  results: SiteSettingResults;
}

export interface UpdateSiteSetting {
  siteLogo?: string;
  footerPhone?: string;
  footerEmail?: string;
  footerAddress?: string;
  shipmentContent?: string;
  faqContent?: string;
  policyContent?: string;
  returnRulesContent?: string;
  jobsContent?: string;
  footerDescription?: string;
  downloadAppDetails?: {
    pic: string;
    url: string;
    _id?: string;
    id?: string;
  }[];
  socialMediaLinks?: {
    icon: string;
    url: string;
    _id?: string;
    id?: string;
  }[];
  shopPostalCode?: string;
}

export interface CreateDocumentType {
  title: string;
  description: string;
  required: boolean;
}

export interface DocumentTypeItem {
  _id: string;
  title: string;
  description: string;
  required: boolean;
  createdAt: string;
  updatedAt: string;
}

export interface DocumentTypesResults {
  documentTypes: DocumentTypeItem[];
}

export interface DocumentTypesResponse {
  status: number;
  success: boolean;
  results: DocumentTypesResults;
}

export interface PricingItem {
  _id: string;
  type: string;
  price: number;
  __v: number;
  createdAt: string;
  updatedAt: string;
}

export interface PricingResults {
  pricing: PricingItem[];
}

export interface PricingResponse {
  status: number;
  success: boolean;
  results: PricingResults;
}

export interface CreatePricingItem {
  type: PricingPageEnum;
  price: number;
}

export interface ShipmentMethod {
  _id: number;
  name: string;
  description: string;
  deliveryTime: number;
  deliveryType: string;
}

export interface ShopItem {
  _id: string;
  shopName: string;
  shopCode: number;
  owner: string;
  shopDescription: string;
  telephoneNumber: string;
  isChatActive: boolean;
  shopPostalCode: string;
  logo: string;
  shipmentMethod: ShipmentMethod[];
  address: string | null;
}

export interface ShopResults {
  shop: ShopItem;
}

export interface ShopResponse {
  status: number;
  success: boolean;
  results: ShopResults;
}

export interface UpdateShopType {
  shopName: string;
  shopDescription: string;
  telephoneNumber: string;
  shopPostalCode: string;
  logo?: string;
}

export interface BannerItem {
  _id: string;
  imageUrl: string;
  altText: string;
  title: string;
  linkUrl: string;
  isActive: boolean;
  order: number;
  displayLocation: "desktop" | "mobile";
  createdAt: string;
  updatedAt: string;
}

export interface BannersResults {
  banners: BannerItem[];
}

export interface BannersResponse {
  status: number;
  success: boolean;
  results: BannersResults;
}

export interface CreateBannerType {
  imageUrl: string;
  altText: string;
  title: string;
  linkUrl: string;
  isActive: boolean;
  order: number;
  displayLocation: "desktop" | "mobile";
}

export interface UpdateBannerType {
  imageUrl: string;
  altText: string;
  title: string;
  linkUrl: string;
  isActive: boolean;
  order: number;
  displayLocation: "desktop" | "mobile";
}

export interface SliderItem {
  _id: string;
  displayLocation: "desktop" | "mobile";
  imageUrl: string;
  altText: string;
  title: string;
  linkUrl: string;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

export interface SlidersResults {
  sliders: SliderItem[];
}

export interface SlidersResponse {
  status: number;
  success: boolean;
  results: SlidersResults;
}

export interface CreateSliderType {
  displayLocation: "desktop" | "mobile";
  imageUrl: string;
  altText: string;
  title: string;
  linkUrl: string;
  isActive: boolean;
}

export interface UpdateSliderType {
  displayLocation: "desktop" | "mobile";
  imageUrl: string;
  altText: string;
  title: string;
  linkUrl: string;
  isActive: boolean;
}
