import { AppShell } from "@pythnetwork/component-library/AppShell"; import { lookup as lookupPublisher } from "@pythnetwork/known-publishers"; import { NuqsAdapter } from "nuqs/adapters/next/app"; import type { ReactNode } from "react"; import { AMPLITUDE_API_KEY, ENABLE_ACCESSIBILITY_REPORTING, GOOGLE_ANALYTICS_ID, } from "../../config/server"; import { LivePriceDataProvider } from "../../hooks/use-live-price-data"; import { getPublishers } from "../../services/clickhouse"; import { Cluster } from "../../services/pyth"; import { getFeeds } from "../../services/pyth/get-feeds"; import { PriceFeedIcon } from "../PriceFeedIcon"; import { PublisherIcon } from "../PublisherIcon"; import { SearchButton as SearchButtonImpl } from "./search-button"; export const TABS = [ { segment: "", children: "Overview" }, { segment: "publishers", children: "Publishers" }, { segment: "price-feeds", children: "Price Feeds" }, ]; type Props = { children: ReactNode; }; export const Root = ({ children }: Props) => ( } > {children} ); const SearchButton = async () => { const [publishers, feeds] = await Promise.all([ Promise.all([ getPublishersForSearchDialog(Cluster.Pythnet), getPublishersForSearchDialog(Cluster.PythtestConformance), ]), getFeedsForSearchDialog(Cluster.Pythnet), ]); return ; }; const getPublishersForSearchDialog = async (cluster: Cluster) => { const publishers = await getPublishers(cluster); return publishers.map((publisher) => { const knownPublisher = lookupPublisher(publisher.key); return { publisherKey: publisher.key, averageScore: publisher.averageScore, cluster, ...(knownPublisher && { name: knownPublisher.name, icon: , }), }; }); }; const getFeedsForSearchDialog = async (cluster: Cluster) => { const feeds = await getFeeds(cluster); return feeds.map((feed) => ({ symbol: feed.symbol, displaySymbol: feed.product.display_symbol, assetClass: feed.product.asset_type, description: feed.product.description, icon: ( ), })); };