UNPKG

@macalinao/zod-solana

Version:

Zod schemas for Solana types with @solana/kit integration

60 lines (59 loc) 1.52 kB
import * as z from "zod"; //#region src/token-metadata-schema.ts /** * Schema for token metadata attributes */ const tokenAttributeSchema = z.object({ trait_type: z.string(), value: z.union([z.string(), z.number()]), display_type: z.string().optional() }); /** * Schema for token metadata files */ const tokenFileSchema = z.object({ uri: z.string(), type: z.string(), cdn: z.boolean().optional() }); /** * Schema for token metadata creators */ const tokenCreatorSchema = z.object({ address: z.string(), share: z.number().min(0).max(100) }); /** * Schema for token metadata properties */ const tokenPropertiesSchema = z.object({ files: z.array(tokenFileSchema).optional(), category: z.string().optional(), creators: z.array(tokenCreatorSchema).optional() }); /** * Schema for token metadata collection */ const tokenCollectionSchema = z.object({ name: z.string(), family: z.string().optional() }); /** * Schema for Solana token metadata JSON * Based on Metaplex Token Metadata Standard */ const tokenMetadataSchema = z.object({ name: z.string(), symbol: z.string(), description: z.string().optional(), image: z.string().optional(), animation_url: z.string().optional(), external_url: z.string().optional(), attributes: z.array(tokenAttributeSchema).optional(), properties: tokenPropertiesSchema.optional(), seller_fee_basis_points: z.number().optional(), collection: tokenCollectionSchema.optional() }); //#endregion export { tokenMetadataSchema }; //# sourceMappingURL=token-metadata-schema.js.map