import { z } from "zod"; export declare const productAttributeSchema: z.ZodObject<{ name: z.ZodString; value: z.ZodString; }, z.core.$strip>; export type ProductAttribute = z.infer; export declare const productGroupInputSchema: z.ZodObject<{ id: z.ZodOptional>; slug: z.ZodString; name: z.ZodString; desc: z.ZodDefault; }, z.core.$strip>; export type ProductGroupInput = z.infer; export declare const categoryInputSchema: z.ZodObject<{ slug: z.ZodString; code: z.ZodString; name: z.ZodString; nameEn: z.ZodDefault; shortDesc: z.ZodDefault; fullDesc: z.ZodDefault; icon: z.ZodDefault; coverImageId: z.ZodDefault>>; isPublished: z.ZodDefault; seoTitle: z.ZodDefault; seoDescription: z.ZodDefault; groups: z.ZodDefault>; slug: z.ZodString; name: z.ZodString; desc: z.ZodDefault; }, z.core.$strip>>>; }, z.core.$strip>; export type CategoryInput = z.infer; export declare const productInputSchema: z.ZodObject<{ categoryId: z.ZodCoercedNumber; groupId: z.ZodDefault>>; code: z.ZodString; slug: z.ZodString; name: z.ZodString; nameEn: z.ZodDefault; desc: z.ZodDefault; specs: z.ZodDefault>; variants: z.ZodDefault>; details: z.ZodDefault; brand: z.ZodDefault; origin: z.ZodDefault; sizes: z.ZodDefault>; standards: z.ZodDefault>; features: z.ZodDefault>; applications: z.ZodDefault>; attributes: z.ZodDefault>>; packaging: z.ZodDefault; minOrder: z.ZodDefault; seoTitle: z.ZodDefault; seoDescription: z.ZodDefault; imageId: z.ZodDefault>>; galleryIds: z.ZodDefault>>; isPublished: z.ZodDefault; }, z.core.$strip>; export type ProductInput = z.infer; export declare const reorderSchema: z.ZodObject<{ ids: z.ZodArray>; }, z.core.$strip>; export type ReorderInput = z.infer; export declare const productListQuerySchema: z.ZodObject<{ categoryId: z.ZodOptional>; groupId: z.ZodOptional>; q: z.ZodOptional; status: z.ZodOptional>; page: z.ZodDefault>; pageSize: z.ZodDefault>; }, z.core.$strip>; export type ProductListQuery = z.infer; export interface PublicProductGroup { slug: string; name: string; desc: string; } export interface PublicProduct { code: string; slug: string; name: string; nameEn: string; desc: string; specs: string[]; variants: string[]; /** image URL, or null when the product has no own photo */ image: string | null; /** slug of a `PublicCategory.groups` entry */ group: string | null; } export interface PublicCategorySummary { slug: string; code: string; name: string; nameEn: string; shortDesc: string; icon: string; coverImage: string | null; productCount: number; } export interface PublicProductImage { url: string; alt: string; width: number | null; height: number | null; } /** Everything the product page needs (`GET /api/public/products/:slug`) */ export interface PublicProductDetail extends PublicProduct { details: string; brand: string; origin: string; sizes: string[]; standards: string[]; features: string[]; applications: string[]; attributes: ProductAttribute[]; packaging: string; minOrder: string; seoTitle: string; seoDescription: string; /** main image first, then the gallery */ images: PublicProductImage[]; groupName: string | null; category: { slug: string; code: string; name: string; nameEn: string; fullDesc: string; coverImage: string | null; }; related: PublicProduct[]; updatedAt: string; } /** Published product URLs for the sitemap */ export interface PublicProductRef { slug: string; updatedAt: string; } export interface PublicCategory extends PublicCategorySummary { fullDesc: string; seoTitle: string; seoDescription: string; groups: PublicProductGroup[]; products: PublicProduct[]; } //# sourceMappingURL=catalog.d.ts.map