import type { BookingTicketHandle, ScanOrderOrderProduct, SalesSdkGiftSelectChoice, SalesSdkGiftSelectContext, SalesSdkGiftSelectResult } from '../types';
/**
 * 将弹窗已加载的商品写入页内缓存（与 confirm 共用，避免二次 query）。
 *
 * @example
 * seedGiftProductQueryCache(productsFromModal);
 */
export declare function seedGiftProductQueryCache(products: any[]): void;
/**
 * 构造单个赠品 OrderProduct 行（写入 tempOrder.products）。
 *
 * @example
 * const line = buildGiftOrderProduct(choice, productData, ctx);
 */
export declare function buildGiftOrderProduct(choice: SalesSdkGiftSelectChoice, productData: any, ctx: SalesSdkGiftSelectContext): Partial<ScanOrderOrderProduct>;
/**
 * 通过 shoppingCart 同款 `getProducts({ isGift: true })` 拉取完整商品信息。
 * 带页内缓存，避免弹窗 open + confirm 连续两次全量 query。
 *
 * @example
 * const map = await fetchGiftProductMap([{ product_id: 1, product_variant_id: 0, quantity: 1 }]);
 */
export declare function fetchGiftProductMap(productIds: number[]): Promise<Map<number, any>>;
/**
 * 将用户选择转为完整赠品行列表。
 * 解析顺序：弹窗快照 → OS catalog(getProductByIds) → `/shop/product/query`（带缓存）。
 *
 * @example
 * const lines = await buildGiftOrderProductsFromChoices(choices, ctx, (ids) => ticket.getProductByIds(ids));
 */
export declare function buildGiftOrderProductsFromChoices(choices: SalesSdkGiftSelectChoice[], ctx: SalesSdkGiftSelectContext, options?: {
    fallbackFetcher?: (ids: number[]) => Promise<any[]>;
    bookingTicket?: BookingTicketHandle | null;
}): Promise<SalesSdkGiftSelectResult>;
/**
 * 弹窗 open 时预热缺失的商品 query（catalog / 快照未命中时才请求）。
 *
 * @example
 * await prefetchGiftProductQueryCache([60943, 38757]);
 */
export declare function prefetchGiftProductQueryCache(productIds: number[]): Promise<void>;
