export declare type Monadical = { isLeft?: () => boolean; isRight?: () => boolean; isJust?: () => boolean; isNothing?: () => boolean; orElse?: () => any; chain: (arg: any) => any; map: (arg: (val: any) => T) => M; getOrElse: (arg: T) => M | T; getOrElseThrow: (func: (val: L | R) => Error) => R | Error; filter: (func: (a: any) => boolean) => M; join: () => Left | Right; value: any; of: (val: R) => Right; nullable: (value: T) => Either; }; export declare type Either = { isRight(): boolean; isLeft(): boolean; chain(func: (a: L | R) => T): Left | T; getOrElse(defaultVal: any): any | R; getOrElseThrow(func: (val: L | R) => Error): R | Error; filter(func: (val: L | R) => boolean): Either; join(): Left | Right; orElse(func: (val: L | R) => any): Right | any; map(func: (val: L | R) => T): Either; value(): unknown; left(val: L): Left; right(val: R): Right; of(val: R): Right; nullable(value: T): Either; }; export declare type Left = { readonly _value: L; (value: L): Left; toString(): string; value(): L; isRight(): boolean; isLeft(): boolean; chain(func: (val: R) => T): Left; getOrElse(defaultVal: any): any; getOrElseThrow(func: (val: L) => Error): R | Error; filter(func: (val: R) => boolean): Left; join(): Left; orElse(func: (val: L) => any): any; map(func: (val: L) => T): Either; }; export declare type Right = { readonly _value: R; (value: R): Right; toString(): string; value(): R; isRight(): boolean; isLeft(): boolean; chain(func: (a: R) => T): T; getOrElse(defaultVal: T): R; getOrElseThrow(func: (val: L | R) => Error): R | Error; filter(func: (val: R) => boolean): Either; join(): Right; orElse(func: (val: R) => any): Right; map(func: (val: R) => T): Either; }; export declare type Maybe = { value(): unknown; just(val: J): Just; nothing(): Nothing; of(val: J): Just; nullable(val: J): Maybe; isNothing(): boolean; isJust(): boolean; chain(func: (a: J | N) => T): Nothing | T; getOrElse(defaultVal: any): any | J; filter(func: (val: J | N) => boolean): Maybe; map(func: (val: J | N) => T): Maybe; }; export declare type Just = { readonly _value: J; (value: J): Just; value(): J; toString(): string; isJust(): boolean; isNothing(): boolean; chain(func: (a: J) => T): T; filter(func: (a: J) => boolean): Maybe; getOrElse(defaultVal: T): J; map(func: (a: J) => T): Maybe; }; export declare type Nothing = { readonly _value: N; (): Nothing; value(): N; toString(): string; isJust(): boolean; isNothing(): boolean; chain(func: (val: J) => T): Nothing; filter(func: (val: J) => boolean): Nothing; getOrElse(defaultVal: any): any; map(func: (val: J) => T): Maybe; }; export declare type EitherResult = Either; export declare type MaybeResult = Maybe; export declare type GetPropOrElse = { (path: string): (obj: object) => (defaultVal: any) => any; (path: string, obj: object): (defaultVal: any) => any; (path: string, obj: object, defaultVal: any): any; }; export declare type ExtractG = { (a: T): any; }; export declare type MapC = { (func: T): (container: Monadical) => any; (func: T, container: Monadical): any; }; export declare type MapG = { (a: T): (b: V) => MapC; (a: T, b: V): MapC; }; export declare type ChainC = { (func: T): (container: Monadical) => any; (func: T, container: Monadical): any; }; export declare type ChainG = { (a: T): (b: V) => ChainC; (a: T, b: V): ChainC; }; export declare type GetOrElseC = { (val: T): (container: Monadical) => any; (val: T, container: Monadical): any; }; export declare type GetOrElseG = { (a: T): (b: V) => GetOrElseC; (a: T, b: V): GetOrElseC; }; export declare type SafeHandleResult = { error: Error; }; export declare type SafeHandleErrorG = { (a: (error: any) => Generator): (b: Generator) => EitherResult; (a: (error: any) => Generator, b: Generator): EitherResult; }; export declare type SafeUnpackG = { (errorHandler: (error: any) => Generator, defaultVal: any): FuncSpreadT; }; export declare type LiftToMaybe = { (func: Func1): (value: J) => Maybe; (func: Func1, value: J): Maybe; }; export declare type LiftToEither = { (func: Func1): (value: R) => Either; (func: Func1, value: R): Either; }; export interface GenFuncSpread { (...val: any[]): T; } export declare type IndexableAny = { [key: string]: any; }; export declare type Indexable = { [key: string]: T; }; export declare type ReadableValue = { (a: T): (b: string) => () => V; (a: T, b: string): () => V; }; export declare type Collapse = { (a: string): (b: string) => string; (a: string, b: string): string; }; export declare type Normalise = (delim: string) => (a: string) => string; export declare type WritableValue = { (a: T): (b: string) => (c: U) => () => U; (a: T, b: string): (c: U) => () => U; (a: T, b: string, c: U): () => U; }; export declare type Mappable = { (a: T): (b: V) => V; (a: T, b: V): V; }; export declare type GetProps = { (a: any[]): (b: IndexableAny) => any[]; (a: any[], b: IndexableAny): any[]; }; export declare type ValidLength = { (a: string): (b: number) => boolean; (a: string, b: number): boolean; }; export declare type Joiner = { (a: string): (b: T[]) => string; (a: string, b: T[]): string; }; export declare type FuncSpreadT = (...args: any[]) => T; export declare type FuncSpreadable = (...args: any[]) => any; export declare type Func1Optional = (a?: A) => any; export declare type Func1 = (a: A) => A; export declare type Curry10 = { (a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J): R; (a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I): Curry1; (a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H): Curry2; (a: A, b: B, c: C, d: D, e: E, f: F, g: G): Curry3; (a: A, b: B, c: C, d: D, e: E, f: F): Curry4; (a: A, b: B, c: C, d: D, e: E): Curry5; (a: A, b: B, c: C, d: D): Curry6; (a: A, b: B, c: C): Curry7; (a: A, b: B): Curry8; (a: A): Curry9; }; export declare type Curry9 = { (a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I): R; (a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H): Curry1; (a: A, b: B, c: C, d: D, e: E, f: F, g: G): Curry2; (a: A, b: B, c: C, d: D, e: E, f: F): Curry3; (a: A, b: B, c: C, d: D, e: E): Curry4; (a: A, b: B, c: C, d: D): Curry5; (a: A, b: B, c: C): Curry6; (a: A, b: B): Curry7; (a: A): Curry8; }; export declare type Curry8 = { (a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H): R; (a: A, b: B, c: C, d: D, e: E, f: F, g: G): Curry1; (a: A, b: B, c: C, d: D, e: E, f: F): Curry2; (a: A, b: B, c: C, d: D, e: E): Curry3; (a: A, b: B, c: C, d: D): Curry4; (a: A, b: B, c: C): Curry5; (a: A, b: B): Curry6; (a: A): Curry7; }; export declare type Curry7 = { (a: A, b: B, c: C, d: D, e: E, f: F, g: G): R; (a: A, b: B, c: C, d: D, e: E, f: F): Curry1; (a: A, b: B, c: C, d: D, e: E): Curry2; (a: A, b: B, c: C, d: D): Curry3; (a: A, b: B, c: C): Curry4; (a: A, b: B): Curry5; (a: A): Curry6; }; export declare type Curry6 = { (a: A, b: B, c: C, d: D, e: E, f: F): R; (a: A, b: B, c: C, d: D, e: E): Curry1; (a: A, b: B, c: C, d: D): Curry2; (a: A, b: B, c: C): Curry3; (a: A, b: B): Curry4; (a: A): Curry5; }; export declare type Curry5 = { (a: A, b: B, c: C, d: D, e: E): R; (a: A, b: B, c: C, d: D): Curry1; (a: A, b: B, c: C): Curry2; (a: A, b: B): Curry3; (a: A): Curry4; }; export declare type Curry4 = { (a: A, b: B, c: C, d: D): R; (a: A, b: B, c: C): Curry1; (a: A, b: B): Curry2; (a: A): Curry3; }; export declare type Curry3 = { (a: A, b: B, c: C): R; (a: A, b: B): Curry1; (a: A): Curry2; }; export declare type Curry2 = { (a: A, b: B): R; (a: A): Curry1; }; export declare type Curry1 = (a: A) => R; export declare type Curry = T extends [any, any, any, any, any, any, any, any, any, any] ? Curry10 : T extends [any, any, any, any, any, any, any, any, any] ? Curry9 : T extends [any, any, any, any, any, any, any, any] ? Curry8 : T extends [any, any, any, any, any, any, any] ? Curry7 : T extends [any, any, any, any, any, any] ? Curry6 : T extends [any, any, any, any, any] ? Curry5 : T extends [any, any, any, any] ? Curry4 : T extends [any, any, any] ? Curry3 : T extends [any, any] ? Curry2 : T extends [any] ? Curry1 : unknown;