import { GenericTypedEntity, ICatalog, Key, PID, SKU, SpecificTypedEntity } from './interfaces'; export declare class Catalog implements ICatalog { private mapGeneric; private mapSpecific; private nameToKey; private pidToKeys; private skuToKey; static fromEntities(genericItems: IterableIterator, specificItems: IterableIterator): Catalog; static fromCatalog(other: Catalog): Catalog; /** * @designIntent construct via factories. */ private constructor(); /** * Merge another Catalog into this Catalog. */ merge(other: Catalog): void; private mergeItems; /** * @designNote can't just assign `this.map.has` to `has` because `this` * won't be bound correctly. */ hasPID(pid: PID): boolean; hasSKU(sku: SKU): boolean; getGeneric(pid: PID): GenericTypedEntity; getGenericForKey(key: Key): GenericTypedEntity; getGenericMap(): Map; genericEntities(): IterableIterator; hasKey(key: Key): boolean; getKeyForSku(sku: SKU): Key; getSpecific(key: Key): SpecificTypedEntity; getSpecificFromName(name: string): SpecificTypedEntity; getSpecificFromSKU(sku: string): SpecificTypedEntity; getSpecificsForGeneric(pid: PID): IterableIterator; specificEntities(): IterableIterator; }