import type { VenueSlotSelection, MergedSlotGroup, PriceBreakdownEntry, ResourceProductMapping, VenueResourceRawData } from '../types';
import type { ScanOrderOrderProduct } from '../../ScanOrder/types';
export declare function buildVenueIdentityKey(resourceId: number | string, groupIndex: number): string;
export declare function mergeConsecutiveSlots(slots: VenueSlotSelection[]): MergedSlotGroup[];
export declare function buildPriceBreakdown(params: {
    group: MergedSlotGroup;
    productId: number;
    quotation?: {
        getQuotationShelfId: (p: {
            productId: number;
            datetime: string;
        }) => number;
    };
}): PriceBreakdownEntry[];
export declare function buildVenueResourceMetadata(params: {
    mapping: ResourceProductMapping;
    rawResource: VenueResourceRawData | undefined;
}): Record<string, any>;
export interface BuildVenueBookingParams {
    group: MergedSlotGroup;
    resourceId: number | string;
    mapping: ResourceProductMapping;
    rawResource: VenueResourceRawData | undefined;
    bookingUuid: string;
    productUid: string;
    /**
     * 若当前 resource 是组合资源（combined_resource.status === 1），传入其子资源的原始数据，
     * 将作为 resources[0].children 写入 booking，结构与父 resource 保持一致。
     */
    childResources?: VenueResourceRawData[];
}
export declare function buildVenueBookingEntry(params: BuildVenueBookingParams): Record<string, any>;
/**
 * 从一条已合并的订单商品还原出独立的时段列表。
 * 优先使用 metadata.price_breakdown 还原每个时段的精确价格，
 * 回退到按 selling_price / slot_count 均分。
 */
export declare function expandMergedSlotToIndividual(product: ScanOrderOrderProduct, slotDurationMinutes: number): VenueSlotSelection[];
