import type { ListingIndex as PrismaListingIndex } from '@prisma/client'; export type Price = { withVat: number; withoutVat: number; currency: string; }; export type InputPhoneFormat = ({ label?: string; number: string; } | string)[]; export type ListingRecord = { url: string; timestamp?: string; datePublished?: string; title: string; price: Price; seller?: { name?: string; url?: string; contact?: { phones?: ({ label?: string; number: string; } | string)[]; emails?: string[]; }; }; properties?: Record; description?: string; }; export type InputListingRecord = { url: string; timestamp?: string; datePublished?: string; title: string; price: Price; seller?: { name?: string; url?: string; contact?: { phones?: InputPhoneFormat; emails?: string[]; }; }; properties?: Record; description?: string; }; export type IngestResult = { status: "inserted"; id: string; s3Key: string; } | { status: "duplicate"; id: string; lastSeenUpdated: boolean; } | { status: "updated"; id: string; s3Key: string; priceChanged: boolean; phoneChanged: boolean; }; export type ReadResult = { status: "ok"; id: string; s3Key: string; record: ListingRecord; } | { status: "pending"; id: string; } | { status: "not_found"; id: string; }; export type IndexRow = { id: string; url?: string; s3Key?: string | null; firstSeen?: string; lastSeen?: string; status?: "pending" | "stored"; host?: string; datePublished?: string; weekPartition?: string; priceWithVat?: number; priceCurrency?: string; hasPhone?: boolean; lastPriceChange?: string; revision?: number; }; export type ListOptions = { limit?: number; offset?: number; cursor?: string | null; fromISO?: string; toISO?: string; }; export type ListResponse = { items: T[]; nextCursor?: string | null; nextOffset?: number | null; totalCount?: number; }; export type PrismaToIndexRow = (prismaRow: PrismaListingIndex) => IndexRow; //# sourceMappingURL=types.d.ts.map