/** @module maybe-functions.ts */
import { WidenType } from './helper-types';
import { Maybe } from './maybe';
export declare const safeInit: (as: A[]) => Maybe;
export declare const safeHead: (as: A[]) => Maybe;
export declare const safeLast: (as: A[]) => Maybe>;
export declare const safeTail: (xs: A[]) => Maybe;
declare type PossibleKeyValue = A extends keyof O ? keyof O[A] : {};
/**
* takes an key (or index) and an array or object and returns
* a Maybe. A Just containing the value of that object at key
* or a Nothing if there is no value at the key index.
*/
export declare function safeProp(k: A, obj: O): Maybe>;
export declare function safeProp(k: A): (obj: O) => Maybe>;
export declare function safeIndexValue(index: I, arr: A & Array<{}>): Maybe;
export declare function safeIndexValue(index: I): (arr: A) => Maybe;
declare type StripAllNullValue = {
[I in keyof A]: A[I] extends infer U ? U extends undefined | null ? never : U : never;
};
export declare const maybeAllValues: (o: O) => Maybe>;
export {};