export declare class Affix {
size: number;
len: number;
a: A;
b: A;
c: A;
d: A;
constructor(size: number, len: number, a: A, b?: A, c?: A, d?: A);
toArray(): A[];
get(idx: number): A;
}
export declare class NNode {
size: number;
three: boolean;
a: A;
b: A;
c: A;
constructor(size: number, three: boolean, a: A, b: A, c?: A);
get(idx: number): A;
}
export declare class FingerTree {
depth: number;
size: number;
prefix: Affix;
deeper: FingerTree>;
suffix: Affix;
constructor(depth: number, size: number, prefix: Affix, deeper: FingerTree>, suffix: Affix);
}
export declare const nil: FingerTree;
export declare function prepend(a: A, t: FingerTree): FingerTree;
export declare function nrPrepend(depth: number, size: number, a: A, t: FingerTree): FingerTree;
export declare function append(a: A, t: FingerTree): FingerTree;
export declare function size(t: FingerTree): number;
export declare function concat(t1: FingerTree, t2: FingerTree): FingerTree;
export declare function get(idx: number, tree: FingerTree): A;
export declare function foldl(f: (b: B, a: A) => B, initial: B, list: FingerTree): B;
export declare function toArray(t: FingerTree): A[];