import { Integer } from './Integer';
import { Eq } from 'fp-ts/Eq';
import { Ord } from 'fp-ts/Ord';
import { Discrete, Format } from './Discrete';
import { Dimensions, Units } from './Scale';
import { NonZeroRational } from './NonZeroRational';
import { PositiveRational } from './PositiveRational';
import * as R from './Rational';
export declare class Dense<D extends string> {
    readonly dimension: D;
    readonly value: R.Rational;
    constructor(dimension: D, value: R.Rational);
    isZero(): boolean;
    add(y: Dense<D>): Dense<D>;
    mul(y: R.Rational): Dense<D>;
    negate(): Dense<D>;
    sub(y: Dense<D>): Dense<D>;
    div(y: NonZeroRational): Dense<D>;
    inspect(): string;
    toString(): string;
}
export declare function fromInteger<D extends string>(d: D, i: Integer): Dense<D>;
export declare function getZero<D extends string>(d: D): Dense<D>;
export declare function getOne<D extends string>(d: D): Dense<D>;
export declare function getEq<D extends string>(): Eq<Dense<D>>;
export declare function getOrd<D extends string>(): Ord<Dense<D>>;
export declare function getScale<D extends Dimensions, U extends Units<D>>(format: Format<D, U>): PositiveRational;
export declare function fromDiscrete<D extends Dimensions, U extends Units<D>>(d: Discrete<D, U>): Dense<D>;
export declare function floor<D extends Dimensions, U extends Units<D>>(unit: U, d: Dense<D>): [Discrete<D, U>, Dense<D>];
export declare function round<D extends Dimensions, U extends Units<D>>(unit: U, d: Dense<D>): [Discrete<D, U>, Dense<D>];
export declare function ceil<D extends Dimensions, U extends Units<D>>(unit: U, d: Dense<D>): [Discrete<D, U>, Dense<D>];
export declare function trunc<D extends Dimensions, U extends Units<D>>(unit: U, d: Dense<D>): [Discrete<D, U>, Dense<D>];
