import { BooleanValue, UndefinedValue, JSStringValue, NumberValue, ObjectValue, Value } from '../value.mts';
import { type ExpressionCompletion } from '../completion.mts';
import type { TypedArrayObject } from '../intrinsics/TypedArray.mts';
/** https://tc39.es/ecma262/#sec-testing-and-comparison-operations */
/** https://tc39.es/ecma262/#sec-requireobjectcoercible */
export declare function RequireObjectCoercible(argument: Value): Value | {
    readonly Type: "throw";
    readonly Value: Value;
    readonly Target: undefined;
    readonly stack: Error | undefined;
    mark(m: import("../engine.mts").GCMarker): void;
};
/** https://tc39.es/ecma262/#sec-isarray */
export declare function IsArray(argument: Value): BooleanValue<false> | BooleanValue<true> | {
    readonly Type: "throw";
    readonly Value: Value;
    readonly Target: undefined;
    readonly stack: Error | undefined;
    mark(m: import("../engine.mts").GCMarker): void;
};
/** https://tc39.es/ecma262/#sec-iscallable */
export declare function IsCallable(argument: Value): BooleanValue;
/** https://tc39.es/ecma262/#sec-isconstructor */
export declare function IsConstructor(argument: Value): BooleanValue<false> | BooleanValue<true>;
/** https://tc39.es/ecma262/#sec-isextensible-o */
export declare function IsExtensible(O: ObjectValue): ExpressionCompletion<BooleanValue<boolean>>;
/** https://tc39.es/ecma262/#sec-isinteger */
export declare function IsIntegralNumber(argument: Value): BooleanValue<false> | BooleanValue<true>;
/** https://tc39.es/ecma262/#sec-ispropertykey */
export declare function IsPropertyKey(argument: unknown): boolean;
/** https://tc39.es/ecma262/#sec-isregexp */
export declare function IsRegExp(argument: Value): ExpressionCompletion<BooleanValue>;
/** https://tc39.es/ecma262/#sec-isstringprefix */
export declare function IsStringPrefix(p: JSStringValue, q: JSStringValue): boolean;
/** https://tc39.es/ecma262/#sec-samevalue */
export declare function SameValue(x: Value, y: Value): BooleanValue<false> | BooleanValue<true>;
/** https://tc39.es/ecma262/#sec-samevaluezero */
export declare function SameValueZero(x: Value, y: Value): BooleanValue<false> | BooleanValue<true>;
/** https://tc39.es/ecma262/#sec-samevaluenonnumber */
export declare function SameValueNonNumber(x: Value, y: Value): BooleanValue<false> | BooleanValue<true>;
/** https://tc39.es/ecma262/#sec-abstract-relational-comparison */
export declare function AbstractRelationalComparison(x: Value, y: Value, LeftFirst?: boolean): ExpressionCompletion<BooleanValue | UndefinedValue>;
/** https://tc39.es/ecma262/#sec-abstract-equality-comparison */
export declare function AbstractEqualityComparison(x: Value, y: Value): ExpressionCompletion<BooleanValue>;
/** https://tc39.es/ecma262/#sec-isstrictlyequal */
export declare function IsStrictlyEqual(x: Value, y: Value): BooleanValue<false> | BooleanValue<true>;
/** https://tc39.es/ecma262/#sec-isvalidintegerindex */
export declare function IsValidIntegerIndex(O: TypedArrayObject, index: NumberValue): BooleanValue<false> | BooleanValue<true>;
//# sourceMappingURL=testing-comparison.d.mts.map