30 lines
674 B
TypeScript
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);
|
|
}
|