/**
 * @typedef TiktokPdpProductId
 * @property {string} realRegion
 * @property {string} realRegionSource
 * @property {string} sku
 * @property {boolean} isAd
 * @property {TiktokPdpProductIdBotInfo} botInfo
 * @property {TiktokPdpProductIdStarlingData} starlingData
 * @property {string} og_info
 * @property {string} pathname
 * @property {TiktokPdpProductIdVRegions} vRegions
 * @property {TiktokPdpProductIdRequestData} requestData
 * @property {string} currentVRegion
 * @property {string} releaseVersion
 * @property {TiktokPdpProductIdInitialData} initialData
 * @property {any[]} pdpRelated
 * @property {any[]} productCategoryIds
 * @property {any[]} frequentlyBoughtTogether
 * @property {any[]} similarProductsInCategory
 * @property {any[]} exploreMoreFromShop
 * @property {any[]} brandInCategoryRecommendedProducts
 * @property {any[]} customersAlsoBought
 * @property {any[]} moreInThisColorStyle
 * @property {string} fbRobotAppSchema
 * @property {string} leafCategoryId
 * @property {object} categoryModuleInfo
 * @property {string} categoryName
 * @property {TiktokPdpProductIdH5PayInfo} h5PayInfo
 * @property {object} videoIndexRes
 * @property {object[]} relatedVideos
 * @property {object[]} shopPerformance
 * @property {object[]} categoryInfo
 * @property {string} canonicalUrl
 * @property {any[]} searchRecommendWords
 * @property {string} randomSearchWord
 * @property {object} loginInfo
 */

/**
 * @typedef TiktokPdpProductIdFrameworkMonitorTimeNode
 * @property {number} acceptRequest
 * @property {number} loaderExecStart
 * @property {number} loaderExecEnd
 * @property {number} ssrRenderStart
 * @property {number} ssrRenderEnd
 * @property {number} ttfb
 * @property {number} fsre
 * @property {number} hydrateStart
 * @property {number} hydrateEnd
 * @property {number} navigationStart
 * @property {number} allApisLatency
 */

/**
 * @typedef TiktokPdpProductIdFrameworkMonitor
 * @property {TiktokPdpProductIdFrameworkMonitorTimeNode} timeNode
 * @property {TiktokPdpProductIdFrameworkMonitorApiLatencyMap} apiLatencyMap
 */

/**
 * @typedef TiktokPdpProductIdFrameworkMonitorApiLatencyMap
 * @property {number} getPayExperiment
 * @property {number} getSearchRecommendWords
 * @property {number} getProductUGPacker
 * @property {number} getProductDetail
 */

/**
 * @typedef TiktokPdpProductIdBotInfo
 * @property {boolean} isMock
 * @property {boolean} isBot
 * @property {boolean} isFake
 * @property {string} requestURL
 * @property {number} requestTime
 */

/**
 * @typedef TiktokPdpProductIdStarlingData
 * @property {string} lang
 */

/**
 * @typedef TiktokPdpProductIdVRegions
 * @property {string} VREGION_UNKNOWN
 * @property {string} VREGION_CHINAAGGREGATION
 * @property {string} VREGION_CHINAENTERPRISE
 * @property {string} VREGION_CHINABOE
 * @property {string} VREGION_CHINABOE2
 * @property {string} VREGION_USBOE
 * @property {string} VREGION_SINGAPOREBOE
 * @property {string} VREGION_CHINANORTH
 * @property {string} VREGION_CHINAFINTECH
 * @property {string} VREGION_SINGAPORECENTRAL
 * @property {string} VREGION_SINGAPORECOMMON
 * @property {string} VREGION_SINGAPOREEE
 * @property {string} VREGION_SINGAPORESAAS
 * @property {string} VREGION_SINGAPOREGAME
 * @property {string} VREGION_ALIYUNNC2
 * @property {string} VREGION_USEAST
 * @property {string} VREGION_USEASTRED
 * @property {string} VREGION_USWEST
 * @property {string} VREGION_USCENTRAL
 * @property {string} VREGION_USNORTHEAST
 * @property {string} VREGION_USEE
 * @property {string} VREGION_EUROPEWEST
 * @property {string} VREGION_EUROPENORTH
 * @property {string} VREGION_EUROPEEAST
 * @property {string} VREGION_EUROPECENTRAL
 * @property {string} VREGION_EASTERNEUROTT
 * @property {string} VREGION_MIDDLEEASTSOUTH
 * @property {string} VREGION_SOUTHAMERICAEAST
 * @property {string} VREGION_AUSTRALIASOUTHEAST
 * @property {string} VREGION_ASIAEAST
 * @property {string} VREGION_ASIASOUTHEAST
 * @property {string} VREGION_ASIASOUTH
 * @property {string} VREGION_ASIANORTHEAST
 * @property {string} VREGION_ASIASAAS
 * @property {string} VREGION_I18NGAME
 * @property {string} VREGION_CHINAINFBOE
 * @property {string} VREGION_CHINATEXAS
 * @property {string} VREGION_SINGAPORECOMPLIANCE
 * @property {string} VREGION_USTTP
 * @property {string} VREGION_CHINACDN
 * @property {string} VREGION_CHINAEDGE
 * @property {string} VREGION_CHINAVOLCEAST
 * @property {string} VREGION_CHINAVOLCSOUTH
 * @property {string} VREGION_CHINAEAST
 * @property {string} VREGION_USTTP2
 * @property {string} VREGION_EUTTP
 * @property {string} VREGION_CHINAPAY
 * @property {string} VREGION_SINFCHINANORTH
 * @property {string} VREGION_SINFCHINAEAST
 * @property {string} VREGION_ASIASOUTHEASTBD
 * @property {string} VREGION_USEASTBD
 * @property {string} VREGION_EUCOMPLIANCE2
 * @property {string} VREGION_EUCOMPLIANCE
 * @property {string} VREGION_IDCOMPLIANCE2
 * @property {string} VREGION_IDCOMPLIANCE
 * @property {string} VREGION_USCOMPLIANCE
 * @property {string} VREGION_EUTTP2
 * @property {string} VREGION_CHINAPAY2
 * @property {string} VREGION_ASIACIS
 * @property {string} VREGION_USSOUTHWEST
 */

