import type { ErroredQuery } from '../../../zero-protocol/src/custom-queries.ts';
import type { TTL } from '../query/ttl.ts';
import type { Listener, TypedView } from '../query/typed-view.ts';
import type { Change } from './change.ts';
import type { Input, Output } from './operator.ts';
import type { Format, View } from './view.ts';
/**
 * Implements a materialized view of the output of an operator.
 *
 * It might seem more efficient to use an immutable b-tree for the
 * materialization, but it's not so clear. Inserts in the middle are
 * asymptotically slower in an array, but can often be done with zero
 * allocations, where changes to the b-tree will often require several allocs.
 *
 * Also the plain array view is more convenient for consumers since you can dump
 * it into console to see what it is, rather than having to iterate it.
 */
export declare class ArrayView<V extends View> implements Output, TypedView<V> {
    #private;
    onDestroy: (() => void) | undefined;
    constructor(input: Input, format: Format, queryComplete: true | ErroredQuery | Promise<true>, updateTTL: (ttl: TTL) => void);
    get data(): V;
    addListener(listener: Listener<V>): () => void;
    destroy(): void;
    push(change: Change): void;
    flush(): void;
    updateTTL(ttl: TTL): void;
}
//# sourceMappingURL=array-view.d.ts.map