import { NonZeroInteger } from './NonZeroInteger';
import { Natural } from './Natural';
import * as O from 'fp-ts/Option';
import * as EQ from 'fp-ts/Eq';
import * as ORD from 'fp-ts/Ord';
import { Rational } from './Rational';
export declare type NonZeroRational = [NonZeroInteger, Natural];
export declare function fromRational(r: Rational): O.Option<NonZeroRational>;
export declare const reduce: (n: NonZeroInteger, d: Natural) => NonZeroRational;
export declare const add: (x: NonZeroRational, y: NonZeroRational) => NonZeroRational;
export declare const mul: (x: NonZeroRational, y: NonZeroRational) => NonZeroRational;
export declare const one: NonZeroRational;
export declare function sub(x: NonZeroRational, y: NonZeroRational): O.Option<NonZeroRational>;
export declare const div: (x: NonZeroRational, y: NonZeroRational) => NonZeroRational;
export declare function inverse(x: NonZeroRational): NonZeroRational;
export declare const Eq: EQ.Eq<NonZeroRational>;
export declare const Ord: ORD.Ord<NonZeroRational>;
export declare const show: (x: NonZeroRational) => string;
