/** * @license * Copyright 2022-2024 Matter.js Authors * SPDX-License-Identifier: Apache-2.0 */ import { Observable } from "./Observable.js"; /** * A read-only set. */ export interface ImmutableSet { [Symbol.iterator]: () => Iterator; has(item: T): boolean; get size(): number; } /** * A write-only set. */ export interface MutableSet { add(definition: AddT): void; delete(definition: T): boolean; clear(): void; } /** * Set change events. */ export interface ObservableSet { get added(): Observable<[T]>; get deleted(): Observable<[T]>; } /** * An interface for index set lookup. */ export interface IndexedSet { get(field: F, value: T[F]): T | undefined; } /** * A generic set implementation supporting all interfaces in this module. * * Unused features have minimal performance impact. */ export declare class BasicSet implements ImmutableSet, MutableSet, ObservableSet, IndexedSet { #private; [Symbol.iterator](): IterableIterator; get size(): number; has(item: T): boolean; add(item: AddT): void; get(field: F, value: T[F]): T | undefined; delete(item: T): boolean; clear(): void; get added(): Observable<[T], void>; get deleted(): Observable<[T], void>; protected create(definition: AddT): T; } //# sourceMappingURL=Set.d.ts.map