import { ReplicatedData } from '.'; import { Serializable } from '../serializable'; /** @public */ export declare namespace ReplicatedSet { /** * Callback for handling elements iterated through by {@link ReplicatedSet.forEach}. * * @typeParam Element - Type of elements in the Replicated Set * @param element - The element */ type ForEachCallback = (element: Element) => void; } /** * A Replicated Set data type. * * A ReplicatedSet is a set of {@link Serializable} values. Elements can be added and removed. * * @typeParam Element - Type of elements in the Replicated Set * * @public */ export declare class ReplicatedSet implements ReplicatedData, Iterable { private currentValue; private delta; /** * Does this set contain the given element? * * @param element - The element to check * @returns True if the set contains the element */ has: (element: Element) => boolean; /** * The number of elements in this set. */ get size(): number; /** * Execute the given callback for each element. * * @param callback - The callback to handle each element */ forEach: (callback: ReplicatedSet.ForEachCallback) => void; /** * Create an iterator for this set. * * @returns iterator of elements */ [Symbol.iterator]: () => Iterator; /** * Get a copy of the current elements as a Set. * * @returns Set of elements */ elements: () => Set; /** * Add an element to this set. * * @param element - The element to add * @returns This set */ add: (element: Element) => ReplicatedSet; /** * Add multiple elements to this set. * * @param elements - The elements to add * @returns This set */ addAll: (elements: Iterable) => ReplicatedSet; /** * Remove an element from this set. * * @param element - The element to delete * @returns This set */ delete: (element: Element) => ReplicatedSet; /** * Remove all elements from this set. * * @returns This set */ clear: () => ReplicatedSet; toString: () => string; }