UNPKG

@hashgraphonline/standards-sdk

Version:

The Hashgraph Online Standards SDK provides a complete implementation of the Hashgraph Consensus Standards (HCS), giving developers all the tools needed to build applications on Hedera.

75 lines (74 loc) 2.41 kB
import { z } from "zod"; const HCS20_CONSTANTS = { PROTOCOL: "hcs-20", PUBLIC_TOPIC_ID: "0.0.4350190", REGISTRY_TOPIC_ID: "0.0.4362300", MAX_NUMBER_LENGTH: 18, MAX_NAME_LENGTH: 100, MAX_METADATA_LENGTH: 100, HEDERA_ACCOUNT_REGEX: /^(0|(?:[1-9]\d*))\.(0|(?:[1-9]\d*))\.(0|(?:[1-9]\d*))$/ }; const HederaAccountIdSchema = z.string().regex( HCS20_CONSTANTS.HEDERA_ACCOUNT_REGEX, "Invalid Hedera account ID format" ); const NumberStringSchema = z.string().regex(/^\d+$/, "Must be a valid number").max( HCS20_CONSTANTS.MAX_NUMBER_LENGTH, `Max ${HCS20_CONSTANTS.MAX_NUMBER_LENGTH} digits` ); const TickSchema = z.string().min(1, "Tick cannot be empty").transform((val) => val.toLowerCase().trim()); const HCS20BaseMessageSchema = z.object({ p: z.literal("hcs-20"), m: z.string().optional() }); const HCS20DeployMessageSchema = HCS20BaseMessageSchema.extend({ op: z.literal("deploy"), name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH), tick: TickSchema, max: NumberStringSchema, lim: NumberStringSchema.optional(), metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional() }); const HCS20MintMessageSchema = HCS20BaseMessageSchema.extend({ op: z.literal("mint"), tick: TickSchema, amt: NumberStringSchema, to: HederaAccountIdSchema }); const HCS20BurnMessageSchema = HCS20BaseMessageSchema.extend({ op: z.literal("burn"), tick: TickSchema, amt: NumberStringSchema, from: HederaAccountIdSchema }); const HCS20TransferMessageSchema = HCS20BaseMessageSchema.extend({ op: z.literal("transfer"), tick: TickSchema, amt: NumberStringSchema, from: HederaAccountIdSchema, to: HederaAccountIdSchema }); const HCS20RegisterMessageSchema = HCS20BaseMessageSchema.extend({ op: z.literal("register"), name: z.string().min(1).max(HCS20_CONSTANTS.MAX_NAME_LENGTH), metadata: z.string().max(HCS20_CONSTANTS.MAX_METADATA_LENGTH).optional(), private: z.boolean(), t_id: HederaAccountIdSchema }); const HCS20MessageSchema = z.discriminatedUnion("op", [ HCS20DeployMessageSchema, HCS20MintMessageSchema, HCS20BurnMessageSchema, HCS20TransferMessageSchema, HCS20RegisterMessageSchema ]); export { HCS20BurnMessageSchema, HCS20DeployMessageSchema, HCS20MessageSchema, HCS20MintMessageSchema, HCS20RegisterMessageSchema, HCS20TransferMessageSchema, HCS20_CONSTANTS }; //# sourceMappingURL=standards-sdk.es16.js.map