/**
 *
 * @typedef {('all'|'next'|'end'|'current')} ShopeeFsStatus
 */

/**
 * @typedef {object} ShopeeFsTime
 * @property {number} timeslot_id
 * @property {number} start_time
 * @property {number} end_time
 */

/**
 * @typedef {object} ShopeeFSCampagin
 * @property {number} ctime
 * @property {number} enabled_item_count
 * @property {number} end_time
 * @property {number} flash_sale_id
 * @property {number} item_count
 * @property {number} mtime
 * @property {number} start_time
 * @property {number} status
 * @property {number} timeslot_id
 * @property {number} type
 */

/**
 * @typedef {object} ShopeeFsSetResult
 * @property {ShopeeFsSetItemResult[]} failed_items
 * @property {ShopeeFsSetItemResult[]} warning_items
 */

/**
 * @typedef {object} ShopeeFsSetItemResult
 * @property {number} item_id
 * @property {number} model_id
 * @property {number} err_code
 * @property {string} err_msg
 * @property {any[]} unqualified_conditions
 */

/**
 * @typedef {object} ShopeeFsCreateResult
 * @property {number} ctime
 * @property {number} enabled_item_count
 * @property {number} end_time
 * @property {number} flash_sale_id
 * @property {number} item_count
 * @property {number} mtime
 * @property {number} start_time
 * @property {number} status
 * @property {number} timeslot_id
 * @property {number} type
 */

/**
 * @typedef {object} ShopeeFsSetListItem
 * @property {number} item_id
 * @property {number} status
 * @property {number} model_id
 * @property {number} input_promo_price
 * @property {number} stock
 * @property {number} purchase_limit
 */

/**
 * @typedef {object} ShopeeFsIndexListItem
 * @property {number} item_id
 * @property {number} display_sequence
 */

/**
 * @typedef {object} ShopeeFsItemFromId
 * @property {Items[]} items
 * @property {number} total_count
 * @property {PriceStockInfo[]} price_stock_info
 * @property {ItemInfo[]} item_info
 * @property {ShopeeFsModelInfo[]} model_info
 * @property {StockInfo[]} stock_info
 */
/**
 * @typedef {object} ShopeeFsModelInfo
 * @property {number} itemid
 * @property {number} modelid
 * @property {string} name
 * @property {number} stock
 * @property {number} sold
 * @property {number} price
 * @property {boolean} is_default
 * @property {boolean} pff_tag
 */

/**
 * @typedef {object} Items
 * @property {number} ctime
 * @property {number} mtime
 * @property {number} input_promotion_price
 * @property {number} promotion_price
 * @property {number} model_id
 * @property {number} item_id
 * @property {number} purchase_limit
 * @property {number} status
 * @property {number} stock
 * @property {string} reject_reason
 * @property {any[]} unqualified_conditions
 */
/**
 * @typedef {object} PriceStockInfo
 * @property {number} item_id
 * @property {AggregatedPriceInfo} aggregated_price_info
 * @property {AggregatedStockInfo} aggregated_stock_info
 * @property {SkuStockPriceList[]} sku_stock_price_list
 */
/**
 * @typedef {object} AggregatedPriceInfo
 * @property {number} min_price
 * @property {number} max_price
 */
/**
 * @typedef {object} AggregatedStockInfo
 * @property {number} wms_total_stock
 * @property {number} seller_total_stock
 */
/**
 * @typedef {object} SkuStockPriceList
 * @property {number} model_id
 * @property {SellerStockInfo} seller_stock_info
 * @property {PriceInfo} price_info
 * @property {WmsStockInfo} wms_stock_info
 * @property {boolean} pff_tag
 */
/**
 * @typedef {object} SellerStockInfo
 * @property {number} stock_promotion_type
 * @property {number} normal_stock
 * @property {number} promotion_stock
 * @property {number} reserved_stock
 * @property {number} sellable_stock
 * @property {LocationDetail[]} location_detail
 */
/**
 * @typedef {object} PriceInfo
 * @property {number} price_promotion_type
 * @property {number} promotion_price
 * @property {number} stock_promotion_type
 * @property {number} normal_price
 * @property {number} input_normal_price
 */
/**
 * @typedef {object} WmsStockInfo
 * @property {number} stock_promotion_type
 * @property {number} normal_stock
 * @property {number} promotion_stock
 * @property {number} reserved_stock
 * @property {number} sellable_stock
 * @property {any[]} location_detail
 */
/**
 * @typedef {object} ItemInfo
 * @property {number} itemid
 * @property {string} name
 * @property {number} status
 * @property {string} images
 * @property {number} price
 * @property {number} stock
 * @property {number} sold
 * @property {Extinfo} extinfo
 * @property {number} flag
 */
