import type { Schema } from '../schema/Schema.js'; import { NODE_TYPE } from './identity.js'; import { NodeBase } from './Node.js'; export declare function collectionFromPath(schema: Schema, path: unknown[], value: unknown): import("./Node.js").Node; export declare const isEmptyPath: (path: Iterable | null | undefined) => path is null | undefined; export declare abstract class Collection extends NodeBase { schema: Schema | undefined; [NODE_TYPE]: symbol; items: unknown[]; /** An optional anchor on this node. Used by alias nodes. */ anchor?: string; /** * If true, stringify this and all child nodes using flow rather than * block styles. */ flow?: boolean; constructor(type: symbol, schema?: Schema); /** * Create a copy of this collection. * * @param schema - If defined, overwrites the original's schema */ clone(schema?: Schema): Collection; /** Adds a value to the collection. */ abstract add(value: unknown): void; /** * Removes a value from the collection. * @returns `true` if the item was found and removed. */ abstract delete(key: unknown): boolean; /** * Returns item at `key`, or `undefined` if not found. By default unwraps * scalar values from their surrounding node; to disable set `keepScalar` to * `true` (collections are always returned intact). */ abstract get(key: unknown, keepScalar?: boolean): unknown; /** * Checks if the collection includes a value with the key `key`. */ abstract has(key: unknown): boolean; /** * Sets a value in this collection. For `!!set`, `value` needs to be a * boolean to add/remove the item from the set. */ abstract set(key: unknown, value: unknown): void; /** * Adds a value to the collection. For `!!map` and `!!omap` the value must * be a Pair instance or a `{ key, value }` object, which may not have a key * that already exists in the map. */ addIn(path: Iterable, value: unknown): void; /** * Removes a value from the collection. * @returns `true` if the item was found and removed. */ deleteIn(path: Iterable): boolean; /** * Returns item at `key`, or `undefined` if not found. By default unwraps * scalar values from their surrounding node; to disable set `keepScalar` to * `true` (collections are always returned intact). */ getIn(path: Iterable, keepScalar?: boolean): unknown; hasAllNullValues(allowScalar?: boolean): boolean; /** * Checks if the collection includes a value with the key `key`. */ hasIn(path: Iterable): boolean; /** * Sets a value in this collection. For `!!set`, `value` needs to be a * boolean to add/remove the item from the set. */ setIn(path: Iterable, value: unknown): void; }