import { SupportsEquals } from "./baseTypes.js";
import { LangString } from "./langString.js";
import { Prefix } from "./prefix.js";
import { QuantityKind } from "./quantityKind.js";
import { FactorUnit } from "./factorUnit.js";
import { FactorUnits } from "./factorUnits.js";
import { Decimal } from "decimal.js";
export declare class Unit implements SupportsEquals<Unit> {
    readonly iri: string;
    readonly labels: LangString[];
    readonly currencyCode: string | undefined;
    readonly currencyNumber: number | undefined;
    readonly prefixIri?: string;
    prefix?: Prefix;
    readonly conversionMultiplier: Decimal;
    readonly conversionOffset: Decimal;
    readonly quantityKindIris: string[];
    readonly quantityKinds: QuantityKind[];
    readonly exactMatchIris: string[];
    readonly symbol?: string;
    readonly scalingOfIri?: string;
    scalingOf?: Unit;
    readonly dimensionVectorIri?: string;
    factorUnits: FactorUnits;
    readonly unitOfSystemIris: string[];
    private static TEMPERATURE_DIFFERENCE;
    constructor(iri: string, quantityKindIris?: string[], exactMatchIris?: string[], dimensionVectorIri?: string, conversionMultiplier?: Decimal, conversionOffset?: Decimal, prefixIri?: string, scalingOfIri?: string, scalingOf?: Unit, symbol?: string, labels?: LangString[], currencyCode?: string, currencyNumber?: number, unitOfSystemIris?: string[]);
    equals(other?: Unit): boolean;
    toString(): string;
    getIriLocalname(): string;
    getIriAbbreviated(): string;
    isCurrencyUnit(): boolean;
    matchesFactorUnitSpec(...factorUnitSpec: (number | Unit)[]): boolean;
    matches(selection: FactorUnits): boolean;
    hasFactorUnits(): boolean;
    /**
     * Returns true if this unit is defined to be another unit, such as litre is defined as cubic decimetre.
     */
    isDefinedAsOtherUnit(): boolean;
    isScaled(): boolean;
    hasSymbol(): boolean;
    isConvertible(toUnit: Unit): boolean;
    getConversionMultiplier(toUnit: Unit): Decimal;
    private findInBasesRecursively;
    isSameScaleAs(other: Unit): boolean;
    static isUnitless(unit: Unit): boolean;
    convert(value: Decimal, toUnit: Unit, quantityKind?: QuantityKind): Decimal;
    addLabel(label: LangString): void;
    addQuantityKindIri(quantityKindIri: string): void;
    addExactMatchIri(exactMatchIri: string): void;
    hasLabel(label: string): boolean;
    getLabelForLanguageTag(languageTag: string): string | undefined;
    addQuantityKind(quantityKind: QuantityKind): void;
    setFactorUnits(factorUnits: FactorUnits): void;
    setPrefix(prefix: Prefix): void;
    setScalingOf(scalingOf: Unit): void;
    /**
     * Returns this unit as a set of exponent-reduced factors, unless they are two factors that cancel each other out, in
     * which case return the unit as a factor unit with exponent 1. For example, Steradian is m²/m² and will
     * therefore return SR.
     */
    normalize(): FactorUnits;
    getLeafFactorUnitsWithCumulativeExponents(): FactorUnit[];
    getAllPossibleFactorUnitCombinations(): FactorUnit[][];
    conversionOffsetDiffers(other: Unit): boolean;
    hasNonzeroConversionOffset(): boolean;
}
//# sourceMappingURL=unit.d.ts.map
