import { z } from "zod";

export const schema = z.object({
    _id: z.string(),
    uuid: z.string().nullable().optional(),
    expiryStarts: z.string().nullable().optional(),
    expiryEnds: z.string().nullable().optional(),
    isConfirmed: z.boolean().nullable().optional(),
    deleted: z.boolean().nullable().optional(),
    active: z.boolean().nullable().optional(),
    crypUuId: z.string().nullable().optional(),
    createdCredentialsToken: z.string().nullable().optional(),
    updatedCredentialsToken: z.string().nullable().optional(),
    confirmedCredentialsToken: z.string().nullable().optional(),
    isNotificationSend: z.boolean().nullable().optional(),
    isEmailSend: z.boolean().nullable().optional(),
    refInt: z.number().nullable().optional(),
    refId: z.string().nullable().optional(),
    replicationId: z.number().nullable().optional(),
    expiresAt: z.string().nullable().optional(),
    resetToken: z.string().nullable().optional(),
    password: z.string().nullable().optional(),
    history: z.array(z.string()).optional(),
    tag: z.string().nullable().optional(),
    email: z.string().nullable().optional(),
    phone: z.string().nullable().optional(),

    collectionTokens: z
        .object({
            default: z.string().nullable().optional(),
            tokens: z
                .array(
                    z.object({
                        prefix: z.string(),
                        token: z.string(),
                    })
                )
                .optional(),
        })
        .nullable()
        .optional(),

    createdAt: z.string().nullable().optional(),
    updatedAt: z.string().nullable().optional(),
});

export type schemaType = z.infer<typeof schema>;
