import { Reference, Nullable, ReferenceSymbol } from '@glimmer/interfaces'; export { Reference } from '@glimmer/interfaces'; declare const REFERENCE: ReferenceSymbol; interface ReferenceEnvironment { getProp(obj: unknown, path: string): unknown; setProp(obj: unknown, path: string, value: unknown): unknown; } declare function createPrimitiveRef(value: T): Reference; declare const UNDEFINED_REFERENCE: Reference; declare const NULL_REFERENCE: Reference; declare const TRUE_REFERENCE: Reference; declare const FALSE_REFERENCE: Reference; declare function createConstRef(value: T, debugLabel: false | string): Reference; declare function createUnboundRef(value: T, debugLabel: false | string): Reference; declare function createComputeRef(compute: () => T, update?: Nullable<(value: T) => void>, debugLabel?: false | string): Reference; declare function createReadOnlyRef(ref: Reference): Reference; declare function isInvokableRef(ref: Reference): boolean; declare function createInvokableRef(inner: Reference): Reference; declare function isConstRef(_ref: Reference): boolean; declare function isUpdatableRef(_ref: Reference): boolean; declare function valueForRef(_ref: Reference): T; declare function updateRef(_ref: Reference, value: unknown): void; declare function childRefFor(_parentRef: Reference, path: string): Reference; declare function childRefFromParts(root: Reference, parts: string[]): Reference; declare let createDebugAliasRef: undefined | ((debugLabel: string, inner: Reference) => Reference); interface IterationItem { key: unknown; value: T; memo: U; } interface AbstractIterator> { isEmpty(): boolean; next(): Nullable; } type OpaqueIterationItem = IterationItem; type OpaqueIterator = AbstractIterator; interface IteratorDelegate { isEmpty(): boolean; next(): { value: unknown; memo: unknown; } | null; } type KeyFor = (item: unknown, index: unknown) => unknown; declare function createIteratorRef(listRef: Reference, key: string): Reference; declare function createIteratorItemRef(_value: unknown): Reference; declare class IteratorWrapper implements OpaqueIterator { private inner; private keyFor; constructor(inner: IteratorDelegate, keyFor: KeyFor); isEmpty(): boolean; next(): OpaqueIterationItem | null; } declare class ArrayIterator implements OpaqueIterator { private iterator; private keyFor; private current; private pos; constructor(iterator: unknown[] | readonly unknown[], keyFor: KeyFor); isEmpty(): boolean; next(): Nullable>; } export { type AbstractIterator, FALSE_REFERENCE, type IterationItem, type IteratorDelegate, NULL_REFERENCE, type OpaqueIterationItem, type OpaqueIterator, REFERENCE, type ReferenceEnvironment, TRUE_REFERENCE, UNDEFINED_REFERENCE, childRefFor, childRefFromParts, createComputeRef, createConstRef, createDebugAliasRef, createInvokableRef, createIteratorItemRef, createIteratorRef, createPrimitiveRef, createReadOnlyRef, createUnboundRef, isConstRef, isInvokableRef, isUpdatableRef, updateRef, valueForRef };