609a3634bd
All external market properties now surface as VERIFIED_PORTFOLIO. Removes the type from enums, domain types, mock data, matching engine, components, hooks, and tests — zero user-visible distinction remains. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
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
|