UNPKG

@guildxyz/types

Version:

Types related to the Guild.xyz API

66 lines (60 loc) 1.93 kB
import { z } from "zod"; import { nonEmptyRefine } from "../utils"; import { DateLike, LogicSchema, PositiveInteger, VisibilitySchema, } from "./common"; import { RequirementCreationPayloadSchema } from "./requirement"; import { RoleRewardCreationForGuildCreationPayloadSchema, RoleRewardCreationPayloadSchema, } from "./roleReward"; const RoleBaseSchema = z.object({ name: z.string().max(50), description: z.string().max(1000).nullish(), imageUrl: z.string().max(500).nullish(), logic: LogicSchema.optional(), visibility: VisibilitySchema.optional(), anyOfNum: z.number().int().positive().nullish(), hideFromEyes: z.boolean().optional(), }); export const RoleSchema = RoleBaseSchema.extend({ id: PositiveInteger, memberCount: z.number().int().nonnegative(), position: z.number().int().nonnegative().nullish(), createdAt: DateLike, updatedAt: DateLike, lastSyncedAt: DateLike.nullish(), groupId: PositiveInteger.nullish(), visibilityRoleId: PositiveInteger.nullish(), }); export const RoleCreationPayloadSchema = z.intersection( RoleBaseSchema, z.object({ requirements: z.array(RequirementCreationPayloadSchema).min(1), rolePlatforms: z.array(RoleRewardCreationPayloadSchema).optional(), groupId: PositiveInteger.optional(), visibilityRoleId: PositiveInteger.optional(), }) ); export const RoleCreationForGuildCreationPayloadSchema = z.intersection( RoleBaseSchema, z.object({ requirements: z.array(RequirementCreationPayloadSchema).min(1), rolePlatforms: z .array(RoleRewardCreationForGuildCreationPayloadSchema) .optional(), }) ); export const RoleUpdatePayloadSchema = z .intersection( RoleBaseSchema.partial(), z.object({ position: z.number().int().nonnegative().optional(), groupId: PositiveInteger.optional(), visibilityRoleId: PositiveInteger.optional(), }) ) .refine(...nonEmptyRefine());