import Tuple from './Tuple';
export interface Settable {
set(key: A, value: B): this;
}
export interface Gettable {
get(key: A): B | undefined;
}
export interface GenericMap extends GetSettable {
has(key: A): boolean;
}
export declare type GetSettable = Settable & Gettable;
export declare type Primitive = boolean | undefined | null | number | string | symbol;
export interface Tuple0 extends Tuple {
readonly length: 0;
}
/** Singleton */
export interface Tuple1 extends Tuple {
readonly 0: A;
readonly length: 1;
}
/** Pair */
export interface Tuple2 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly length: 2;
}
/** Triple */
export interface Tuple3 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly 2: C;
readonly length: 3;
}
/** Quadruple */
export interface Tuple4 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly 2: C;
readonly 3: D;
readonly length: 4;
}
/** Quintuple */
export interface Tuple5 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly 2: C;
readonly 3: D;
readonly 4: E;
readonly length: 5;
}
/** Sextuple */
export interface Tuple6 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly 2: C;
readonly 3: D;
readonly 4: E;
readonly 5: F;
readonly length: 6;
}
/** Septuple */
export interface Tuple7 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly 2: C;
readonly 3: D;
readonly 4: E;
readonly 5: F;
readonly 6: G;
readonly length: 7;
}
/** Octuple */
export interface Tuple8 extends Tuple {
readonly 0: A;
readonly 1: B;
readonly 2: C;
readonly 3: D;
readonly 4: E;
readonly 5: F;
readonly 6: G;
readonly 7: H;
readonly length: 8;
}
export declare type CompositeSymbol = {
t: T;
} & symbol;
export declare const CompositeSymbol0: CompositeSymbol<[never]>;
export declare type CompositeSymbol1 = CompositeSymbol<[A]>;
export declare type CompositeSymbol2 = CompositeSymbol<[A, B]>;
export declare type CompositeSymbol3 = CompositeSymbol<[A, B, C]>;
export declare type CompositeSymbol4 = CompositeSymbol<[A, B, C, D]>;
export declare type CompositeSymbol5 = CompositeSymbol<[A, B, C, D, E]>;
export declare type CompositeSymbol6 = CompositeSymbol<[A, B, C, D, E, F]>;
export declare type CompositeSymbol7 = CompositeSymbol<[A, B, C, D, E, F, G]>;
export declare type CompositeSymbol8 = CompositeSymbol<[A, B, C, D, E, F, G, H]>;
export interface Indexable {
[i: number]: A;
}