/**
 * @typedef TiktokPdpProductIdRequestData
 * @property {string} requestUrl
 * @property {string} pathname
 * @property {object} searchParams
 * @property {string} ua
 * @property {string} cacheWebId
 */

/**
 * @typedef TiktokPdpProductIdInitialData
 * @property {number} productInfoCode
 * @property {TiktokPdpProductIdInitialDataProductInfo} productInfo
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfo
 * @property {string} product_id
 * @property {number} status
 * @property {TiktokPdpProductIdInitialDataProductInfoSeller} seller
 * @property {TiktokPdpProductIdInitialDataProductInfoProduct_base} product_base
 * @property {object[]} sale_props
 * @property {object[]} skus
 * @property {TiktokPdpProductIdInitialDataProductInfoLogistic} logistic
 * @property {TiktokPdpProductIdInitialDataProductInfoProduct_detail_review} product_detail_review
 * @property {string} customer_service_schema
 * @property {TiktokPdpProductIdInitialDataProductInfoFlash_sale} flash_sale
 * @property {TiktokPdpProductIdInitialDataProductInfoActivity_info} activity_info
 * @property {string} chain_key
 * @property {TiktokPdpProductIdInitialDataProductInfoAdd_to_cart_button} add_to_cart_button
 * @property {string} seller_id
 * @property {TiktokPdpProductIdInitialDataProductInfoPromotion_view} promotion_view
 * @property {number} platform
 * @property {string} source
 * @property {number} source_from
 * @property {TiktokPdpProductIdInitialDataProductInfoExtra} extra
 * @property {string} default_address_id
 * @property {number} template
 * @property {TiktokPdpProductIdInitialDataProductInfoMarketing_config} marketing_config
 * @property {TiktokPdpProductIdInitialDataProductInfoShipping} shipping
 * @property {number} sku_style
 * @property {TiktokPdpProductIdInitialDataProductInfoTerms_of_service} terms_of_service
 * @property {TiktokPdpProductIdInitialDataProductInfoPrivacy_policy} privacy_policy
 * @property {number} biz_type
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_module} pdp_logistic_module
 * @property {string} default_sku_id
 * @property {boolean} is_platform_product
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoSeller
 * @property {string} seller_id
 * @property {string} name
 * @property {TiktokPdpProductIdInitialDataProductInfoSellerAvatar} avatar
 * @property {number} product_count
 * @property {string} link
 * @property {string} im_schema
 * @property {number} status
 * @property {string} seller_location
 * @property {TiktokPdpProductIdInitialDataProductInfoSellerShop_recommend} shop_recommend
 * @property {boolean} is_hide
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoSellerAvatar
 * @property {number} height
 * @property {number} width
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoSellerShop_recommend
 * @property {boolean} is_recommend
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoProduct_base
 * @property {string} title
 * @property {string} desc_detail
 * @property {object[]} images
 * @property {object[]} specifications
 * @property {number} sold_count
 * @property {TiktokPdpProductIdInitialDataProductInfoProduct_basePrice} price
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoProduct_basePrice
 * @property {string} original_price
 * @property {string} real_price
 * @property {string} discount
 * @property {boolean} need_icon
 * @property {boolean} is_interval_price
 * @property {string} min_sku_price
 * @property {string} max_sku_price
 * @property {string} currency
 * @property {string} min_sku_original_price
 * @property {string} price_prefix
 * @property {string} panel_schema
 * @property {string} max_sku_original_price
 * @property {string} currency_symbol
 * @property {number} symbol_position
 * @property {string} da_info
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoLogistic
 * @property {number} delivery_option
 * @property {string} delivery_name
 * @property {boolean} is_default
 * @property {boolean} reachable
 * @property {string} lead_time
 * @property {TiktokPdpProductIdInitialDataProductInfoLogisticShipping_fee} shipping_fee
 * @property {boolean} free_shipping
 * @property {TiktokPdpProductIdInitialDataProductInfoLogisticLogistic_text} logistic_text
 * @property {string} logistics_service_id
 * @property {boolean} with_voucher
 * @property {number} delivery_min_days
 * @property {number} delivery_max_days
 * @property {object} logistic_promotion
 * @property {TiktokPdpProductIdInitialDataProductInfoLogisticEvent_tracking} event_tracking
 * @property {string} original_shipping_val
 * @property {number} transit_delivery_min_days
 * @property {number} transit_delivery_max_days
 * @property {TiktokPdpProductIdInitialDataProductInfoLogisticLeadtime_display_strategy} leadtime_display_strategy
 * @property {boolean} cod_available
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoLogisticShipping_fee
 * @property {string} price_str
 * @property {string} price_val
 * @property {string} currency
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoLogisticLogistic_text
 * @property {string} discount_desc_text
 * @property {string} service_text
 * @property {string} lead_time_text
 * @property {string} delivery_status_text
 * @property {string} threshold_text
 * @property {string} threshold_text_en
 * @property {TiktokPdpProductIdInitialDataProductInfoLogisticLogistic_textLead_message} lead_message
 * @property {string} estimated_arrival_text
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoLogisticLogistic_textLead_message
 * @property {string} from_message
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoLogisticEvent_tracking
 * @property {string} shipping_price
 * @property {string} est_delivery_day_min
 * @property {string} shipping_price_origin
 * @property {string} is_next_day_delivery
 * @property {string} shipping_currency
 * @property {string} shipping_type
 * @property {string} est_logistic_delivery_day_min
 * @property {string} ship_from
 * @property {string} est_delivery_day_max
 * @property {string} est_logistic_delivery_day_max
 * @property {string} shipping_price_after_coupon
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoLogisticLeadtime_display_strategy
 * @property {boolean} display_edt
 * @property {boolean} display_tts_delivery
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoProduct_detail_review
 * @property {number} product_rating
 * @property {number} review_count
 * @property {object[]} review_items
 * @property {string} review_count_str
 * @property {string} review_count_str_v2
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoFlash_sale
 * @property {string} activity_id
 * @property {number} status
 * @property {string} countdown
 * @property {string} start_time
 * @property {string} end_time
 * @property {string} price
 * @property {string} title
 * @property {TiktokPdpProductIdInitialDataProductInfoFlash_saleBg_img} bg_img
 * @property {number} flash_sale_style
 * @property {string} log_extra
 * @property {number} atmosphere_style
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoFlash_saleBg_img
 * @property {number} height
 * @property {number} width
 * @property {string} mimetype
 * @property {string} thumb_uri
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoActivity_info
 * @property {string} activity_id
 * @property {string} name
 * @property {TiktokPdpProductIdInitialDataProductInfoActivity_infoIcon} icon
 * @property {number} style
 * @property {number} activity_type
 * @property {string} log_extra
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoActivity_infoIcon
 * @property {number} height
 * @property {number} width
 * @property {string} mimetype
 * @property {string} thumb_uri
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoAdd_to_cart_button
 * @property {number} status
 * @property {string} click_hint
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPromotion_view
 * @property {object[]} promotion_items
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoExtra
 * @property {string} mix_product_type
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoMarketing_config
 * @property {boolean} remove_price_str
 * @property {boolean} show_deduction_text
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoShipping
 * @property {object[]} logistics
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoTerms_of_service
 * @property {string} draft_id
 * @property {string[]} support_language
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPrivacy_policy
 * @property {string} draft_id
 * @property {string[]} support_language
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_module
 * @property {string} module_id
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleMeta} meta
 * @property {string} module_title
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_module} shipping_module
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_module} return_policy_module
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleMeta
 * @property {string} pdp_to_logistic_list_info
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_module
 * @property {string} title
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msg} lead_msg
 * @property {object} promotion
 * @property {object[]} description_list
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleMeta} meta
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msg
 * @property {string} template
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msgSuffix_iconIcon
 * @property {number} height
 * @property {number} width
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msgSuffix_icon
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msgSuffix_iconIcon} icon
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msgSuffix_iconIcon_dark} icon_dark
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleLead_msgSuffix_iconIcon_dark
 * @property {number} height
 * @property {number} width
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleShipping_moduleMeta
 * @property {string} delivery_flag
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_module
 * @property {string} title
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_moduleLead_msgSuffix_iconIcon
 * @property {number} height
 * @property {number} width
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_moduleLead_msgSuffix_icon
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_moduleLead_msgSuffix_iconIcon} icon
 * @property {TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_moduleLead_msgSuffix_iconIcon_dark} icon_dark
 */

/**
 * @typedef TiktokPdpProductIdInitialDataProductInfoPdp_logistic_moduleReturn_policy_moduleLead_msgSuffix_iconIcon_dark
 * @property {number} height
 * @property {number} width
 * @property {string} uri
 * @property {string[]} url_list
 */

/**
 * @typedef TiktokPdpProductIdH5PayInfo
 * @property {boolean} skipAllExperiment
 * @property {boolean} shouldShowH5PayWithoutExperiment
 * @property {string} skipAllExperimentScene
 * @property {boolean} hitServerPayExperiment
 * @property {boolean} shouldCallLibraExperiment
 */
