import WeakishMap from './WeakishMap';
import { Tuple0, Tuple1, Tuple2, Tuple3, Tuple4, Tuple5, Tuple6, Tuple7, Tuple8, CompositeSymbol0, CompositeSymbol1, CompositeSymbol2, CompositeSymbol3, CompositeSymbol4, CompositeSymbol5, CompositeSymbol6, CompositeSymbol7, CompositeSymbol8 } from './types';
declare const Tuple_base: any;
export default class Tuple extends Tuple_base implements ArrayLike, Iterable {
[i: number]: A;
length: number;
/**
* @throws {TypeError} Will throw if called non-locally; use the tuple() method instead.
*/
constructor(iterable: Iterable, confirm: typeof localToken);
/**
* Constructs a tuple.
*/
static tuple(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H): Tuple8;
static tuple(a: A, b: B, c: C, d: D, e: E, f: F, g: G): Tuple7;
static tuple(a: A, b: B, c: C, d: D, e: E, f: F): Tuple6;
static tuple(a: A, b: B, c: C, d: D, e: E): Tuple5;
static tuple(a: A, b: B, c: C, d: D): Tuple4;
static tuple(a: A, b: B, c: C): Tuple3;
static tuple(a: A, b: B): Tuple2;
static tuple(a: A): Tuple1;
static tuple(): Tuple0;
static symbol(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H): CompositeSymbol8;
static symbol(a: A, b: B, c: C, d: D, e: E, f: F, g: G): CompositeSymbol7;
static symbol(a: A, b: B, c: C, d: D, e: E, f: F): CompositeSymbol6;
static symbol(a: A, b: B, c: C, d: D, e: E): CompositeSymbol5;
static symbol(a: A, b: B, c: C, d: D): CompositeSymbol4;
static symbol(a: A, b: B, c: C): CompositeSymbol3;
static symbol(a: A, b: B): CompositeSymbol2;
static symbol(a: A): CompositeSymbol1;
static symbol(): typeof CompositeSymbol0;
static unsafe(...values: any[]): any;
static unsafeSymbol(...values: any[]): any;
[Symbol.iterator](): IterableIterator;
}
declare const localToken: unique symbol;
/**
* Tries to use the first non-primitive from value list as the root key and throws
* if there's only primitives.
*/
export declare const getLeaf: (values: any[], unsafe?: boolean | undefined) => WeakishMap;
/**
* A memory-leaky, slightly more efficient version of `getLeaf()`.
*/
export declare const getUnsafeLeaf: (values: any[]) => Map;
export declare const tuple: typeof Tuple.tuple, symbol: typeof Tuple.symbol, unsafe: typeof Tuple.unsafe, unsafeSymbol: typeof Tuple.unsafeSymbol;
export {};