export declare class Tuple<T> {
    prev: Maybe<T>;
    next: Maybe<T>;
    constructor(prev: Maybe<T>, next: Maybe<T>);
    spread(): [Maybe<T>, Maybe<T>];
    select<S>(selector: (x: T) => S): Tuple<S>;
    selectMany<S extends {
        key?: any;
    }>(selector: (x: T) => S[]): ArrayTuple<S>;
    any(): Maybe<T>;
    get(_key: any): void;
    map(_mapper: any): void;
}
export declare class ArrayTuple<T extends {
    key?: any;
}> extends Tuple<T[]> {
    _dict?: Map<any, Tuple<T>>;
    _getChildrenMap(): Map<any, Tuple<T>>;
    get(key: any): Tuple<T> | undefined;
    map<M>(mapper: (t: Tuple<T>, key?: any, self?: ArrayTuple<T>) => M): M[];
}
