TypeScript Types Reference
Complete reference for Atlas's TypeScript type system.
For the complete data specification, see Data Specification. For component props, see Component Reference.
Core Types
MapEvent
The canonical event data structure.
interface MapEvent {
id: string;
status: PublicationStatus; // 'draft' | 'review' | 'published' | 'archived' | 'retracted'
createdAt: string;
updatedAt: string;
// Required sections
temporal: TemporalData;
location: LocationData;
// Optional sections
summary?: string;
classification?: ClassificationData;
witnesses?: WitnessData;
sensorEvidence?: SensorEvidenceData;
objectCharacteristics?: ObjectCharacteristics;
movement?: MovementData;
investigation?: InvestigationData;
responseImpact?: ResponseImpactData;
sourceData?: SourceData;
environment?: EnvironmentalConditions;
media?: MediaAttachment[];
relations?: RelationalData;
}MapEventDisplay
MapEvent with computed display properties (used in UI).
interface MapEventDisplay extends MapEvent {
// Computed display values
coordinates: [number, number]; // [longitude, latitude]
sensitivityColor?: string; // Only if sensitivity set and not 'none'
sensitivityLabel?: string; // Only if sensitivity set and not 'none'
formattedDate: string; // Human-readable date
ageInDays: number; // Days since event
}Temporal Types
interface TemporalData {
date: string; // YYYY-MM-DD (required)
dateCertainty: TemporalCertainty; // Required
time?: string; // HH:MM:SS
timeCertainty?: TemporalCertainty;
timezone?: string; // IANA timezone
durationSeconds?: number; // Duration in seconds
durationDescription?: string; // Human-readable duration
timeOfDay?: string; // 'dawn' | 'morning' | 'afternoon' | etc.
moonPhase?: number; // 0-1 scale (0 = new moon, 0.5 = full)
isDaylightSaving?: boolean;
}
type TemporalCertainty = 'exact' | 'approximate' | 'estimated' | 'unknown';Location Types
interface LocationData {
id: string; // Required unique identifier
name: string;
country: string;
longitude: number; // Required
latitude: number; // Required
siteType: SiteType;
locationSensitivity?: LocationSensitivity; // Optional
// Optional
region?: string;
city?: string;
address?: string;
elevationMeters?: number;
elevationSource?: string;
coordinatePrecision?: number; // Decimal places
coordinatesApproximate?: boolean;
terrain?: string;
secondarySiteTypes?: SiteType[];
proximitySites?: ProximitySite[];
airspaceClass?: AirspaceClass;
}
type LocationSensitivity = 'critical' | 'high' | 'moderate' | 'standard' | 'none';
type SiteType =
| 'military_base' | 'nuclear_facility' | 'government_building'
| 'airport_commercial' | 'airport_military' | 'research_facility'
| 'urban' | 'suburban' | 'rural' | 'wilderness'
| 'ocean' | 'lake' | 'mountain' | 'desert'
// ... 40+ total optionsClassification Types
interface ClassificationData {
eventType: MapEventType;
hynekClassification?: HynekClassification;
valleeClassification?: ValleeClassification;
tags?: string[];
}
type MapEventType =
| 'sighting' | 'encounter' | 'landing' | 'abduction'
| 'physical_trace' | 'electromagnetic' | 'animal_reaction'
| 'vehicle_interference' | 'physiological' | 'other';
type HynekClassification =
| 'nl' // Nocturnal Lights
| 'dd' // Daylight Discs
| 'rv' // Radar-Visual
| 'ce1' // Close Encounter 1st Kind
| 'ce2' // Close Encounter 2nd Kind
| 'ce3'; // Close Encounter 3rd Kind
type ValleeClassification =
| 'an1' | 'an2' | 'an3' | 'an4' | 'an5' // Anomaly
| 'fb1' | 'fb2' | 'fb3' | 'fb4' | 'fb5' // Fly-by
| 'ma1' | 'ma2' | 'ma3' | 'ma4' | 'ma5' // Maneuver
| 'ce1' | 'ce2' | 'ce3' | 'ce4' | 'ce5'; // Close EncounterWitness Types
interface WitnessData {
witnessCount: number;
witnessCategories: WitnessCategory[];
credibilityFactors?: CredibilityFactor[];
observationConditions?: string;
}
type WitnessCategory =
| 'civilian' | 'military' | 'pilot_commercial' | 'pilot_military'
| 'law_enforcement' | 'scientist' | 'government_official'
| 'air_traffic_controller' | 'astronaut' | 'child';Evidence Types
interface SensorEvidenceData {
detectionMethods: DetectionMethod[];
evidenceTypes: EvidenceType[];
radarConfirmed?: boolean;
physicalTraces?: PhysicalTrace[];
electromagneticEffects?: ElectromagneticEffect[];
}
type DetectionMethod =
| 'visual' | 'radar_military' | 'radar_civilian' | 'radar_atc'
| 'infrared' | 'satellite' | 'sonar' | 'lidar'
| 'radio_frequency' | 'electromagnetic' | 'gravimetric'
// ... more options
type EvidenceType =
| 'witness_testimony' | 'photograph' | 'video' | 'radar_data'
| 'physical_trace' | 'audio_recording' | 'medical_report'
| 'government_document' | 'scientific_analysis'
// ... more optionsObject Types
interface ObjectCharacteristicsData {
objectCount?: number;
primaryObject?: ObservedObject;
additionalObjects?: ObservedObject[];
}
interface ObservedObject {
shape: ObjectShape;
colors: string[];
estimatedSize?: ObjectSize;
luminosity?: Luminosity;
soundDescription?: string;
surfaceFeatures?: SurfaceFeature[];
}
type ObjectShape =
| 'sphere' | 'disk' | 'oval' | 'triangle' | 'rectangle'
| 'cylinder' | 'cigar' | 'diamond' | 'boomerang' | 'chevron'
| 'tic_tac' | 'orb' | 'jellyfish' | 'cube' | 'pyramid'
// ... 50+ total optionsInvestigation Types
interface InvestigationData {
status: InvestigationStatus;
explanationStatus: ExplanationStatus;
confidenceLevel: ConfidenceLevel;
corroborationLevel: CorroborationLevel;
investigatingBodies?: InvestigatingBody[];
}
type InvestigationStatus =
| 'not_investigated' | 'under_investigation' | 'closed'
| 'reopened' | 'pending_review' | 'unknown';
type ExplanationStatus =
| 'unexplained' | 'explained' | 'insufficient_data'
| 'hoax' | 'misidentification' | 'classified';
type InvestigatingBody =
| 'aaro' | 'uaptf' | 'aatip' | 'project_blue_book'
| 'geipan' | 'cefaa' | 'mufon' | 'nuforc'
// ... more optionsMedia Types
interface MediaItem {
type: MediaType;
url: string;
thumbnailUrl?: string;
caption?: string;
timestamp?: string;
source?: string;
verification?: VerificationStatus;
}
type MediaType = 'image' | 'video' | 'audio' | 'document';
type VerificationStatus = 'verified' | 'unverified' | 'disputed' | 'debunked';Filter Types
interface MapEventFilters {
dateRange?: DateRange;
countries?: string[];
siteTypes?: SiteType[];
locationSensitivities?: LocationSensitivity[];
eventTypes?: MapEventType[];
hynekClassifications?: HynekClassification[];
valleeClassifications?: ValleeClassification[];
detectionMethods?: DetectionMethod[];
evidenceTypes?: EvidenceType[];
investigationStatuses?: InvestigationStatus[];
investigatingBodies?: InvestigatingBody[];
objectShapes?: ObjectShape[];
explanationStatuses?: ExplanationStatus[];
// Quick filters
radarConfirmed?: boolean;
multipleWitnesses?: boolean;
physicalEvidence?: boolean;
officialInvestigation?: boolean;
videoEvidence?: boolean;
militaryWitness?: boolean;
}
interface DateRange {
start: string;
end: string;
}Utility Types
// Status values
type MapEventStatus = 'draft' | 'published' | 'archived';
// Altitude measurement
interface Altitude {
value: number;
unit: 'feet' | 'meters';
reference?: 'agl' | 'msl' | 'flight_level';
}
// Geographic precision
type CoordinatePrecision =
| 'exact' | 'approximate' | 'area' | 'region' | 'country';Importing Types
All types are exported from the @disclosureos/mapping package:
import type {
MapEvent,
MapEventDisplay,
LocationData,
TemporalData,
ClassificationData,
// ... etc
} from '@disclosureos/mapping';For convenience, you can also import specific categories of types:
import type {
LocationSensitivity,
SiteType,
ObjectShape,
Luminosity,
HynekClassification,
ValleeClassification
} from '@disclosureos/mapping';Related
- Data Specification — Complete schema documentation
- Component Reference — Component props and APIs
- Architecture - Type System — Type system design
- Examples & Recipes — Real-world usage patterns
- Migration Guide — Type changes between versions