/**
 * @typedef {object} Extinfo
 * @property {boolean} has_wholesale
 * @property {number} min_purchase_limit
 */
/**
 * @typedef {object} StockInfo
 * @property {number} item_id
 * @property {SkuStockList[]} sku_stock_list
 * @property {WmsStockInfo} wms_stock_info
 * @property {SellerStockInfo} seller_stock_info
 * @property {number} total_reserved_stock
 * @property {number} total_available_stock
 */
/**
 * @typedef {object} SkuStockList
 * @property {number} model_id
 * @property {StockInfo} stock_info
 */
/**
 * @typedef {object} LocationDetail
 * @property {string} location_id
 * @property {number} sellable_stock
 * @property {number} reserved_stock
 */

/**
 * @typedef {object} ShopeeFSReport
 * @property {number} flash_sale_id
 * @property {number} start_day
 * @property {number} end_day
 * @property {number} reminder_clicks
 * @property {number} product_impression
 * @property {number} product_clicks
 * @property {number} conversion_rate
 * @property {number} orders
 * @property {number} buyers
 * @property {number} sales
 * @property {number} sales_per_buyer
 * @property {number} units
 */

/**
 * @typedef {object} ShopeeFSProductSearch
 * @property {string} cursor
 * @property {ItemList[]} item_list
 * @property {ItemStockInfos[]} item_stock_infos
 * @property {ItemStockPriceInfos[]} item_stock_price_infos
 * @property {number} total_count
 */
/**
 * @typedef {object} ItemList
 * @property {string} brand
 * @property {CategoryPath[]} category_path
 * @property {number} days_to_ship
 * @property {string} description
 * @property {Extinfo} extinfo
 * @property {number} flag
 * @property {GlobalCat} global_cat
 * @property {string} images
 * @property {boolean} is_unlisted
 * @property {number} itemid
 * @property {number} liked_count
 * @property {number} min_purchase_limit
 * @property {string} name
 * @property {number} price
 * @property {number} rating_bad
 * @property {number} rating_good
 * @property {number} rating_normal
 * @property {number} review_count
 * @property {number} sold
 * @property {number} status
 * @property {number} stock
 */
/**
 * @typedef {object} CategoryPath
 * @property {string} catid
 */
/**
 * @typedef {object} Extinfo
 * @property {Cats[]} cats
 * @property {boolean} has_wholesale
 * @property {number} min_purchase_limit
 */
/**
 * @typedef {object} Cats
 * @property {string} catid
 */
/**
 * @typedef {object} GlobalCat
 * @property {string} catid
 */
/**
 * @typedef {object} ItemStockInfos
 * @property {number} item_id
 * @property {SkuStockList[]} sku_stock_list
 */
/**
 * @typedef {object} SkuStockList
 * @property {number} model_id
 * @property {StockInfo} stock_info
 */
/**
 * @typedef {object} StockInfo
 * @property {SellerStockInfo} seller_stock_info
 * @property {number} total_available_stock
 * @property {number} total_reserved_stock
 * @property {WmsStockInfo} wms_stock_info
 */
/**
 * @typedef {object} SellerStockInfo
 * @property {LocationDetail[]} location_detail
 * @property {number} sellable_stock
 * @property {number} normal_stock
 * @property {number} promotion_stock
 * @property {number} reserved_stock
 * @property {number} stock_promotion_type
 */
/**
 * @typedef {object} LocationDetail
 * @property {string} location_id
 * @property {number} reserved_stock
 * @property {number} sellable_stock
 */
/**
 * @typedef {object} WmsStockInfo
 * @property {any[]} location_detail
 * @property {number} sellable_stock
 * @property {number} normal_stock
 * @property {number} promotion_stock
 * @property {number} reserved_stock
 * @property {number} stock_promotion_type
 */
/**
 * @typedef {object} ItemStockPriceInfos
 * @property {AggregatedPriceInfo} aggregated_price_info
 * @property {AggregatedStockInfo} aggregated_stock_info
 * @property {number} item_id
 * @property {SkuStockPriceList[]} sku_stock_price_list
 */
/**
 * @typedef {object} AggregatedPriceInfo
 * @property {number} max_price
 * @property {number} min_price
 */
/**
 * @typedef {object} AggregatedStockInfo
 * @property {number} seller_total_stock
 * @property {number} wms_total_stock
 */
/**
 * @typedef {object} SkuStockPriceList
 * @property {number} model_id
 * @property {boolean} pff_tag
 * @property {PriceInfo} price_info
 * @property {SellerStockInfo} seller_stock_info
 * @property {WmsStockInfo} wms_stock_info
 */
/**
 * @typedef {object} PriceInfo
 * @property {number} input_normal_price
 * @property {number} input_promotion_price
 * @property {number} normal_price
 * @property {number} price_promotion_type
 * @property {number} promotion_price
 */
