export interface CreateCouponType {
  couponId?: string;
  discountPercentage?: number;
  discountAmount?: number;
  usageLimit: number;
  userUsageLimit: number;
  minPurchaseAmount?: number;
  category?: string[];
  includedProducts?: number[];
  excludedProducts?: number[];
  description: string;
  includeSpecialSale: boolean;
  expirationDate: string;
}

export interface CouponType extends CreateCouponType {
  id: string;
  code: string;
  isActive: boolean;
  createdAt: string;
  updatedAt: string;
}

export interface CouponResponseData {
  _id: string;
  shopId: string;
  discountPercentage: number;
  discountAmount: number;
  usageLimit: number;
  usageCount: number;
  userUsageLimit: number;
  code: string;
  minPurchaseAmount: number;
  category: string[];
  includedProducts: number[];
  excludedProducts: number[];
  description: string;
  isActive: boolean;
  includeSpecialSale: boolean;
  expirationDate: string;
  deleted: boolean;
  createdAt: string;
  updatedAt: string;
}

export type PagerType = {
  page: number;
  limit: number;
  totalItems: number;
  totalPages: number;
  prevPage: boolean | null;
  nextPage: string | null;
};

export interface CouponsResponse {
  status: number;
  success: boolean;
  results: {
    coupons: CouponResponseData[];
    pager: PagerType;
  };
}

export type GetCouponDetailResponseType = {
  status: number;
  success: boolean;
  results: {
    coupon: CouponResponseData;
  };
};
