import { type Transit } from '../astrology/engine'; export type AstrolabeScopeMode = 'natal' | 'full' | 'yearly' | 'monthly' | 'daily'; import type { AstrolabeData } from '../types/divination'; import { type AstrolabePeriodEventCollection, type AstrolabePeriodBatch, type AstrolabePeriodBatchInput, type AstrolabePeriodCalculationCache } from './astrolabe-period-events'; export { formatAstrolabeAspectLine, formatAstrolabeAspectSections, rankAstrolabeAspects, } from './astrolabe-chart-facts'; export { AstrolabePeriodCalculationCache, buildAstrolabePeriodEventLayers, buildAstrolabePeriodBatchResult, buildAstrolabePeriodEvents, buildAstrolabePeriodEventsFromContext, buildAstrolabePeriodContext, mergeAstrolabePeriodCollections, mergeAstrolabePeriodEvents, resolveAstrolabePeriodWindow, scoreAstrolabePeriodEvent, } from './astrolabe-period-events'; export type { AstrolabePeriodBatchResult, AstrolabePeriodContext, AstrolabePeriodContextPointName, AstrolabePeriodAxisItem, AstrolabePeriodBatch, AstrolabePeriodBatchInput, AstrolabePeriodBatchRange, AstrolabePeriodDate, AstrolabePeriodEvent, AstrolabePeriodEventCollection, AstrolabePeriodEventKind, AstrolabePeriodScopeMode, AstrolabePeriodTransitGroup, AstrolabePeriodWindow, } from './astrolabe-period-events'; export { ASTROLABE_PERIOD_CONTEXT_POINT_NAMES, validateAstrolabePeriodContext, } from './astrolabe-period-events'; import { type AstronomicalTimeEvidence } from '../calendar/astronomical-time'; export type AstrolabeScopeContext = { scope: AstrolabeScopeMode; dateStr: string; displayText: string; displayLabel: string; promptText: string; solarReturnEvidence?: SolarReturnEvidence; solarReturnPeriods?: SolarReturnPeriod[]; secondaryProgressionEvidence?: SecondaryProgressionEvidence; solarArcEvidence?: SolarArcEvidence; /** 行运相位原始事实;transitEvidence 保留现有中文摘要文本。 */ transitFacts?: AstrolabeTransitEvidence; /** 行运落宫原始事实;transitHouseEvidence 保留现有中文摘要文本。 */ transitHouseFacts?: AstrolabeTransitHouseEvidence; periodEvents?: AstrolabePeriodEventCollection; periodBatch?: AstrolabePeriodBatch & { includesScopeFacts: boolean; }; }; export type AstrolabeTransitEvidenceStatus = '资料不足' | '无相位' | '有效'; export interface AstrolabeTransitPointFact { name: string; label: string; longitude: number; latitude?: number; distance?: number; /** 底层星历星座标识;中文 signLabel 仅用于展示。 */ sign: string; signLabel: string; degree: number; minute: number; second?: number; longitudeSpeed?: number; retrograde?: boolean; /** 本命点自身或行运点落入的本命宫;无法定位时为 null。 */ natalHouse: number | null; } export interface AstrolabeTransitAspectFact { key: string; status: '有效'; transiting: AstrolabeTransitPointFact; natal: AstrolabeTransitPointFact; aspectType: string; aspectName: string; symbol: string; actualAngle: number; exactAngle: number; allowedOrb: number; isOutOfSign: boolean; deviation: number; strength: number; phase: Transit['phase']; /** 维持原有主线筛选后的成员身份,同时 facts 保留完整排序结果。 */ line: '主线' | '其余'; promptText: string; } export interface AstrolabeTransitEvidence { status: AstrolabeTransitEvidenceStatus; facts: AstrolabeTransitAspectFact[]; headlineFactKeys: string[]; promptText: string; } export interface AstrolabeTransitHouseFact { key: string; status: '有效'; transitingBody: string; label: string; longitude: number; latitude?: number; distance?: number; /** 底层星历星座标识;中文 signLabel 仅用于展示。 */ sign: string; signLabel: string; degree: number; minute: number; second: number; longitudeSpeed?: number; retrograde: boolean; natalHouse: number | null; promptText: string; } export interface AstrolabeTransitHouseEvidence { status: Exclude; facts: AstrolabeTransitHouseFact[]; promptText: string; } export type AstrolabeFullScopeContexts = { natal: AstrolabeScopeContext; yearly: AstrolabeScopeContext; monthly: AstrolabeScopeContext; daily: AstrolabeScopeContext; }; export type AstrolabeScopeBuildOptions = { periodCalculationCache?: AstrolabePeriodCalculationCache; periodBatch?: AstrolabePeriodBatchInput; includeScopeFacts?: boolean; includePeriodEvents?: boolean; /** 完整输出可把流年高级推运采样点固定在所选的具体日期。 */ advancedReferenceDate?: { year: number; month: number; day: number; }; }; export type AstrolabeAdvancedTechnique = '太阳返照' | '次限推进' | '太阳弧'; export interface AstrolabeAdvancedCalculationStep { key: string; technique: AstrolabeAdvancedTechnique; stage: '输入核验' | '时间映射' | '粗略搜索' | '数值细化' | '位置计算' | '推进弧计算' | '相位筛选'; status: '已计算' | '近似' | '不可用'; dependsOnStepKeys: string[]; inputs: Record; result: Record; promptText: string; sources: string[]; limitation: '高级时限步骤只证明太阳返照、次限推进或太阳弧的时间映射、位置计算与相位筛选如何形成;不得把数值精度解释为事件必然性或预测成功率'; } export interface AstrolabeAdvancedAspectFact { key: string; technique: AstrolabeAdvancedTechnique; status: '命中容许度'; movingPointKey: string; natalPointKey: string; movingPoint: string; natalPoint: string; aspectName: string; actualAngle: number; exactAngle: number; deviation: number; allowedOrb: number; normalizedOrbRatio: number; closeness: '紧密' | '中等' | '宽松'; ownerFactKeys: string[]; ownerStepKeys: string[]; promptText: string; sources: string[]; limitation: '高级时限相位只描述推进点或返照点与本命点在设定容许度内的几何关系;偏差、紧密等级和数量不代表事件概率、吉凶比例或必然结果'; } export interface AstrolabeAdvancedMovingPointFact { key: string; technique: AstrolabeAdvancedTechnique; status: '已计算'; /** 稳定原始身份,例如 Sun、Moon、Ascendant;展示标签不参与关联。 */ name: string; label: string; longitude: number; signName: string; signLabel: string; degree: number; minute: number; second: number; latitude?: number; distance?: number; longitudeSpeed?: number; retrograde?: boolean; /** 仅在本次技术实际计算了宫位时提供;0 不作为动态落宫事实。 */ house?: number; /** 太阳弧保留被平移的本命点身份;其他技术通常与 name 相同。 */ sourceName?: string; sourceLabel?: string; /** 当前兼容输出中最终选中的相位。 */ aspectFactKeys: string[]; /** 完整候选相位,包含被全局上限截去的相位。 */ candidateAspectFactKeys: string[]; } export interface AstrolabeAdvancedAspectSummaryFact { key: string; status: '有主要相位' | '未见主要相位' | '无法计算'; factKeys: string[]; promptText: string; sources: string[]; limitation: '高级时限相位汇总只说明当前筛选范围内是否列出主要几何相位;未见不等于没有其他弱相位,有相位也不等于现实事件必然发生'; } export interface AstrolabeAdvancedLimitationFact { key: string; technique: AstrolabeAdvancedTechnique; type: '输入完整性' | '时间映射边界' | '数值精度边界' | '星历模型边界' | '解释边界'; status: '适用'; ownerFactKeys: string[]; ownerStepKeys: string[]; promptText: string; sources: string[]; limitation: '限制事实用于约束太阳返照、次限推进和太阳弧可以支持的时间与解释范围,不得被反向当作现实事件、吉凶或固定应期证据'; } export interface AstrolabeAdvancedSummaryFact { key: string; technique: AstrolabeAdvancedTechnique; status: '证据链完整' | '证据链含近似' | '不适用' | '证据链有缺口'; factKeys: string[]; calculationStepCount: number; aspectFactCount: number; limitationFactCount: number; promptText: string; sources: string[]; limitation: '高级时限证据汇总只统计时间映射、位置或推进弧计算、主要相位、近似状态与限制覆盖;不得按数量、偏差或状态生成预测成功率、吉凶分数、事件概率或固定应期'; } export type SolarReturnEvidence = { key: string; status: 'exact' | 'approximate' | 'not-applicable' | 'unavailable'; targetYear: number; dateTime?: string; timezone: number; residualDegrees?: number; searchWindowHours: number; coarseStepHours: number; refinementToleranceMinutes: number; refinementIterations: number; aspects: string[]; calculationSteps: AstrolabeAdvancedCalculationStep[]; calculationChain: string[]; aspectFacts: AstrolabeAdvancedAspectFact[]; candidateAspectFacts: AstrolabeAdvancedAspectFact[]; movingPointFacts: AstrolabeAdvancedMovingPointFact[]; /** 返照地点默认沿用出生地;完整返照盘包含行星、四轴、宫头及两层相位。 */ returnChart?: SolarReturnChartFact; aspectSummaryFact: AstrolabeAdvancedAspectSummaryFact; summaryFact: AstrolabeAdvancedSummaryFact; source: string; limitations: string[]; limitationFacts: AstrolabeAdvancedLimitationFact[]; timeScale?: AstronomicalTimeEvidence; promptText: string; }; export interface SolarReturnPeriod { /** 目标日历年内的当地有效区间,结束时刻不含。 */ startsAt: string; endsAt: string; startUtcDateTime: string; endUtcDateTime: string; isReferencePeriod: boolean; evidence: SolarReturnEvidence; } export interface SolarReturnHouseFact { key: string; house: number; longitude: number; signName: string; signLabel: string; degree: number; minute: number; second: number; } export interface SolarReturnInternalAspectFact { key: string; firstPointKey: string; secondPointKey: string; firstPoint: string; secondPoint: string; aspectName: string; actualAngle: number; exactAngle: number; deviation: number; allowedOrb: number; promptText: string; } export interface SolarReturnChartFact { location: { name: string; latitude: number; longitude: number; source: '出生地'; }; houseSystem: 'placidus' | 'whole_sign'; planets: AstrolabeAdvancedMovingPointFact[]; angles: AstrolabeAdvancedMovingPointFact[]; houses: SolarReturnHouseFact[]; internalAspectFacts: SolarReturnInternalAspectFact[]; natalAspectFacts: AstrolabeAdvancedAspectFact[]; promptText: string; } export interface SecondaryProgressionEvidence { key: string; status: 'calculated' | 'not-applicable' | 'unavailable'; targetYear: number; age?: number; progressedDateTime?: string; aspects: string[]; calculationSteps: AstrolabeAdvancedCalculationStep[]; calculationChain: string[]; aspectFacts: AstrolabeAdvancedAspectFact[]; candidateAspectFacts: AstrolabeAdvancedAspectFact[]; movingPointFacts: AstrolabeAdvancedMovingPointFact[]; aspectSummaryFact: AstrolabeAdvancedAspectSummaryFact; summaryFact: AstrolabeAdvancedSummaryFact; source: string; limitations: string[]; limitationFacts: AstrolabeAdvancedLimitationFact[]; promptText: string; } export interface SolarArcEvidence { key: string; status: 'calculated' | 'not-applicable' | 'unavailable'; targetYear: number; age?: number; progressedDateTime?: string; arcDegrees?: number; aspects: string[]; calculationSteps: AstrolabeAdvancedCalculationStep[]; calculationChain: string[]; aspectFacts: AstrolabeAdvancedAspectFact[]; candidateAspectFacts: AstrolabeAdvancedAspectFact[]; movingPointFacts: AstrolabeAdvancedMovingPointFact[]; aspectSummaryFact: AstrolabeAdvancedAspectSummaryFact; summaryFact: AstrolabeAdvancedSummaryFact; source: string; limitations: string[]; limitationFacts: AstrolabeAdvancedLimitationFact[]; promptText: string; } /** * 返回星盘行运入口共用的当前参考日期。 * * 行运日期采用项目统一的墙上时间策略,范围层级只改变日期精度: * yearly=YYYY、monthly=YYYY-MM、daily/full=YYYY-MM-DD。 */ export declare function getDefaultAstrolabeScopeDate(scope: AstrolabeScopeMode, now?: Date): string; export declare function calculateSecondaryProgressionEvidence(data: AstrolabeData, targetYear: number, referenceDate?: { year: number; month: number; day: number; }): SecondaryProgressionEvidence; export declare function calculateSolarArcEvidence(data: AstrolabeData, targetYear: number, referenceDate?: { year: number; month: number; day: number; }): SolarArcEvidence; export declare function calculateSolarReturnEvidence(data: AstrolabeData, targetYear: number): SolarReturnEvidence; export declare function buildAstrolabeScopeContext(data: AstrolabeData | null | undefined, scope: AstrolabeScopeMode, dateStr: string, options?: AstrolabeScopeBuildOptions): AstrolabeScopeContext; export declare function buildAstrolabeFullScopeContexts(data: AstrolabeData, referenceDateStr: string, options?: Pick): AstrolabeFullScopeContexts; export declare function getAstrolabeScopeLabel(scope: AstrolabeScopeMode): string;