import { type BaziCompatibilityEvidenceResult, type BaziCompatibilityOptions } from '../bazi'; import { type AstrolabeSynastryData, type AstrolabeSynastryOptions } from '../divination'; import { type ZiweiCompatibilityEvidenceResult, type ZiweiCompatibilityOptions } from '../ziwei/iztro'; import { type BirthChartBundleOptions, type BirthChartPointBundle, type BirthChartSystem } from '../birth'; import { type BirthProfileTimeRange } from '../profile/time-range'; import type { BirthProfile } from '../profile'; export type CompatibilitySystem = Exclude; export interface CompatibilityRangeBatchOptions { /** 当前笛卡尔积中的起始 pair 索引;省略时从 0 开始。 */ startIndex?: number; /** 当前批次最多返回的 pair 数;省略时返回 1 个,最大 60 个。 */ limit?: number; } export interface CompatibilityBundleOptions { /** 默认只计算八字;需要紫微或星盘时显式加入对应系统。 */ systems?: CompatibilitySystem[]; bazi?: BaziCompatibilityOptions; ziwei?: ZiweiCompatibilityOptions; astrolabe?: AstrolabeSynastryOptions; /** 同时传给双方出生盘生成器,例如紫微运限范围与固定计算时刻。 */ chart?: BirthChartBundleOptions; /** 出生区间合盘的笛卡尔积续读游标;单点输入时忽略。 */ rangeBatch?: CompatibilityRangeBatchOptions; /** 取消当前批次以及其后的盘面或合盘计算。 */ signal?: AbortSignal; } export interface CompatibilityPointBundle { systems: CompatibilitySystem[]; primary: BirthChartPointBundle; partner: BirthChartPointBundle; bazi?: BaziCompatibilityEvidenceResult; ziwei?: ZiweiCompatibilityEvidenceResult; astrolabe?: AstrolabeSynastryData; range?: never; } export interface CompatibilityRangeSample { /** 该侧区间中的逐秒索引;固定侧唯一使用 0。 */ index: number; /** 固定侧没有机器时间戳,因此省略该字段。 */ timestamp?: number; /** 该样本实际送入出生盘入口的单点资料。 */ profile: BirthProfile; /** 该样本的完整单点盘面。 */ bundle: BirthChartPointBundle; } export interface CompatibilityPairResult { /** 当前批次在完整笛卡尔积中的索引。 */ pairIndex: number; primaryIndex: number; partnerIndex: number; bazi?: BaziCompatibilityEvidenceResult; ziwei?: ZiweiCompatibilityEvidenceResult; astrolabe?: AstrolabeSynastryData; } export interface CompatibilityRangeDescriptor { /** 有范围的一侧提供已校验 source;固定侧省略。 */ primarySource?: BirthProfileTimeRange; partnerSource?: BirthProfileTimeRange; resolutionSeconds: 1; totalPairs: number; startIndex: number; endIndexExclusive: number; /** null 表示本批已覆盖笛卡尔积末尾。 */ nextIndex: number | null; } export interface CompatibilityRangeBundle { systems: CompatibilitySystem[]; /** 原始资料保留区间字段,供恢复、审计和后续批次继续使用。 */ primaryProfile: BirthProfile; partnerProfile: BirthProfile; range: CompatibilityRangeDescriptor; /** 当前批次每侧唯一的完整单点盘面,按各自索引去重。 */ primarySamples: CompatibilityRangeSample[]; partnerSamples: CompatibilityRangeSample[]; /** 每个 pair 仅引用两侧 sample 索引,不重复嵌入完整原盘。 */ pairs: CompatibilityPairResult[]; primary?: never; partner?: never; bazi?: never; ziwei?: never; astrolabe?: never; } export type CompatibilityBundle = CompatibilityPointBundle | CompatibilityRangeBundle; /** 从两份 BirthProfile 直接生成单点或逐秒笛卡尔积的合盘证据。 */ export declare function calculateCompatibilityBundle(primary: BirthProfile, partner: BirthProfile, options?: CompatibilityBundleOptions): Promise;