declare module '@glimmer/reference/lib/iterable' { import type { Nullable } from "@glimmer/interfaces"; import type { Reference, ReferenceEnvironment } from "@glimmer/reference/lib/reference"; export interface IterationItem { key: unknown; value: T; memo: U; } export interface AbstractIterator> { isEmpty(): boolean; next(): Nullable; } export type OpaqueIterationItem = IterationItem; export type OpaqueIterator = AbstractIterator; export interface IteratorDelegate { isEmpty(): boolean; next(): { value: unknown; memo: unknown; } | null; } export interface IteratorReferenceEnvironment extends ReferenceEnvironment { getPath(obj: unknown, path: string): unknown; toIterator(obj: unknown): Nullable; } type KeyFor = (item: unknown, index: unknown) => unknown; export function createIteratorRef(listRef: Reference, key: string): Reference; export function createIteratorItemRef(_value: unknown): Reference; class IteratorWrapper implements OpaqueIterator { private inner; private keyFor; constructor(inner: IteratorDelegate, keyFor: KeyFor); isEmpty(): boolean; next(): OpaqueIterationItem | null; } class ArrayIterator implements OpaqueIterator { private iterator; private keyFor; private current; private pos; constructor(iterator: unknown[] | readonly unknown[], keyFor: KeyFor); isEmpty(): boolean; next(): Nullable>; } export {}; }