import type { IdfObject } from './object.js'; /** * Name-indexed collection of objects of one type. * * Iterable, so `for (const zone of doc.all('Zone'))` works, and array-like * enough that `[...collection]`, `.map`, `.filter` read naturally. Lookup by * name is O(1) and case-insensitive, matching EnergyPlus semantics. * * Insertion order is preserved. IDF files are hand-edited and diffed, so * reordering objects on a round-trip would produce noisy diffs for no reason. */ export declare class IdfCollection implements Iterable { #private; readonly typeName: string; constructor(typeName: string, objects?: Iterable); get size(): number; [Symbol.iterator](): Iterator; /** Look up by name, case-insensitively. */ get(name: string): T | undefined; /** Look up by name, throwing if absent. */ require(name: string): T; has(name: string): boolean; /** The only object of this type, for singletons like `Building`. */ get only(): T | undefined; /** The first object, in insertion order. */ get first(): T | undefined; names(): string[]; toArray(): T[]; filter(predicate: (obj: T, index: number) => boolean): T[]; map(fn: (obj: T, index: number) => R): R[]; find(predicate: (obj: T, index: number) => boolean): T | undefined; /** Objects whose `field` equals `value`, compared case-insensitively. */ where(field: string, value: string): T[]; } //# sourceMappingURL=collection.d.ts.map