import { z } from 'zod';

type Post = {
    id: string;
    authorId?: string;
    defaultLocale?: string;
    slug: string;
    title: string;
    content: string;
    excerpt: string;
    image?: string;
    published: boolean;
    status?: "DRAFT" | "PUBLISHED";
    tags: Tag[];
    publishedAt?: Date;
    createdAt: Date;
    updatedAt: Date;
};
type Tag = {
    id: string;
    slug: string;
    name: string;
    createdAt: Date;
    updatedAt: Date;
};
interface SerializedPost extends Omit<Post, "createdAt" | "updatedAt" | "publishedAt" | "tags"> {
    tags: SerializedTag[];
    publishedAt?: string;
    createdAt: string;
    updatedAt: string;
}
interface SerializedTag extends Omit<Tag, "createdAt" | "updatedAt"> {
    createdAt: string;
    updatedAt: string;
}

declare const createPostSchema: z.ZodObject<{
    tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        name: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        slug: z.ZodString;
    }, z.core.$strip>]>>>>;
    slug: z.ZodOptional<z.ZodString>;
    published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
    createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
    updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
    title: z.ZodString;
    content: z.ZodString;
    excerpt: z.ZodString;
    image: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
declare const updatePostSchema: z.ZodObject<{
    publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
    createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
    updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
    title: z.ZodString;
    content: z.ZodString;
    excerpt: z.ZodString;
    image: z.ZodOptional<z.ZodString>;
    published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    slug: z.ZodString;
    tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        name: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        slug: z.ZodString;
    }, z.core.$strip>]>>>>;
    id: z.ZodString;
}, z.core.$strip>;

export { createPostSchema as c, updatePostSchema as u };
export type { Post as P, SerializedPost as S, Tag as T, SerializedTag as a };
