import { MaybePromise } from '@mithic/commons'; import { MaybeAsyncMap } from './map.js'; import { MaybeAsyncReadonlySet } from './set.js'; /** An arena automatically assigns unique key to stored value. */ export interface Arena extends MaybeAsyncMap { /** Adds a value to the arena and returns its key. */ add(value: V): MaybePromise; /** Updates a value on the arena. Does nothing if the key does not exist. */ set(key: K, value: V): MaybePromise; } /** A {@link Arena} with synchronous operations. */ export interface SyncArena extends Arena { add(value: V): K; set(key: K, value: V): void; get(key: K): V | undefined; has(key: K): boolean; } /** Generator of values. */ export interface ValueGenerator extends MaybeAsyncReadonlySet { /** Creates a new value. */ create(): MaybePromise; /** Deletes a value. */ delete(value: T): MaybePromise; } /** A {@link ValueGenerator} with synchronous operations. */ export interface SyncGenerator extends ValueGenerator { create(): T; delete(value: T): void; } //# sourceMappingURL=generational.d.ts.map