import { TraverseState } from '@rimbu/common';
import { List } from '@rimbu/list';
type GenBlockBuilderEntry<E> = BlockBuilderBase<E> | CollisionBuilderBase<E>;
export declare abstract class BlockBuilderBase<E> {
    abstract source?: undefined | GenSource<E>;
    abstract _entries?: undefined | E[];
    abstract _entrySets?: undefined | GenBlockBuilderEntry<E>[];
    abstract get size(): number;
    get isEmpty(): boolean;
    forEach(f: (entry: E, index: number, halt: () => void) => void, options?: {
        state?: TraverseState;
    }): void;
}
export declare abstract class CollisionBuilderBase<E> {
    abstract source?: undefined | {
        size: number;
        entries: List.NonEmpty<E>;
        forEach(f: (entry: E, index: number, halt: () => void) => void, options?: {
            state?: TraverseState;
        }): void;
    };
    abstract _entries?: List.Builder<E> | undefined;
    get size(): number;
    get entries(): List.Builder<E>;
    forEach(f: (entry: E, index: number, halt: () => void) => void, options?: {
        state?: TraverseState;
    }): void;
}
export interface GenSource<E> {
    entries: readonly E[] | null;
    entrySets: readonly GenBlockBuilderEntry<E>[] | null;
    forEach(f: (entry: E, index: number, halt: () => void) => void, options?: {
        state?: TraverseState;
    }): void;
}
export {};
