Files
nexcurrency/lib/market.ts

30 lines
674 B
TypeScript

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);
}