Product
Other
Signature
declare function struct<F extends TypeLambda>(F: Product<F>): <R extends { [x: string]: Kind<F, any, any, any, any>;}>(fields: R) => Kind<F, [R[keyof R]] extends [Kind<F, R, any, any, any>] ? R : never, R[keyof R] extends never ? never : [R[keyof R]] extends [Kind<F, any, O, any, any>] ? O : never, R[keyof R] extends never ? never : [R[keyof R]] extends [Kind<F, any, any, E, any>] ? E : never, { [K in string | number | symbol]: [R[K]] extends [Kind<F, any, any, any, A>] ? A : never }>Signature
declare function tuple<F extends TypeLambda>(F: Product<F>): <T extends readonly Array<Kind<F, any, any, any, any>>>(...elements: T) => Kind<F, [T[number]] extends [Kind<F, R, any, any, any>] ? R : never, T[number] extends never ? never : [T[number]] extends [Kind<F, any, O, any, any>] ? O : never, T[number] extends never ? never : [T[number]] extends [Kind<F, any, any, E, any>] ? E : never, { [I in string | number | symbol]: [T[I]] extends [Kind<F, any, any, any, A>] ? A : never }>