import type { ResultType } from './enums' import type { Property, PropertyUnit } from './property' import type { FutureSignal } from './futureSignal' import type { Match } from './match' // ── Unified Match Result (discriminated union) ──────────────────────────────── // Wraps the three result types so UI components can handle all three paths // without type confusion. Discriminate on `resultType`. interface UnifiedResultBase { matchId: string needId: string matchScore: number resultType: ResultType } export interface VerifiedPortfolioResult extends UnifiedResultBase { resultType: 'VERIFIED_PORTFOLIO' | 'MAISON_WORK' property: Property match: Match unit?: PropertyUnit // specific unit this match refers to } export interface FutureAvailabilityResult extends UnifiedResultBase { resultType: 'FUTURE_AVAILABILITY' signal: FutureSignal match: Match property?: Property // backing property (when signal has a propertyId) unit?: PropertyUnit // specific rentable unit (when signal has a unitId) } export type UnifiedMatchResult = | VerifiedPortfolioResult | FutureAvailabilityResult