export type Fn = (...parameters: any[]) => any export type Ctor = new (...args: any[]) => T export type Count = [ ...A, any, ][`length`] extends N ? A[`length`] : A[`length`] | Count export type Each = { [P in Count]: E[P] } export type Refinement = (a: A) => a is B