import type { CatalogId, ItemId } from "@x12i/catalox-contracts/ids.js"; import type { NativeCatalogItemRecord } from "@x12i/catalox-contracts/items.js"; import { FirestoreStore } from "./firestore-store.js"; import { storageDocIdForNativeRecord } from "../catalox/item-scope.js"; export type NativeCatalogStoredRecord = NativeCatalogItemRecord; export { storageDocIdForNativeRecord }; export declare class NativeItemStore { private readonly store; private layoutCache; constructor(store: FirestoreStore); private layoutPromise; /** Invalidate cached layout for a catalog (e.g. after migration). */ invalidateLayoutCache(catalogId?: CatalogId): void; private itemsCollectionRef; /** * Read a native row by Firestore document id (storage id). For global rows this equals logical `itemId`. */ get(catalogId: CatalogId, storageDocId: ItemId): Promise; /** All physical rows sharing the same logical catalog item id. */ findByLogicalItemId(catalogId: CatalogId, logicalItemId: ItemId): Promise; upsert(catalogId: CatalogId, record: NativeCatalogStoredRecord): Promise; /** Full document replace (no Firestore merge — drops keys omitted from the record). */ replace(catalogId: CatalogId, record: NativeCatalogStoredRecord): Promise; delete(catalogId: CatalogId, storageDocId: ItemId): Promise; batchUpsert(catalogId: CatalogId, records: NativeCatalogStoredRecord[]): Promise; batchReplace(catalogId: CatalogId, records: NativeCatalogStoredRecord[]): Promise; private executeListQuery; /** * Lists native rows. If the process cached a legacy vs flat layout choice and data moved * (for example after a console migration), the first unconstrained empty page triggers a * one-time re-resolve and a second query. */ list(catalogId: CatalogId, options?: { limit?: number; offset?: number; filterEq?: Record; filterArrayContains?: Record; sort?: Record; }): Promise; } //# sourceMappingURL=native-item-store.d.ts.map