UNPKG

openoracle-sdk-js

Version:

OpenOracle Node.js SDK - Intelligent Oracle Routing with Multiple LLM Providers

128 lines (126 loc) 3.69 kB
import { OracleProvider, DataCategory, UpdateFrequency, ResolutionMethod, OracleCapability, ConfidenceLevel } from '../types/enums'; export interface OracleDataPoint { value: number | string | boolean; timestamp: Date; source: string; confidence: ConfidenceLevel; metadata?: Record<string, any>; } export interface OracleRoutingRequest { query: string; category: DataCategory; requiredProviders?: OracleProvider[]; excludedProviders?: OracleProvider[]; maxProviders?: number; consensusThreshold?: number; timeoutMs?: number; cacheEnabled?: boolean; metadata?: Record<string, any>; } export interface OracleRoutingResponse { oracleProvider: OracleProvider; confidence: ConfidenceLevel; data: OracleDataPoint[]; reasoning: string; alternativeProviders: OracleProvider[]; executionTimeMs: number; cached: boolean; metadata?: Record<string, any>; } export interface AggregatedOracleData { aggregatedValue: number | string | boolean; individualDataPoints: OracleDataPoint[]; consensus: boolean; confidence: ConfidenceLevel; providers: OracleProvider[]; timestamp: Date; methodology: string; } export interface ChainlinkPriceFeed { feedId: string; pair: string; price: number; timestamp: Date; decimals: number; round: number; updatedAt: Date; } export interface PythPriceFeed { priceId: string; symbol: string; price: number; confidence: number; timestamp: Date; status: 'trading' | 'halted' | 'auction'; previousPrice?: number; previousTimestamp?: Date; } export interface OraclePollData { pollId: string; question: string; options: string[]; votes: Record<string, number>; totalVotes: number; startTime: Date; endTime: Date; resolutionMethod: ResolutionMethod; status: 'active' | 'closed' | 'resolved' | 'cancelled'; result?: string | number; } export interface ProviderCapabilities { provider: OracleProvider; capabilities: OracleCapability[]; supportedCategories: DataCategory[]; updateFrequencies: UpdateFrequency[]; costPerQuery: number; averageResponseTimeMs: number; reliability: number; accuracy: number; } export interface RoutingMetrics { providerId: OracleProvider; requestCount: number; successCount: number; errorCount: number; averageResponseTime: number; lastUsed: Date; cost: number; reliability: number; } export interface ValidationResult { isValid: boolean; errors: string[]; warnings: string[]; confidence: ConfidenceLevel; } export interface CacheEntry { key: string; value: any; timestamp: Date; ttl: number; provider: OracleProvider; hits: number; } export interface ProviderConfiguration { provider: OracleProvider; enabled: boolean; apiKey?: string; endpointUrl?: string; timeout: number; retryAttempts: number; rateLimit?: number; customParams?: Record<string, any>; } export interface NetworkConfiguration { chainId: number; name: string; rpcUrl: string; explorerUrl?: string; nativeToken: string; blockTime: number; } export declare function isOracleDataPoint(obj: any): obj is OracleDataPoint; export declare function isOracleRoutingRequest(obj: any): obj is OracleRoutingRequest; export declare function isOracleRoutingResponse(obj: any): obj is OracleRoutingResponse; export declare function validateOracleRequest(request: Partial<OracleRoutingRequest>): ValidationResult; export declare function validateProviderConfiguration(config: Partial<ProviderConfiguration>): ValidationResult;