import { BooleanValue, UndefinedValue, JSStringValue, ObjectValue, Value } from '../value.mts';
import { type ValueEvaluator } from '../completion.mts';
import { type FunctionObject, type PropertyKeyValue } from '#self';
/** https://tc39.es/ecma262/#sec-testing-and-comparison-operations */
/** https://tc39.es/ecma262/#sec-requireobjectcoercible */
export declare function RequireObjectCoercible(argument: Value): {
    readonly Type: "throw";
    readonly Value: Value;
    readonly Target: undefined;
    readonly stack: Error | undefined;
    mark(m: import("#self").GCMarker): void;
} | undefined;
/** https://tc39.es/ecma262/#sec-isarray */
export declare function IsArray(argument: Value): {
    readonly Type: "throw";
    readonly Value: Value;
    readonly Target: undefined;
    readonly stack: Error | undefined;
    mark(m: import("#self").GCMarker): void;
} | BooleanValue<true> | BooleanValue<false>;
/** https://tc39.es/ecma262/#sec-iscallable */
export declare function IsCallable(argument: Value): argument is FunctionObject;
/** https://tc39.es/ecma262/#sec-isconstructor */
export declare function IsConstructor(argument: Value): argument is FunctionObject;
/** https://tc39.es/ecma262/#sec-isextensible-o */
export declare function IsExtensible(O: ObjectValue): Generator<import("#self").EvaluatorYieldType, import("#self").ValueCompletion<BooleanValue<boolean>>, import("#self").EvaluatorNextType>;
/** https://tc39.es/ecma262/#sec-isinteger */
export declare function IsIntegralNumber(argument: Value): BooleanValue<true> | BooleanValue<false>;
/** https://tc39.es/ecma262/#sec-ispropertykey */
export declare function IsPropertyKey(argument: unknown): argument is PropertyKeyValue;
/** https://tc39.es/ecma262/#sec-isregexp */
export declare function IsRegExp(argument: Value): ValueEvaluator<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<true> | BooleanValue<false>;
/** https://tc39.es/ecma262/#sec-samevaluezero */
export declare function SameValueZero(x: Value, y: Value): BooleanValue<true> | BooleanValue<false>;
/** https://tc39.es/ecma262/#sec-samevaluenonnumber */
export declare function SameValueNonNumber(x: Value, y: Value): BooleanValue<true> | BooleanValue<false>;
/** https://tc39.es/ecma262/#sec-abstract-relational-comparison */
export declare function AbstractRelationalComparison(x: Value, y: Value, LeftFirst?: boolean): ValueEvaluator<BooleanValue | UndefinedValue>;
/** https://tc39.es/ecma262/#sec-islooselyequal */
export declare function IsLooselyEqual(x: Value, y: Value): ValueEvaluator<BooleanValue>;
/** https://tc39.es/ecma262/#sec-isstrictlyequal */
export declare function IsStrictlyEqual(x: Value, y: Value): BooleanValue<true> | BooleanValue<false>;
//# sourceMappingURL=testing-comparison.d.mts.map