/** * Type utilities * @packageDocumentation */ import { Class, List } from "ts-toolbelt"; /** * A tuple * * The length of tuples is limited to 16 elements * (honeslty if you have functions with more than 16 parameters you should refactor some stuff). * User the [[`map`]] combinator to go around this limitation. */ export declare type Tuple = [T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?, T?]; /** * Concatenates two tuples * * @typeParam L - Left tuple * @typeParam R - Right tuple */ export declare type Concat = List.Concat extends infer T ? T extends Tuple ? T : never : never; /** * Filters a tuple * * @typeParam T - Tuple to filter * @typeParam F - Elements to filter out */ export declare type Filter = List.Filter extends infer R ? R extends Tuple ? R : never : never; /** * Checks if a type is an instance of another type * * @typeParam C - Class * @typeParam I - Instance * * @returns `true` or `false` */ export declare type IsInstanceOf = C extends Class.Class ? I extends Class.InstanceOf ? true : false : false;