export interface ProfileFormData {
  fullName: string;
  phoneNumber: string;
  dateOfBirth: string;
  nationalCode: string;
  address: string;
}

export interface UpdateProfileRequest {
  fullName?: string;
  phoneNumber?: string;
  dateOfBirth?: string;
  nationalCode?: string;
  address?: string;
}

export interface AddressFormData {
  address: string;
  mobileNumber: string;
  province: string;
  city: string;
  postalCode: string;
  plaque: string;
}

export interface AddressLocationResponse {
  status: number;
  success: boolean;
  results: {
    province: string;
    provinceId: number;
    city: string;
    cityId: number;
    address: string;
    region: string;
  };
}

export interface UpdateProfileResponse {
  status: number;
  success: boolean;
  results: {
    info: {
      _id: string;
      fullName: string;
      phoneNumber: string;
      dateOfBirth: string | null;
      address: string;
      nationalCode: string | null;
      homeNumber: string | null;
      createdAt: string;
      updatedAt: string;
      userAddress: {
        _id: string;
        address: string;
        city: {
          _id: number;
          name: string;
          province: number;
          createdAt: string;
          updatedAt: string;
          __v: number;
        };
        province: {
          _id: number;
          name: string;
          createdAt: string;
          updatedAt: string;
          __v: number;
        };
        postalCode: string;
        plaque: string;
        lat: string;
        lon: string;
        createdAt: string;
        updatedAt: string;
        __v: number;
      };
      isSeller: boolean;
    };
  };
}

export type UpdateAddressType = {
  lat: string;
  lon: string;
  provinceId: number;
  cityId: number;
  postalCode: string;
  address: string;
  plaque: string;
};

// Wishlist Types
export interface WishlistUser {
  _id: string;
  fullName: string;
  phoneNumber: string;
  dateOfBirth: string;
  address: {
    _id: string;
  };
  nationalCode: string;
  homeNumber: string | null;
}

export interface WishlistBrand {
  _id: string;
}

export interface WishlistCategory {
  _id: string;
}

export interface WishlistSpecification {
  title: string;
  values: string[];
}

export interface WishlistImagesUrl {
  cover: string;
  list: string[];
}

export interface WishlistProduct {
  _id: number;
  url: string;
  title_fa: string;
  title_en: string;
  seoTitle: string | null;
  seoDescription: string | null;
  source: string;
  description: string;
  metaDescription: string;
  tags: string[];
  advantages: string[];
  disAdvantages: string[];
  imagesUrl: WishlistImagesUrl;
  isFake: string;
  voice: string | null;
  specifications: WishlistSpecification[];
  brand: WishlistBrand;
  category: WishlistCategory;
}

export interface WishlistShop {
  _id: string;
  shopName: string;
  shopCode: number;
  owner: string;
  shopDescription: string;
  telephoneNumber: string;
  isChatActive: boolean;
  shopPostalCode: string;
  logo: string;
}

export interface WishlistWarranty {
  _id: number;
  duration: string;
  logoUrl: string;
  name: string;
}

export interface WishlistPrice {
  order_limit: number;
  retailPrice: number;
  selling_price: number;
  is_specialSale: boolean;
  discount_percent: number;
  specialSale_order_limit: number | null;
  specialSale_quantity: number | null;
  specialSale_endDate: string | null;
}

export interface WishlistVariant {
  _id: string;
  market_status: string;
  price: WishlistPrice;
  stock: number;
  postingTime: number;
  isFreeShip: boolean;
  isWholeSale: boolean;
  shop: WishlistShop;
  warranty: WishlistWarranty;
  size?: number;
  meterage?: number;
}

export interface WishlistItem {
  _id: string;
  user: WishlistUser;
  product: WishlistProduct;
  variant: WishlistVariant;
}

export interface WishlistResponse {
  status: number;
  success: boolean;
  results: {
    wishlist: WishlistItem[];
  };
}

// Comments Types
export interface CommentUser {
  fullName: string;
}

export interface CommentBrand {
  _id: string;
  status: string;
  title_en: string;
  title_fa: string;
  images: string[];
  logoUrl: string;
}

export interface CommentCategory {
  _id: string;
  title_fa: string;
  title_en: string;
  icon: string;
  imageUrl: string;
  theme: string;
  description: string;
  leaf: boolean;
  parent: string;
}

export interface CommentSpecification {
  title: string;
  values: string[];
}

export interface CommentImagesUrl {
  cover: string;
  list: string[];
}

export interface CommentProduct {
  _id: number;
  url: string;
  title_fa: string;
  title_en: string;
  seoTitle: string;
  seoDescription: string | null;
  source: string;
  description: string;
  metaDescription: string;
  tags: string[];
  advantages: string[];
  disAdvantages: string[];
  imagesUrl: CommentImagesUrl;
  isFake: string;
  voice: string | null;
  specifications: CommentSpecification[];
  brand: CommentBrand;
  category: CommentCategory;
  createdAt: string;
}

export interface Comment {
  _id: string;
  title: string;
  advantage: string[];
  disAdvantage: string[];
  content: string;
  status: string;
  rate: number;
  user: CommentUser;
  product: CommentProduct;
  createdAt: string;
}

export interface CommentsResponse {
  status: number;
  success: boolean;
  results: {
    comments: Comment[];
  };
}
