import type { NobjcObject } from "objc-js";
import type { _NSDecimalNumberBehaviors } from "./NSDecimalNumberBehaviors.js";
import type { _NSDecimalNumberHandler } from "./NSDecimalNumberHandler.js";
import type { _NSNumber } from "./NSNumber.js";
import type { _NSString } from "./NSString.js";
import type { NSDecimal } from "../structs/NSDecimal.js";
export declare class _NSDecimalNumber extends _NSNumber {
    static alloc(): _NSDecimalNumber;
    static new(): _NSDecimalNumber;
    init(): _NSDecimalNumber;
    static decimalNumberWithMantissa$exponent$isNegative$(mantissa: number, exponent: number, flag: boolean): _NSDecimalNumber;
    static decimalNumberWithDecimal$(dcm: NSDecimal): _NSDecimalNumber;
    static decimalNumberWithString$(numberValue: _NSString | null): _NSDecimalNumber;
    static decimalNumberWithString$locale$(numberValue: _NSString | null, locale: NobjcObject | null): _NSDecimalNumber;
    static zero(): _NSDecimalNumber;
    static one(): _NSDecimalNumber;
    static minimumDecimalNumber(): _NSDecimalNumber;
    static maximumDecimalNumber(): _NSDecimalNumber;
    static notANumber(): _NSDecimalNumber;
    /** compare two NSDecimalNumbers */
    static defaultBehavior(): _NSDecimalNumberHandler;
    static setDefaultBehavior$(value: _NSDecimalNumberBehaviors): void;
    initWithMantissa$exponent$isNegative$(mantissa: number, exponent: number, flag: boolean): _NSDecimalNumber;
    initWithDecimal$(dcm: NSDecimal): _NSDecimalNumber;
    initWithString$(numberValue: _NSString | null): _NSDecimalNumber;
    initWithString$locale$(numberValue: _NSString | null, locale: NobjcObject | null): _NSDecimalNumber;
    descriptionWithLocale$(locale: NobjcObject | null): _NSString;
    decimalNumberByAdding$(decimalNumber: _NSDecimalNumber): _NSDecimalNumber;
    decimalNumberByAdding$withBehavior$(decimalNumber: _NSDecimalNumber, behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    decimalNumberBySubtracting$(decimalNumber: _NSDecimalNumber): _NSDecimalNumber;
    decimalNumberBySubtracting$withBehavior$(decimalNumber: _NSDecimalNumber, behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    decimalNumberByMultiplyingBy$(decimalNumber: _NSDecimalNumber): _NSDecimalNumber;
    decimalNumberByMultiplyingBy$withBehavior$(decimalNumber: _NSDecimalNumber, behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    decimalNumberByDividingBy$(decimalNumber: _NSDecimalNumber): _NSDecimalNumber;
    decimalNumberByDividingBy$withBehavior$(decimalNumber: _NSDecimalNumber, behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    decimalNumberByRaisingToPower$(power: number): _NSDecimalNumber;
    decimalNumberByRaisingToPower$withBehavior$(power: number, behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    decimalNumberByMultiplyingByPowerOf10$(power: number): _NSDecimalNumber;
    decimalNumberByMultiplyingByPowerOf10$withBehavior$(power: number, behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    decimalNumberByRoundingAccordingToBehavior$(behavior: _NSDecimalNumberBehaviors | null): _NSDecimalNumber;
    /** Round to the scale of the behavior. */
    compare$(decimalNumber: _NSNumber): number;
    decimalValue(): NSDecimal;
    /**
     * One behavior per thread - The default behavior is rounding mode: NSRoundPlain scale: No defined scale (full precision) ignore exactnessException raise on overflow, underflow and divide by zero.
     */
    objCType(): string;
    /** return 'd' for double */
    doubleValue(): number;
}
