import type { AssetDataProvider } from "./data-provider"; import type { NewsArticle, NewsPage, NewsQuery } from "../news/types"; import type { CachePolicyMap } from "./persistence"; export interface NewsDataProvider { supports?(query: NewsQuery): boolean; getCachedNews?(query: NewsQuery): NewsArticle[]; fetchNews(query: NewsQuery): Promise; fetchNewsPage?(query: NewsQuery): Promise; fetchNewsStory?(storyId: string): Promise; } export interface CapabilityRouteSource { readonly id: string; readonly name: string; readonly priority?: number; readonly cachePolicy?: CachePolicyMap; isEnabled?(): boolean; readonly market?: AssetDataProvider; readonly news?: NewsDataProvider; } export function routeSourcePriority(source: Pick): number { return source.priority ?? 1000; }