type GenericFunction = (...x: never[]) => unknown; export declare abstract class HKT1 { readonly _1?: unknown; new: GenericFunction; } export declare abstract class HKT2 { readonly _1?: unknown; readonly _2?: unknown; new: GenericFunction; } export declare abstract class HKT3 { readonly _1?: unknown; readonly _2?: unknown; readonly _3?: unknown; new: GenericFunction; } export declare abstract class HKT4 { readonly _1?: unknown; readonly _2?: unknown; readonly _3?: unknown; readonly _4?: unknown; new: GenericFunction; } export type Assume = T extends U ? T : U; export type Apply1 = ReturnType< (F & { readonly _1: _1; })['new'] >; export interface Apply1$<_1> extends HKT1 { new: (f: Assume) => Apply1; } export interface Apply1$$ extends HKT2 { new: ( f: Assume, _1: Assume, ) => Apply1; } export type Apply2 = ReturnType< (F & { readonly _1: _1; readonly _2: _2; })['new'] >; export interface Apply2$<_1, _2> extends HKT1 { new: (f: Assume) => Apply2; } export interface Apply2$$<_2> extends HKT2 { new: ( f: Assume, _1: Assume, ) => Apply2; } export interface Apply2$$$ extends HKT3 { new: ( f: Assume, _1: Assume, _2: Assume, ) => Apply2; } export type Apply3 = ReturnType< (F & { readonly _1: _1; readonly _2: _2; readonly _3: _3; })['new'] >; export interface Apply3$<_1, _2, _3> extends HKT1 { new: (f: Assume) => Apply3; } export interface Apply3$$<_2, _3> extends HKT2 { new: ( f: Assume, _1: Assume, ) => Apply3; } export interface Apply3$$$<_3> extends HKT3 { new: ( f: Assume, _1: Assume, _2: Assume, ) => Apply3; } export interface Apply3$$$$ extends HKT4 { new: ( f: Assume, _1: Assume, _2: Assume, _3: Assume, ) => Apply3; } export type ApplyWith1<_1, F extends HKT1> = ReturnType< (F & { readonly _1: _1; })['new'] >; export interface ApplyWith1$ extends HKT1 { new: (_1: Assume) => ApplyWith1; } export interface ApplyWith1$$ extends HKT2 { new: ( _1: Assume, f: Assume, ) => ApplyWith1; } export type ApplyWith2<_1, _2, F extends HKT2> = ReturnType< (F & { readonly _1: _1; readonly _2: _2; })['new'] >; export interface ApplyWith2$<_2, F extends HKT2> extends HKT1 { new: (_1: Assume) => ApplyWith2; } export interface ApplyWith2$$ extends HKT2 { new: ( _1: Assume, _2: Assume, ) => ApplyWith2; } export interface ApplyWith2$$$ extends HKT3 { new: ( _1: Assume, _2: Assume, f: Assume, ) => ApplyWith2; } export type ApplyWith3<_1, _2, _3, F extends HKT3> = ReturnType< (F & { readonly _1: _1; readonly _2: _2; readonly _3: _3; })['new'] >; export interface ApplyWith3$<_2, _3, F extends HKT3> extends HKT1 { new: (_1: Assume) => ApplyWith3; } export interface ApplyWith3$$<_3, F extends HKT3> extends HKT2 { new: ( _1: Assume, _2: Assume, ) => ApplyWith3; } export interface ApplyWith3$$$ extends HKT3 { new: ( _1: Assume, _2: Assume, _3: Assume, ) => ApplyWith3; } export interface ApplyWith3$$$$ extends HKT4 { new: ( _1: Assume, _2: Assume, _3: Assume, f: Assume, ) => ApplyWith3; } export type Pipe1 = Apply1; export type Pipe2 = Apply1< F2, Apply1 >; export type Pipe3< T, F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, > = Apply1>>; export type Pipe4< T, F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, > = Apply1>>>; export type Pipe5< T, F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, > = Apply1>>>>; export type Pipe6< T, F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, > = Apply1>>>>>; export type Pipe7< T, F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, F7 extends HKT1, > = Apply1< F7, Apply1>>>>> >; export type Pipe8< T, F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, F7 extends HKT1, F8 extends HKT1, > = Apply1< F8, Apply1< F7, Apply1>>>>> > >; export type Flow1 = F1; export interface Flow2 extends HKT1 { new: (x: Assume) => Apply1>; } export interface Flow3 extends HKT1 { new: ( x: Assume, ) => Apply1>>; } export interface Flow4< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1>>>; } export interface Flow5< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1>>>>; } export interface Flow6< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1< F6, Apply1>>>> >; } export interface Flow7< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, F7 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1< F7, Apply1< F6, Apply1>>>> > >; } export interface Flow8< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, F7 extends HKT1, F8 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1< F8, Apply1< F7, Apply1< F6, Apply1>>>> > > >; } export type Compose1 = F1; export interface Compose2 extends HKT1 { new: (x: Assume) => Apply1>; } export interface Compose3 extends HKT1 { new: ( x: Assume, ) => Apply1>>; } export interface Compose4< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1>>>; } export interface Compose5< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1>>>>; } export interface Compose6< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1< F1, Apply1>>>> >; } export interface Compose7< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, F7 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1< F1, Apply1< F2, Apply1>>>> > >; } export interface Compose8< F1 extends HKT1, F2 extends HKT1, F3 extends HKT1, F4 extends HKT1, F5 extends HKT1, F6 extends HKT1, F7 extends HKT1, F8 extends HKT1, > extends HKT1 { new: ( x: Assume, ) => Apply1< F1, Apply1< F2, Apply1< F3, Apply1>>>> > > >; } export {}; //# sourceMappingURL=hkt.d.ts.map