export interface PartialFunction<From, To> {
    isDefinedAt: (from: From) => boolean;
    apply: (from: From) => To;
}
export interface PartialFunction2<Opt, From, To> {
    isDefinedAt: (from: Opt) => boolean;
    apply: (from: From, opt: Opt) => To;
}
export declare const chainOfResponsibility2: <From, Opt, To>(defaultFn: (from: From, opt: Opt) => To, ...fns: PartialFunction2<Opt, From, To>[]) => (from: From, opt: Opt) => To;
export declare const chainOfResponsibility: <From, To>(defaultFn: (from: From) => To, ...fns: PartialFunction<From, To>[]) => (from: From) => To;
export type PartialFnFromUndefined<From, To> = (from: From | undefined) => To | undefined;
export declare const chainFromDoItOrUndefined: <From, To>(defaultFn: (from: From) => To, ...fns: PartialFnFromUndefined<From, To>[]) => (from: From) => To;
export declare const partial: (isDefinedAt: (from: any) => boolean) => (apply: (from: any) => any) => PartialFunction<any, any>;
