UNPKG

@guildxyz/types

Version:

Types related to the Guild.xyz API

69 lines (61 loc) 1.93 kB
import { z } from "zod"; import { AnyAddressSchema, DateLike, PositiveInteger } from "./common"; import { PlatformName, walletTypes } from "../consts"; import { ProfileSchema } from "./profile"; export const UserAddressSchema = z.object({ address: AnyAddressSchema, userId: PositiveInteger, identityId: PositiveInteger, isPrimary: z.boolean(), isDelegated: z.boolean(), createdAt: DateLike, walletType: z.enum(walletTypes), }); export const PlatformUserDataSchema = z.object({ acessToken: z.string(), scope: z.string(), expiresIn: z.number(), invalidToken: z.boolean(), refreshToken: z.string(), avatar: z.string(), username: z.string(), readonly: z.boolean(), }); export const PlatformAccountDetailsSchema = z.object({ platformId: PositiveInteger, platformName: z.enum(PlatformName), platformUserId: z.string(), platformUserData: PlatformUserDataSchema.partial().optional(), username: z.string().optional(), }); export const UserSharedSocialSchema = z.object({ userId: PositiveInteger, guildId: PositiveInteger, isShared: z.boolean().optional().nullable(), }); export const FarcasterProfileSchema = z.object({ fid: PositiveInteger, username: z.string().optional(), avatar: z.string().optional(), createdAt: DateLike, userId: PositiveInteger, }); export const PublicUserSchema = z.object({ id: PositiveInteger, publicKey: z.string().optional(), captchaVerifiedSince: DateLike, }); export const UserSchema = PublicUserSchema.extend({ addresses: UserAddressSchema.array(), platformUsers: PlatformAccountDetailsSchema.array(), sharedSocials: UserSharedSocialSchema.array(), isSuperAdmin: z.boolean(), guildProfile: ProfileSchema.nullable(), emails: z.object({ emailAddress: z.string().email(), pending: z.boolean(), createdAt: DateLike, }), farcasterProfiles: FarcasterProfileSchema.array(), tosAccepted: DateLike.optional(), });