import { CartItem } from "../../../modules";
import { CapacityItem, ResourceItem } from "./resources";
/**
 * @title: 基于选择的商品格式化容量
 * @description:
 * @param {any} param1
 * @return {*}
 * @Author: zhiwei.Wang
 */
export declare const formatDefaultCapacitys: ({ capacity, product_bundle, }: any) => CapacityItem[];
/**
 * @title: 获取总容量
 * @description:
 * @param {object} capacity 为 formatDefaultCapacitys()的结果
 * @return {*}
 * @Author: zhiwei.Wang
 */
export declare const getSumCapacity: ({ capacity, num }: {
    capacity: CapacityItem[];
    num: number;
}) => number;
/**
 * 给定购物车数据，返回对应的 capacity 信息和套餐 capacity
 *
 * @export
 * @param {CartItem} targetCartItem
 * @return {*}
 */
export declare function getCapacityInfoByCartItem(targetCartItem: CartItem): {
    formatCapacity: CapacityItem[];
    currentCapacity: number;
};
/**
 * @title: 传入资源，如果有子资源，会根据组合资源的 capacity 计算修改子资源的 capacity
 * @description:
 * @param {object} resource
 * @return {*}
 * @Author: jinglin.tan
 */
export declare const checkSubResourcesCapacity: (resource: ResourceItem) => void;
/**
 * 检查资源是否有足够的容量供额外使用
 * @param currentCapacity - 当前已使用的容量
 * @param requiredCapacity - 需要的额外容量
 * @param maxCapacity - 最大允许容量
 * @returns 如果资源可以容纳额外的容量则返回 true
 */
export declare const checkResourceCanUseByCapacity: (currentCapacity: number, requiredCapacity: number, maxCapacity: number) => boolean;
/**
 * 计算按资源类型分组的容量占用情况
 *
 * @param {CartItem[]} cartItems 购物车商品列表
 * @param {string} timeSlotStart 时间段开始时间
 * @param {string} timeSlotEnd 时间段结束时间
 * @param {ResourceItem[]} allProductResources 当前商品的所有资源列表
 * @return {Record<string, number>} 返回每种资源类型(form_id)的容量占用
 */
export declare function calculateCartItemsCapacityUsageByResourceType({ cartItems, timeSlotStart, timeSlotEnd, allProductResources }: {
    cartItems: CartItem[];
    timeSlotStart: string;
    timeSlotEnd: string;
    allProductResources: ResourceItem[];
}): Record<string, number>;
/**
 * 获取商品的资源ID列表
 */
export declare function getResourcesIdsByProduct(product: any): number[];
/**
 * 检查特定时间段的容量是否足够
 */
export declare function checkTimeSlotCapacity(timeSlotStart: string, timeSlotEnd: string, cartItems: CartItem[], allResources: ResourceItem[]): {
    success: boolean;
    required: number;
    available: number;
};
