import { BrsType, BrsBoolean } from ".";
import { ValueKind, Comparable } from "./BrsType";
import { BrsNumber, Numeric } from "./BrsNumber";
import { Int32 } from "./Int32";
import { Int64 } from "./Int64";
import { Float } from "./Float";
import { RoDouble } from "./components/RoDouble";
import { Boxable } from "./Boxing";
import Long from "long";
export declare class Double implements Numeric, Comparable, Boxable {
    inArray: boolean;
    readonly kind = ValueKind.Double;
    private readonly value;
    getValue(): number;
    toBoolean(): boolean;
    /**
     * Creates a new BrightScript double-precision value representing the provided `value`.
     * @param value the value to store in the BrightScript double, rounded to 64-bit (double)
     *              precision.
     */
    constructor(value: number | Long, inArray?: boolean);
    /**
     * Creates a new BrightScript double-precision value representing the floating point value
     * contained in `asString`.
     * @param asString the string representation of the value to store in the BrightScript double.
     *                 Will be rounded to 64-bit (double) precision.
     * @returns a BrightScript double value representing `asString`.
     */
    static fromString(asString: string): Double;
    add(rhs: BrsNumber): BrsNumber;
    subtract(rhs: BrsNumber): BrsNumber;
    multiply(rhs: BrsNumber): BrsNumber;
    divide(rhs: BrsNumber): Float | Double;
    modulo(rhs: BrsNumber): BrsNumber;
    intDivide(rhs: BrsNumber): Int32 | Int64;
    leftShift(rhs: BrsNumber): Int32;
    rightShift(rhs: BrsNumber): Int32;
    pow(exponent: BrsNumber): BrsNumber;
    and(rhs: BrsNumber | BrsBoolean): BrsNumber | BrsBoolean;
    or(rhs: BrsNumber | BrsBoolean): BrsNumber | BrsBoolean;
    not(): BrsNumber;
    lessThan(other: BrsType): BrsBoolean;
    greaterThan(other: BrsType): BrsBoolean;
    equalTo(other: BrsType): BrsBoolean;
    toString(parent?: BrsType): string;
    box(): RoDouble;
}
