openoracle-sdk-js
Version:
OpenOracle Node.js SDK - Intelligent Oracle Routing with Multiple LLM Providers
78 lines (76 loc) • 2.41 kB
TypeScript
import { BaseOracleProvider, QueryRequest, QueryResponse, ProviderOptions } from './base';
import { OracleConfig } from '../core/config';
import { OracleClient } from '../core/client';
import { OracleProvider, DataCategory, OracleCapability, ChainId } from '../types/enums';
import { ProviderConfiguration, ChainlinkPriceFeed } from '../schemas/oracle-schemas';
export interface ChainlinkQueryOptions extends ProviderOptions {
feedId?: string;
chainId?: ChainId;
includeHistorical?: boolean;
decimals?: number;
}
export interface ChainlinkFeedInfo {
feedId: string;
name: string;
pair: string;
decimals: number;
proxy: string;
aggregator: string;
phase: number;
heartbeat: number;
}
export declare class ChainlinkProvider extends BaseOracleProvider {
private readonly baseUrls;
private readonly feedCache;
constructor(config: OracleConfig, client: OracleClient, providerConfig: ProviderConfiguration);
getProviderName(): OracleProvider;
getProviderCapabilities(): OracleCapability[];
getSupportedCategories(): DataCategory[];
getEndpointUrl(): string;
protected getCostPerQuery(): number;
queryData(request: QueryRequest, options?: ChainlinkQueryOptions): Promise<QueryResponse>;
/**
* Query price data from Chainlink price feeds
*/
private queryPriceData;
/**
* Query sports data from Chainlink sports feeds
*/
private querySportsData;
/**
* Query weather data from Chainlink weather feeds
*/
private queryWeatherData;
/**
* Query generic data using Chainlink Functions or External Adapters
*/
private queryGenericData;
/**
* Find price feed for a given symbol
*/
private findPriceFeed;
/**
* Load feed directory for a specific chain
*/
private loadFeedDirectory;
/**
* Extract trading symbol from query
*/
private extractSymbol;
/**
* Get historical price data
*/
private getHistoricalPriceData;
/**
* Build Chainlink Function source code
*/
private buildFunctionSource;
/**
* Get available price feeds for a chain
*/
getAvailableFeeds(chainId?: ChainId): Promise<ChainlinkFeedInfo[]>;
/**
* Get real-time price updates via WebSocket
*/
subscribeToFeed(feedId: string, callback: (data: ChainlinkPriceFeed) => void): WebSocket;
}