import { type AtomType } from "./atom"; import { type RenderKeyArg } from "../../Directives/arrayRender"; import type { ItemTemplate } from "lit-html/directives/repeat.js"; export type ArrayAtomType = AtomType & { push(...items: T[]): ArrayAtomType; pop(): T | undefined; shift(): T | undefined; unshift(...items: T[]): ArrayAtomType; setItem(indexOrKey: number | string, value: T): ArrayAtomType; updateItem(indexOrKey: number | string, fn: (item: T) => void): ArrayAtomType; deleteItem(indexOrKey: number | string): ArrayAtomType; deleteItems(pred: (item: T, index: number) => boolean): ArrayAtomType; addItem(item: T): ArrayAtomType; removeDuplicates(keyFn: (item: T) => unknown): ArrayAtomType; merge(other: T[]): ArrayAtomType; clear(): ArrayAtomType; upsert(item: T, keyFn?: (item: T) => unknown): ArrayAtomType; sortAndSet(compareFn?: (a: T, b: T) => number): ArrayAtomType; move(fromIndex: number, toIndex: number): ArrayAtomType; swap(i: number, j: number): ArrayAtomType; keys(): number[]; values(): T[]; sort(compareFn?: (a: T, b: T) => number): T[]; has(indexOrKeyOrPred: number | string | ((item: T, index: number) => boolean)): boolean; find(pred: (item: T, index: number) => boolean): T | undefined; findKey(pred: (item: T, index: number) => boolean): number; some(pred: (item: T, index: number) => boolean): boolean; every(pred: (item: T, index: number) => boolean): boolean; count(pred?: (item: T, index: number) => boolean): number; at(index: number): T | undefined; readonly first: T | undefined; readonly last: T | undefined; readonly size: number; readonly isEmpty: boolean; /** * Render items via lit-html `repeat`/`map` (same rules as `Array.prototype.render`). * Reads the atom so the view re-renders when the list changes. */ render(template: ItemTemplate, key?: RenderKeyArg): unknown; }; /** * Reactive array atom with collection helpers. * Writes go through `set` / `update`; reads do not notify. * * @example * atom.array([]) * atom.array([1, 2]) * atom.array(10, (i) => i) // length + fill (fill is always the 2nd arg) */ export declare function createArrayAtom(initial?: T[]): ArrayAtomType; export declare function createArrayAtom(length: number, fill: (index: number) => T): ArrayAtomType; //# sourceMappingURL=createArrayAtom.d.ts.map