/**
* @since 2.11.0
*/
import { Option } from './Option'
import { Either } from './Either'
/**
* @since 2.11.0
*/
export interface Refinement {
(a: A): a is B
}
/**
* Returns a `Refinement` from a `Option` returning function.
* This function ensures that a `Refinement` definition is type-safe.
*
* @category lifting
* @since 2.11.0
*/
export declare const fromOptionK: (getOption: (a: A) => Option) => Refinement
/**
* @category lifting
* @since 2.11.0
*/
export declare const fromEitherK: (getEither: (a: A) => Either) => Refinement
/**
* @category constructors
* @since 2.11.0
*/
export declare const id: () => Refinement
/**
* @since 2.11.0
*/
export declare const not: (refinement: Refinement) => Refinement>
/**
* @since 2.11.0
*/
export declare const or: (
second: Refinement
) => (first: Refinement) => Refinement
/**
* @since 2.11.0
*/
export declare const and: (
second: Refinement
) => (first: Refinement) => Refinement
/**
* @since 2.11.0
*/
export declare const zero: () => Refinement
/**
* @since 2.11.0
*/
export declare const compose: (
bc: Refinement
) => (ab: Refinement) => Refinement