UNPKG

@sailboat-computer/validation

Version:

Validation framework for sailboat computer v3

186 lines 4.83 kB
/** * Extended validation types for Signal K * * This file extends the base validation types with Signal K specific types * to enable more comprehensive validation of Signal K data. */ import { ValidationResult, RawSensorData } from './types'; /** * Extended raw sensor data with additional marine-specific fields */ export interface ExtendedRawSensorData extends RawSensorData { /** * Signal K path (if applicable) */ signalKPath?: string; /** * Additional source details (extends the base source property) */ sourceDetails?: SignalKSource; /** * Additional metadata */ metadata?: Record<string, any>; } import { SignalKValidationContext } from './contexts/interface-contexts'; /** * Signal K value types */ export declare enum SignalKValueType { NUMBER = "number", STRING = "string", BOOLEAN = "boolean", OBJECT = "object", ARRAY = "array", POSITION = "position", ATTITUDE = "attitude", DATETIME = "datetime" } /** * Signal K position value */ export interface SignalKPosition { latitude: number; longitude: number; altitude?: number; } /** * Signal K attitude value */ export interface SignalKAttitude { roll: number; pitch: number; yaw: number; } /** * Signal K path metadata */ export interface SignalKPathMetadata { path: string; valueType: SignalKValueType; units?: string; description?: string; displayName?: string; zones?: SignalKZone[]; possibleValues?: string[]; defaultValue?: any; } /** * Signal K zone for value ranges */ export interface SignalKZone { lower?: number; upper?: number; state: 'normal' | 'alert' | 'warn' | 'alarm' | 'emergency'; message?: string; } /** * Signal K source definition */ export interface SignalKSource { type: 'NMEA0183' | 'NMEA2000' | 'SignalK' | 'I2C' | 'GPIO' | 'Computed' | string; label: string; talker?: string; sentence?: string; pgn?: number; src?: number; instance?: number; deviceId?: string; reliability?: number; } /** * Signal K validation rule interface */ export interface SignalKValidationRule { /** * Validate a Signal K path and value * @param path Signal K path * @param value Value to validate * @param context Validation context * @returns Validation result */ validateSignalK(path: string, value: any, context: SignalKValidationContext): ValidationResult; /** * Check if this rule is applicable to a Signal K path * @param path Signal K path * @returns Whether the rule is applicable */ isApplicableToPath(path: string): boolean; /** * Get metadata for a Signal K path * @param path Signal K path * @returns Path metadata */ getPathMetadata(path: string): SignalKPathMetadata | undefined; } /** * Signal K confidence calculation factors */ export interface SignalKConfidenceFactors { /** * Source reliability (0-1) * Based on source type, device quality, historical reliability */ sourceReliability: number; /** * Path consistency (0-1) * Based on path structure, expected format */ pathConsistency: number; /** * Value stability (0-1) * Based on value changes over time, outlier detection */ valueStability: number; /** * Update frequency (0-1) * Based on how often the value is updated compared to expected frequency */ updateFrequency: number; /** * Cross-validation score (0-1) * Based on agreement with other related sensors */ crossValidation: number; /** * Context appropriateness (0-1) * Based on whether the value makes sense in the current operational context */ contextAppropriateness: number; } /** * Signal K validation result with confidence factors */ export interface SignalKValidationResult extends ValidationResult { /** * Confidence factors that contributed to the result */ confidenceFactors?: SignalKConfidenceFactors; /** * Path metadata used for validation */ pathMetadata?: SignalKPathMetadata; /** * Source information */ source?: SignalKSource; /** * Zone that the value falls into (if applicable) */ zone?: SignalKZone; } /** * Calculate confidence for Signal K data * * @param factors Confidence factors * @returns Confidence score (0-1) */ export declare function calculateSignalKConfidence(factors: SignalKConfidenceFactors): number; /** * Get Signal K path metadata for common paths * * @param path Signal K path * @returns Path metadata if available */ export declare function getSignalKPathMetadata(path: string): SignalKPathMetadata | undefined; //# sourceMappingURL=types-extension.d.ts.map