import { HKT, URIS, Type } from 'fp-ts/lib/HKT'; import { Apply, Applicative, ArrayApplicative, ArrayApply, HKT0 } from './helper-types'; declare global { interface Array { _URI: 'Array'; _A: T; } } declare module 'fp-ts/lib/HKT' { interface URI2HKT { Array: Array; } } declare module 'fp-ts/lib/HKT' { interface URI2HKT { 'babakness/maybe': Maybe; } } export declare type Maybe = Nothing | Just; export declare const Maybe: { _URI: string; of: (a: A) => Maybe; /** * Place nullable values (undefined and null) into a nothing, otherwise into a Just */ from: (a: A | null | undefined) => Maybe; }; export declare class Nothing { readonly _A: A; readonly _URI: 'babakness/maybe'; static readonly _URI: 'babakness/maybe'; static value: Maybe; static of(value: any): Maybe; fold(valueWhenNothing: B, doWhenJust: (a: A) => B): B; reduce(doWhenJust: (a: A) => B, valueWhenNothing: B): B; private constructor(); joinOrValue(a: A): A; joinOrDo(fn: () => A): A; map(fn: (a: A) => B): Maybe; mapNullable(fn: (a: A) => B | undefined | null): Maybe; chain(fn: (a: A) => Maybe): Maybe; isJust(): this is Just; isNothing(): this is Nothing; ap(fab: Maybe<(a: A) => B>): Maybe; ap_(this: Maybe<(b: B) => C>, fb: Maybe): Maybe; sequence(this: Maybe> & (Maybe> | Maybe>), F: HKT0 | { of: (a: A) => (HKT & Apply) | (HKT & ArrayApply); }): Type>; sequenceNullable(this: Maybe> & (Maybe> | Maybe>), F: HKT0 | { of: (a: A) => (HKT & Apply) | (HKT & ArrayApply); }): Type>; traverse(this: Maybe, F: Applicative | ArrayApplicative, fn: (a: A) => (HKT & Apply) | (HKT & ArrayApply)): Type>; traverseNullable(this: Maybe, F: Applicative | ArrayApplicative, fn: (a: A) => (HKT & Apply) | (HKT & ArrayApply)): Type>; } export declare const nothing: Maybe; export declare class Just { readonly value: A; readonly _A: A; readonly _URI: 'babakness/maybe'; static readonly _URI: 'babakness/maybe'; static of(value: T): Just; traverse(this: Maybe, F: Applicative | ArrayApplicative, fn: (a: A) => (HKT & Apply) | (HKT & ArrayApply)): Type>; traverseNullable(this: Maybe, F: Applicative | ArrayApplicative, fn: (a: A) => (HKT & Apply) | (HKT & ArrayApply)): Type>; sequence(this: Maybe> & (Maybe> | Maybe>), F: HKT0 | { of: (a: A) => (HKT & Apply) | (HKT & ArrayApply); }): Type>; sequenceNullable(this: Maybe> & (Maybe> | Maybe>), F: HKT0 | { of: (a: A) => (HKT & Apply) | (HKT & ArrayApply); }): Type>; constructor(value: A); joinOrValue(a: A): A; joinOrDo(fn: () => A): A; map(fn: (a: A) => B): Maybe; mapNullable(fn: (a: A) => B | undefined | null): Maybe; chain(fn: (a: A) => Maybe): Maybe; ap(fab: Maybe<(a: A) => B>): Maybe; ap_(this: Maybe<(b: B) => C>, fb: Maybe): Maybe; fold(valueWhenNothing: B, doWhenJust: (a: A) => B): B; reduce(doWhenJust: (a: A) => B, valueWhenNothing: B): B; isJust(): this is Just; isNothing(): this is Nothing; }