//#region src/plus/pisellReservation/data/reservationRuleProducts.ts
/**
* 处理 `fulfillment.enabled_resource_rules`（或结构一致的 `reservation.enabled_reservation_rules`）
* 的纯函数：
* - 收集 `type === 'link'` 规则下的商品 id
* - 在商品列表中挑出第一个带有效 `duration.value`（分钟）的商品
*/
/**
* 从规则数组中收集 `type === 'link'` 的商品 id（去重，过滤非正整数）。
*/
function collectLinkProductIdsFromReservationRules(rules) {
	if (!Array.isArray(rules)) return [];
	const ids = [];
	for (const entry of rules) {
		if (!entry || typeof entry !== "object") continue;
		const rec = entry;
		if (rec.type !== "link") continue;
		if (!Array.isArray(rec.value)) continue;
		for (const v of rec.value) {
			const n = Number(v);
			if (Number.isFinite(n) && n > 0) ids.push(Math.floor(n));
		}
	}
	return [...new Set(ids)];
}
/**
* 返回商品列表中第一个 `duration.value > 0` 的商品。
* 没有则返回 null（duration 读取方可统一在 `reservationRuleProduct.duration.value` 上取）。
*/
function pickFirstDurationProduct(products) {
	if (!Array.isArray(products)) return null;
	for (const product of products) {
		var _product$duration;
		const value = product === null || product === void 0 || (_product$duration = product.duration) === null || _product$duration === void 0 ? void 0 : _product$duration.value;
		const n = Number(value);
		if (Number.isFinite(n) && n > 0) return product;
	}
	return null;
}
//#endregion
export { collectLinkProductIdsFromReservationRules, pickFirstDurationProduct };
