semantic-ds-toolkit
Version:
Performance-first semantic layer for modern data stacks - Stable Column Anchors & intelligent inference
69 lines • 2.14 kB
TypeScript
import { OfflineMode, ExchangeRateResult } from './fx-cache';
export interface ConversionMetadata {
rateSource?: ExchangeRateResult['source'];
rateAgeMs?: number;
confidence?: number;
audit?: {
timestamp: Date;
conversion: string;
rate?: number;
source?: ExchangeRateResult['source'];
stalenessMs?: number;
};
}
export interface ConversionResult {
value: number;
fromUnit: string;
toUnit: string;
rate?: number;
timestamp: Date;
metadata?: ConversionMetadata;
}
export interface UnitConversionConfig {
cacheTTL?: number;
fallbackRates?: Record<string, number>;
unitMappingsPath?: string;
offlineMode?: OfflineMode;
commonCurrencyPairs?: Array<{
from: string;
to: string;
}>;
}
export type UnitCategory = 'currency' | 'temperature' | 'distance' | 'time' | 'mass' | 'volume' | 'area';
export interface UnitDefinition {
symbol: string;
name: string;
category: UnitCategory;
baseUnit?: string;
conversionFactor?: number;
conversionFunction?: (value: number, fromUnit: string, toUnit: string) => number;
}
export declare class UnitConverter {
private fxCache;
private config;
private unitDefinitions;
private aliases;
private unitMappingsPath;
constructor(config?: UnitConversionConfig);
private resolveMappingsPath;
private loadUnitsFromYAML;
private normalizeCategory;
private findBaseSymbol;
refreshUnitDefinitions(): void;
private normalizeUnit;
private convertTemperature;
convert(value: number, fromUnit: string, toUnit: string): Promise<ConversionResult>;
convertBatch(conversions: Array<{
value: number;
fromUnit: string;
toUnit: string;
}>): Promise<ConversionResult[]>;
getSupportedUnits(category?: UnitCategory): string[];
getUnitInfo(unit: string): UnitDefinition | undefined;
addCustomUnit(definition: UnitDefinition): void;
prefetchCommonRates(pairs?: Array<{
from: string;
to: string;
}> | undefined): Promise<void>;
}
//# sourceMappingURL=unit-convert.d.ts.map