UNPKG

openoracle-sdk-js

Version:

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

102 lines (100 loc) 3 kB
import { BaseOracleProvider, QueryRequest, QueryResponse, ProviderOptions } from './base'; import { OracleConfig } from '../core/config'; import { OracleClient } from '../core/client'; import { OracleProvider, DataCategory, OracleCapability } from '../types/enums'; import { ProviderConfiguration, PythPriceFeed } from '../schemas/oracle-schemas'; export interface PythQueryOptions extends ProviderOptions { priceId?: string; includeConfidence?: boolean; maxStaleness?: number; binary?: boolean; } export interface PythFeedInfo { id: string; symbol: string; assetType: string; base: string; quote: string; description: string; genericSymbol?: string; } export interface PythPriceUpdate { id: string; price: { price: string; conf: string; expo: number; publishTime: number; }; emaPrice: { price: string; conf: string; expo: number; publishTime: number; }; } export declare class PythProvider extends BaseOracleProvider { private readonly hermesEndpoint; private readonly feedCache; private lastFeedUpdate; private readonly FEED_CACHE_TTL; constructor(config: OracleConfig, client: OracleClient, providerConfig: ProviderConfiguration); getProviderName(): OracleProvider; getProviderCapabilities(): OracleCapability[]; getSupportedCategories(): DataCategory[]; getEndpointUrl(): string; protected getCostPerQuery(): number; queryData(request: QueryRequest, options?: PythQueryOptions): Promise<QueryResponse>; /** * Query price data from Pyth Network */ private queryPriceData; /** * Find price feed for a given symbol */ private findPriceFeed; /** * Load price feed directory from Pyth */ private loadFeedDirectory; /** * Parse Pyth price format */ private parsePythPrice; /** * Get price status from Pyth data */ private getPriceStatus; /** * Calculate confidence level based on Pyth confidence interval */ private calculateConfidence; /** * Extract trading symbol from query */ private extractSymbol; /** * Get available price feeds */ getAvailableFeeds(): Promise<PythFeedInfo[]>; /** * Get multiple price feeds at once */ getBatchPrices(priceIds: string[]): Promise<PythPriceFeed[]>; /** * Get historical price data */ getHistoricalPrices(priceId: string, startTime: Date, endTime: Date): Promise<PythPriceFeed[]>; /** * Subscribe to real-time price updates */ subscribeToPrice(priceId: string, callback: (data: PythPriceFeed) => void): WebSocket; /** * Get price feed metadata */ getFeedMetadata(priceId: string): Promise<PythFeedInfo | null>; /** * Search feeds by asset type */ searchFeedsByAssetType(assetType: 'crypto' | 'equity' | 'fx' | 'commodities'): Promise<PythFeedInfo[]>; }