import { SupportsEquals } from "./baseTypes.js";
import { FactorUnits } from "./factorUnits.js";
import { Unit } from "./unit.js";
import { Decimal } from "decimal.js";
import { DimensionVector } from "./dimensionVector.js";
/**
 * Combines a {@link Unit} and an exponent; some Units are a combination of {@link FactorUnit}s. If
 * a unit is such a 'derived unit', its {@link Unit#getFactorUnits()} method returns a non-empty Set
 * of FactorUnits.
 *
 */
export declare class FactorUnit implements SupportsEquals<FactorUnit> {
    readonly exponent: number;
    readonly unit: Unit;
    constructor(unit: Unit, exponent: number);
    /**
     * Perform mathematical simplification on factor units. Only simplifies units with exponents of the same sign.
     *
     * For example,
     * ```
     * N / M * M -> N per M^2
     * ```
     *
     * @param factorUnits the factor units to simplify
     * @return the simplified factor units.
     */
    static contractExponents(factorUnits: FactorUnit[]): FactorUnit[];
    static reduceExponents(factorUnits: FactorUnit[]): FactorUnit[];
    pow(by: number): FactorUnit;
    getExponentCumulated(cumulatedExponent: number): number;
    isCompatibleWith(other: FactorUnit): boolean;
    getConversionMultiplier(other: FactorUnit): Decimal;
    equals(other?: FactorUnit): boolean;
    toString(): string;
    static combine(left: FactorUnit, right: FactorUnit): FactorUnit;
    /**
     * Combines unit IRI and sign of exponent in one string.
     */
    getKind(): string;
    getLeafFactorUnitsWithCumulativeExponents(): FactorUnit[];
    normalize(): FactorUnits;
    getAllPossibleFactorUnitCombinations(): FactorUnit[][];
    static getAllPossibleFactorUnitCombinations(factorUnits: FactorUnit[]): FactorUnit[][];
    getDimensionVector(): DimensionVector | undefined;
    static ofUnit(unit: Unit): FactorUnit;
}
//# sourceMappingURL=factorUnit.d.ts.map
