import type { CatalogPage, CatalogProduct, CatalogSourceProvider, CatalogTaxon, ProductVariant } from "../core/catalog"; import type { CommerceDb } from "./queries"; export type CatalogSyncTrigger = "manual" | "scheduled" | "repair"; export type CatalogSyncSourceInput = { id: string; name: string; ownerKey?: string; provider: string; settings?: Record; }; export type CatalogSyncReport = { completedAt: string; generation: string; productsSynced: number; runId: string; sourceId: string; status: "passed"; taxaSynced: number; variantsSynced: number; }; export declare class CatalogSyncError extends Error { readonly code: string; readonly sourceId: string; constructor(code: string, sourceId: string); } export declare class CatalogSyncInProgressError extends CatalogSyncError { constructor(sourceId: string); } export declare const catalogSyncIdentity: (sourceId: string, kind: "product" | "taxon" | "variant", id: string) => string; export declare const synchronizeCatalogSource: (input: { db: CommerceDb; maxPages?: number; now?: () => Date; pageSize?: number; provider: CatalogSourceProvider; source: CatalogSyncSourceInput; trigger?: CatalogSyncTrigger; }) => Promise; export declare const listSynchronizedCatalogProducts: (db: CommerceDb, input: { category?: string; cursor?: string; limit?: number; search?: string; sourceId: string; }) => Promise>; export declare const listCatalogTaxonomy: (db: CommerceDb, sourceId: string) => Promise; export declare const listCatalogSyncSources: (db: CommerceDb, ownerKey?: string) => Promise<{ cursor: string | null; id: string; last_error: string | null; last_synced_at: Date | null; name: string; owner_key: string | null; products_synced: number; provider: string; settings: Record | null; status: string; sync_generation: string | null; sync_lease_expires_at: Date | null; sync_started_at: Date | null; variants_synced: number; updated_at: Date; }[]>; export declare const listCatalogSyncRuns: (db: CommerceDb, input?: { limit?: number; sourceId?: string; }) => Promise<{ completed_at: Date | null; cursor: string | null; error_code: string | null; generation: string; id: string; products_synced: number; source_id: string; started_at: Date; status: string; trigger: string; variants_synced: number; }[]>;