openoracle-sdk-js
Version:
OpenOracle Node.js SDK - Intelligent Oracle Routing with Multiple LLM Providers
128 lines (126 loc) • 3.69 kB
TypeScript
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;