@yoroi/portfolio
Version:
The Portfolio package of Yoroi SDK
42 lines • 1.98 kB
JavaScript
import { z } from 'zod';
import { responseRecordWithCacheSchemaMaker } from './response-record-with-cache-schema-maker';
import { TokenSourceSchema } from './token-source';
import { TokenIdSchema } from './token-id';
import { cacheRecordSchemaMaker } from '@yoroi/common';
const DiscoverySourceSchema = z.object({
name: TokenSourceSchema,
decimals: TokenSourceSchema,
ticker: TokenSourceSchema,
symbol: TokenSourceSchema,
originalImage: TokenSourceSchema,
description: TokenSourceSchema,
website: TokenSourceSchema
});
const DiscoveryOriginalMetadataSchema = z.object({
filteredMintMetadatum: z.record(z.unknown()).nullable(),
referenceDatum: z.record(z.unknown()).nullable(),
tokenRegistry: z.record(z.unknown()).nullable()
});
export const TokenDiscoverySchema = z.object({
id: TokenIdSchema,
source: DiscoverySourceSchema,
originalMetadata: DiscoveryOriginalMetadataSchema,
supply: z.string()
});
export const isTokenDiscovery = data => TokenDiscoverySchema.safeParse(data).success;
export const parseTokenDiscovery = data => {
return isTokenDiscovery(data) ? data : undefined;
};
export const TokenDiscoveryResponseWithCacheRecordSchema = responseRecordWithCacheSchemaMaker(TokenDiscoverySchema);
export const isTokenDiscoveryResponseWithCacheRecord = data => TokenDiscoveryResponseWithCacheRecordSchema.safeParse(data).success;
export const parseTokenDiscoveryResponseWithCacheRecord = data => {
return isTokenDiscoveryResponseWithCacheRecord(data) ? data : undefined;
};
export const TokenDiscoveryWithCacheRecordSchema =
// zod doesn't work with string templates yet, check TokenIdSchema for more info
cacheRecordSchemaMaker(TokenDiscoverySchema);
export const isTokenDiscoveryWithCacheRecord = data => TokenDiscoveryWithCacheRecordSchema.safeParse(data).success;
export const parseTokenDiscoveryWithCacheRecord = data => {
return isTokenDiscoveryWithCacheRecord(data) ? data : undefined;
};
//# sourceMappingURL=token-discovery.js.map