import type { NobjcObject } from "objc-js";
import type { _NSCopying } from "./NSCopying.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSSecureCoding } from "./NSSecureCoding.js";
import type { _NSUnit } from "./NSUnit.js";
export declare class _NSMeasurement extends _NSObject {
    static alloc(): _NSMeasurement;
    static new(): _NSMeasurement;
    init(): _NSMeasurement;
    initWithDoubleValue$unit$(doubleValue: number, unit: NobjcObject): _NSMeasurement;
    /**
     * Given an NSUnit object, canBeConvertedToUnit: will check for dimensionality i.e. check the unit type (NSUnitAngle, NSUnitLength, NSUnitCustom, etc.) of the NSUnit object. It will return YES if the unit type of the given unit is the same as the unit type of the unit within the NSMeasurement object and NO if not. Note: This method will return NO if given or called on a dimensionless unit.
     */
    canBeConvertedToUnit$(unit: _NSUnit): boolean;
    /**
     * Given an NSUnit object, measurementByConvertingUnit: will first check for dimensionality i.e. check the unit type (NSUnitAngle, NSUnitLength, NSUnitCustom, etc.) of the NSUnit object. If the unit type of the given unit is not the same as the unit type of the unit within the NSMeasurement object (i.e. the units are of differing dimensionalities), measurementByConvertingToUnit: will throw an InvalidArgumentException. @return A new NSMeasurement object with the given unit and converted value.
     */
    measurementByConvertingToUnit$(unit: _NSUnit): _NSMeasurement;
    /**
     * Given an NSMeasurement object, these methods will first check for dimensionality i.e. check the unit type (NSUnitAngle, NSUnitLength, NSUnitCustom, etc.) of the unit contained in that object. If the unit type of the unit in the given NSMeasurement object is not the same as the unit type of the unit within the current NSMeasurement instance (i.e. the units are of differing dimensionalities), these methods will throw an InvalidArgumentException. @return A new NSMeasurement object with the adjusted value and a unit that is the same type as the current NSMeasurement instance.
     */
    measurementByAddingMeasurement$(measurement: _NSMeasurement): _NSMeasurement;
    measurementBySubtractingMeasurement$(measurement: _NSMeasurement): _NSMeasurement;
    unit(): NobjcObject;
    doubleValue(): number;
}
export interface _NSMeasurement extends _NSCopying, _NSSecureCoding {
}
