// src/views/components/product/types.ts

export interface StaffMember {
  uid?: string // Add uid for existing staff
  firstName: string
  lastName: string
  email: string
  phoneNumber: string
  countryCode: string
  dialCodeCountry: string
}

export interface VariationAttributeValue {
  attributeName: string
  value: string
}

export interface Variation {
  id?: string
  uid?: string
  size: string
  mrp: string
  stockQty?: number
  noOfItems: string
  unit: string
  calculatedAmount: number
  finalAmount: number
  image?: File | null
  imagePreview?: string
  variationImageUid?: string // Store the image UID for existing images
  attributeValues?: VariationAttributeValue[]
}

export interface SpecificationItem {
  id: string
  name: string
  value: string
}

export interface ProductFormValues {
  productName: string
  productType: 'ServiceBased' | 'ReadyToSell' | 'Subscription' | 'RawMaterials'
  categoryUid: string
  vendorUid: string
  taxCharges: 'Inclusive' | 'Exclusive'
  taxes: string
  description: string
  staffMembers?: StaffMember[]
  variations?: Variation[]
  trackStock?: boolean
}

export interface Category {
  uid: string
  name: string
  description?: string
  parentUid?: { uid: string; name?: string } | null
  attributeKeys: Array<{ attributeName: string; isRequired: boolean }>
}

export interface Vendor {
  uid: string
  vendorName: string
}

export interface Tax {
  uid: string
  taxName: string
  taxType: string
  taxValue: number
}

export interface Attribute {
  attributeName: string
  isRequired: boolean
}

export interface CategoryPayload {
  name: string
  description?: string
  parentUid?: { uid: string } | null
  attributeKeys: Attribute[]
}