import { Arity0, Arity1, Arity2, Arity3, Arity4, Curry2, Curry3, Curry4 } from '../types';
export declare type PlaceHolder = {
readonly ['@@placeholder']: true;
};
export declare type PartialFn = {
(f: Arity0, args: Array): Arity0;
(f: Arity1, args: [A]): Arity0;
(f: Arity1, args: [PlaceHolder]): typeof f;
(f: Arity1, args: Array): typeof f;
(f: Arity2, args: [A, B]): Arity0;
(f: Arity2, args: [A]): Arity1;
(f: Arity2, args: Array): Curry2;
(f: Arity2, args: [PlaceHolder, B]): Arity1;
(f: Arity2, args: [A, PlaceHolder]): Arity1;
(f: Arity2, args: [PlaceHolder]): Curry2;
(f: Arity2, args: [PlaceHolder, PlaceHolder]): Curry2;
(f: Arity3, args: [A, B, C]): Arity0;
(f: Arity3, args: [A, B]): Arity1;
(f: Arity3, args: [A]): Curry2;
(f: Arity3, args: Array): Curry3;
(f: Arity3, args: [PlaceHolder, B, C]): Arity1;
(f: Arity3, args: [PlaceHolder, PlaceHolder, C]): Curry2;
(f: Arity3, args: [PlaceHolder, B, PlaceHolder]): Curry2;
(f: Arity3, args: [A, PlaceHolder, C]): Arity1;
(f: Arity3, args: [A, PlaceHolder, PlaceHolder]): Curry2;
(f: Arity3, args: [A, B, PlaceHolder]): Arity1;
(f: Arity3, args: [PlaceHolder, PlaceHolder, PlaceHolder]): Curry3;
(f: Arity4, args: [A, B, C, D]): Arity0;
(f: Arity4, args: [A, B, C]): Arity1;
(f: Arity4, args: [A, B]): Curry2;
(f: Arity4, args: [A]): Curry3;
(f: Arity4, args: Array): Curry4;
(f: Arity4, args: [PlaceHolder, B, C, D]): Arity1;
(f: Arity4, args: [PlaceHolder, PlaceHolder, C, D]): Curry2;
(f: Arity4, args: [PlaceHolder, B, PlaceHolder, D]): Curry2;
(f: Arity4, args: [PlaceHolder, B, C, PlaceHolder]): Curry2;
(f: Arity4, args: [A, PlaceHolder, C, D]): Arity1;
(f: Arity4, args: [A, PlaceHolder, PlaceHolder, D]): Curry2;
(f: Arity4, args: [A, PlaceHolder, C, PlaceHolder]): Curry2;
(f: Arity4, args: [A, B, PlaceHolder, D]): Arity1;
(f: Arity4, args: [A, B, PlaceHolder, PlaceHolder]): Curry2;
(f: Arity4, args: [A, B, C, PlaceHolder]): Arity1;
(f: Arity4, args: [PlaceHolder, PlaceHolder, PlaceHolder, PlaceHolder]): Curry4;
(f: Arity4, args: [PlaceHolder, PlaceHolder, PlaceHolder, D]): Curry3;
(f: Arity4, args: [PlaceHolder, PlaceHolder, C, PlaceHolder]): Curry3;
(f: Arity4, args: [PlaceHolder, B, PlaceHolder, PlaceHolder]): Curry3;
(f: Arity4, args: [A, PlaceHolder, PlaceHolder, PlaceHolder]): Curry3;
(f: Arity0): Arity0Partial;
(f: Arity1): Arity1Partial;
(f: Arity2): Arity2Partial;
(f: Arity3): Arity3Partial;
(f: Arity4): Arity4Partial;
};
export declare type Arity0Partial = {
(args: Array): Arity0;
};
export declare type Arity1Partial = {
(args: [A]): Arity0;
(args: [PlaceHolder]): Arity1;
(args: Array): Arity1;
};
export declare type Arity2Partial = {
(args: [A, B]): Arity0;
(args: [A]): Arity1;
(args: Array): Curry2;
(args: [PlaceHolder, B]): Arity1;
(args: [A, PlaceHolder]): Arity1;
(args: [PlaceHolder]): Curry2;
(args: [PlaceHolder, PlaceHolder]): Curry2;
};
export declare type Arity3Partial = {
(args: [A, B, C]): Arity0;
(args: [A, B]): Arity1;
(args: [A]): Curry2;
(args: Array): Curry3;
(args: [PlaceHolder, B, C]): Arity1;
(args: [PlaceHolder, PlaceHolder, C]): Curry2;
(args: [PlaceHolder, B, PlaceHolder]): Curry2;
(args: [A, PlaceHolder, C]): Arity1;
(args: [A, PlaceHolder, PlaceHolder]): Curry2;
(args: [A, B, PlaceHolder]): Arity1;
};
export declare type Arity4Partial = {
(args: [A, B, C, D]): Arity0;
(args: [A, B, C]): Arity1;
(args: [A, B]): Curry2;
(args: [A]): Curry3;
(args: Array): Curry4;
(args: [PlaceHolder, B, C, D]): Arity1;
(args: [PlaceHolder, PlaceHolder, C, D]): Curry2;
(args: [PlaceHolder, B, PlaceHolder, D]): Curry2;
(args: [PlaceHolder, B, C, PlaceHolder]): Curry2;
(args: [A, PlaceHolder, C, D]): Arity1;
(args: [A, PlaceHolder, PlaceHolder, D]): Curry2;
(args: [A, PlaceHolder, C, PlaceHolder]): Curry2;
(args: [A, B, PlaceHolder, D]): Arity1;
(args: [A, B, PlaceHolder, PlaceHolder]): Curry2;
(args: [A, B, C, PlaceHolder]): Arity1;
(args: [PlaceHolder, PlaceHolder, PlaceHolder, PlaceHolder]): Curry4;
(args: [PlaceHolder, PlaceHolder, PlaceHolder, D]): Curry3;
(args: [PlaceHolder, PlaceHolder, C, PlaceHolder]): Curry3;
(args: [PlaceHolder, B, PlaceHolder, PlaceHolder]): Curry3;
(args: [A, PlaceHolder, PlaceHolder, PlaceHolder]): Curry3;
};