feat(market): add CoinGecko market data panel with cached /api/market endpoint
This commit is contained in:
29
lib/market.ts
Normal file
29
lib/market.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { z } from "zod";
|
||||
|
||||
export interface CryptoMarketResponse {
|
||||
code: string;
|
||||
name: string;
|
||||
priceUsd: number;
|
||||
change24hPct: number | null;
|
||||
marketCapUsd: number | null;
|
||||
volume24hUsd: number | null;
|
||||
updatedAt: string;
|
||||
source: string;
|
||||
}
|
||||
|
||||
const marketResponseSchema = z.object({
|
||||
code: z.string(),
|
||||
name: z.string(),
|
||||
priceUsd: z.number().positive(),
|
||||
change24hPct: z.number().nullable(),
|
||||
marketCapUsd: z.number().nullable(),
|
||||
volume24hUsd: z.number().nullable(),
|
||||
updatedAt: z.string(),
|
||||
source: z.string(),
|
||||
});
|
||||
|
||||
export function parseCryptoMarketResponse(
|
||||
payload: unknown,
|
||||
): CryptoMarketResponse {
|
||||
return marketResponseSchema.parse(payload);
|
||||
}
|
||||
Reference in New Issue
Block a user