@guildxyz/types
Version:
Types related to the Guild.xyz API
72 lines (64 loc) • 1.56 kB
text/typescript
import { z } from "zod";
const TwitterBasicSchema = z.object({
type: z.enum([
"TWITTER_FOLLOW",
"TWITTER_FOLLOWED_BY",
"TWITTER_NAME",
"TWITTER_BIO",
"TWITTER_LIKE",
"TWITTER_RETWEET",
"TWITTER_LIST_MEMBER",
"TWITTER_LIST_FOLLOW",
]),
data: z.object({
id: z.string().trim().min(1),
}),
});
const TwitterCountSchema = z.object({
type: z.enum([
"TWITTER_FOLLOWER_COUNT",
"TWITTER_FOLLOWING_COUNT",
"TWITTER_TWEET_COUNT",
"TWITTER_LIKE_COUNT",
]),
data: z.object({
minAmount: z.number().int().positive(),
}),
});
const TwitterAccountAgeSchema = z.object({
type: z.enum(["TWITTER_ACCOUNT_AGE_RELATIVE", "TWITTER_ACCOUNT_AGE"]),
data: z.object({
minAmount: z.number().int().positive(),
fromNow: z.boolean().optional(),
}),
});
const TwitterAccountVerifiedSchema = z.object({
type: z.literal("TWITTER_ACCOUNT_VERIFIED"),
data: z.object({
id: z.enum(["any", "blue", "business", "government"]),
}),
});
const TwitterAccountProtectedSchema = z.object({
type: z.literal("TWITTER_ACCOUNT_PROTECTED"),
data: z.object({}).default({}),
});
const TwitterV2Schema = z.object({
type: z.enum([
"TWITTER_FOLLOW_V2",
"TWITTER_LIKE_V2",
"TWITTER_RETWEET_V2",
"LINK_VISIT",
]),
data: z.object({
id: z.string().trim().min(1),
maxAmount: z.number().optional(),
}),
});
export default [
TwitterBasicSchema,
TwitterCountSchema,
TwitterAccountAgeSchema,
TwitterAccountVerifiedSchema,
TwitterAccountProtectedSchema,
TwitterV2Schema,
];