import type { Address } from "viem"; import type { BuildQueryFn } from "../../utils/buildQuery.js"; import type { OracleAdapterEntry } from "../../utils/oracle.js"; export type OracleAdapterCheckSeverity = "high" | "medium" | "low" | "info"; export type OracleAdapterRuleOutcome = "pass" | "fail" | "unknown" | "not_applicable"; export type OracleAdapterChecksStatus = "positive" | "warning" | "negative"; export type OracleAdapterUnavailableReason = "v3-disabled" | "chain-not-supported"; export declare class OracleAdapterUnavailableError extends Error { readonly reason: OracleAdapterUnavailableReason; readonly code = "ORACLE_ADAPTER_UNAVAILABLE"; constructor(reason: OracleAdapterUnavailableReason); } export declare const isOracleAdapterUnavailableError: (value: unknown, reason?: OracleAdapterUnavailableReason) => value is OracleAdapterUnavailableError; export type OracleAdapterFinding = { key: string; outcome: OracleAdapterRuleOutcome; severity: OracleAdapterCheckSeverity; description: string; expected?: unknown; observed?: unknown; }; export type OracleAdapterFindingSummary = { passed: number; failed: number; unknown: number; notApplicable: number; }; export type OracleAdapterAssessment = { chainId: number; address: Address; recognized: boolean; checksStatus: OracleAdapterChecksStatus | null; reason: string | null; inActiveRoute: boolean; adapterClass: string | null; label: string | null; provider: string | null; methodology: string | null; model: string | null; config: Record | null; findings: OracleAdapterFinding[]; summary: OracleAdapterFindingSummary | null; policyId: string | null; policyVersion: number | null; blockNumber: string | null; evaluatedAt: string | null; lastCheckedAt: string | null; }; export type OracleRouterConfig = { asset0: Address; asset1: Address; oracle: Address; blockNumber: string; timestamp: string; txHash: string; }; export type OracleRouterVault = { vault: Address; asset: Address; blockNumber: string; timestamp: string; txHash: string; }; export type OracleRouter = { chainId: number; router: Address; deployer: Address; deployedAt: string; configs: OracleRouterConfig[]; vaults: OracleRouterVault[]; }; export type OracleAdapterAssessmentFilters = { recognized?: boolean; active?: boolean; }; export type V3ListMeta = { total?: number; offset?: number; limit?: number; chainId?: string; [key: string]: unknown; }; export type V3Envelope = { data: T; meta?: Record; }; export type V3ListEnvelope = { data: T[]; meta?: V3ListMeta; }; export type EnrichedOracleAdapterEntry = OracleAdapterEntry & { assessment?: OracleAdapterAssessment; }; export interface OracleAdapterServiceConfig { endpoint?: string; apiKey?: string; cacheMs?: number; pageSize?: number; } export interface IOracleAdapterService { fetchOracleAdapterAssessment(chainId: number, address: Address): Promise; fetchOracleAdapterAssessments(chainId: number, filters?: OracleAdapterAssessmentFilters): Promise; fetchOracleAdapterAssessmentMap(chainId: number, filters?: OracleAdapterAssessmentFilters): Promise>; fetchOracleRouters(chainId: number): Promise; fetchOracleRouterMap(chainId: number): Promise>; enrichAdapters(chainId: number, adapters: OracleAdapterEntry[]): Promise; } export declare class OracleAdapterService implements IOracleAdapterService { private readonly config; private assessmentCache; private assessmentListCache; private routerCache; constructor(config?: OracleAdapterServiceConfig, buildQuery?: BuildQueryFn); private get endpoint(); private getHeaders; private buildUrl; queryV3OracleAdapterAssessment: (chainId: number, address: Address) => Promise | undefined>; setQueryV3OracleAdapterAssessment(fn: typeof this.queryV3OracleAdapterAssessment): void; queryV3OracleAdapterAssessmentsPage: (chainId: number, offset: number, limit: number, filters?: OracleAdapterAssessmentFilters) => Promise>; setQueryV3OracleAdapterAssessmentsPage(fn: typeof this.queryV3OracleAdapterAssessmentsPage): void; getQueryKeyV3OracleAdapterAssessmentsPage(chainId: number, offset: number, limit: number, filters?: OracleAdapterAssessmentFilters): string | null; queryV3OracleRoutersPage: (chainId: number, offset: number, limit: number) => Promise>; setQueryV3OracleRoutersPage(fn: typeof this.queryV3OracleRoutersPage): void; fetchOracleAdapterAssessment(chainId: number, address: Address): Promise; fetchOracleAdapterAssessments(chainId: number, filters?: OracleAdapterAssessmentFilters): Promise; fetchOracleAdapterAssessmentMap(chainId: number, filters?: OracleAdapterAssessmentFilters): Promise>; fetchOracleRouters(chainId: number): Promise; fetchOracleRouterMap(chainId: number): Promise>; enrichAdapters(chainId: number, adapters: OracleAdapterEntry[]): Promise; private parseAssessment; private readonly isFinding; private parseSummary; private isRuleOutcome; private isSeverity; private isChecksStatus; private parseRouter; private parseRouterConfig; private parseRouterVault; } export declare class UnavailableOracleAdapterService implements IOracleAdapterService { private readonly reason; constructor(reason: OracleAdapterUnavailableReason); private unavailable; fetchOracleAdapterAssessment(_chainId: number, _address: Address): Promise; fetchOracleAdapterAssessments(_chainId: number, _filters?: OracleAdapterAssessmentFilters): Promise; fetchOracleAdapterAssessmentMap(_chainId: number, _filters?: OracleAdapterAssessmentFilters): Promise>; fetchOracleRouters(_chainId: number): Promise; fetchOracleRouterMap(_chainId: number): Promise>; enrichAdapters(_chainId: number, _adapters: OracleAdapterEntry[]): Promise; } //# sourceMappingURL=oracleAdapterService.d.ts.map