/**
 * A class representing mathematical fractions, which have a numerator and a denominator.
 */
export declare class Fraction {
    private static maximumAllowedNumber;
    private numerator;
    private denominator;
    private wholeValue;
    private realValue;
    /**
     * Returns the maximum of two fractions (does not clone)
     * @param f1
     * @param f2
     * @returns {Fraction}
     */
    static max(f1: Fraction, f2: Fraction): Fraction;
    static Equal(f1: Fraction, f2: Fraction): boolean;
    /**
     * The same as Fraction.clone
     * @param fraction
     * @returns {Fraction}
     */
    static createFromFraction(fraction: Fraction): Fraction;
    static plus(f1: Fraction, f2: Fraction): Fraction;
    static minus(f1: Fraction, f2: Fraction): Fraction;
    static multiply(f1: Fraction, f2: Fraction): Fraction;
    private static greatestCommonDenominator;
    /**
     *
     * @param numerator
     * @param denominator
     * @param wholeValue - the integer number, needed for values greater than 1
     * @param simplify - If simplify is true, then the fraction is simplified
     * to make both the numerator and denominator coprime, and less than maximumAllowedNumber.
     */
    constructor(numerator?: number, denominator?: number, wholeValue?: number, simplify?: boolean);
    toString(): string;
    clone(): Fraction;
    get Numerator(): number;
    set Numerator(value: number);
    get Denominator(): number;
    set Denominator(value: number);
    get WholeValue(): number;
    set WholeValue(value: number);
    /**
     * Returns the unified numerator where the whole value will be expanded
     * with the denominator and added to the existing numerator.
     */
    GetExpandedNumerator(): number;
    calculateNumberOfNeededDots(): number;
    IsNegative(): boolean;
    get RealValue(): number;
    expand(expansionValue: number): void;
    /**
     * Adds a Fraction to this Fraction.
     * Attention: This changes the already existing Fraction, which might be referenced elsewhere!
     * Use Fraction.plus() for creating a new Fraction object being the sum of two Fractions.
     * @param fraction the Fraction to add.
     */
    Add(fraction: Fraction): Fraction;
    /**
     * Subtracts a Fraction from this Fraction.
     * Attention: This changes the already existing Fraction, which might be referenced elsewhere!
     * Use Fraction.minus() for creating a new Fraction object being the difference of two Fractions.
     * @param fraction the Fraction to subtract.
     */
    Sub(fraction: Fraction): Fraction;
    /**
     * Brute Force quanization by searching incremental with the numerator until the denominator is
     * smaller/equal than the desired one.
     * @param maxAllowedDenominator
     */
    Quantize(maxAllowedDenominator: number): Fraction;
    Equals(obj: Fraction): boolean;
    CompareTo(obj: Fraction): number;
    lt(frac: Fraction): boolean;
    lte(frac: Fraction): boolean;
    gt(frac: Fraction): boolean;
    gte(frac: Fraction): boolean;
    private setRealValue;
    private simplify;
    static FloatInaccuracyTolerance: number;
    isOnBeat(timeSignature: Fraction): boolean;
    distanceFromBeat(timeSignature: Fraction): number;
}
