import { ValueKind, BrsInvalid, BrsBoolean, BrsString, Uninitialized, BrsValue, Comparable } from "./BrsType";
import { RoAssociativeArray } from "./components/RoAssociativeArray";
import { Int32 } from "./Int32";
import { Int64 } from "./Int64";
import { Float } from "./Float";
import { Double } from "./Double";
import { Callable } from "./Callable";
import { BrsCollection, BrsComponent, BrsIterable } from "./components/BrsComponent";
import { RoString } from "./components/RoString";
import { BrsInterface } from "./interfaces/BrsInterface";
import { RoInt } from "./components/RoInt";
import { RoFloat } from "./components/RoFloat";
import { RoDouble } from "./components/RoDouble";
import { RoLongInteger } from "./components/RoLongInteger";
import { RoBoolean } from "./components/RoBoolean";
import { ISGNode } from "../extensions";
export * from "./BrsType";
export * from "./Int32";
export * from "./Int64";
export * from "./Float";
export * from "./Double";
export * from "./Boxing";
export * from "./Callable";
export * from "./Coercion";
export * from "./interfaces/BrsInterface";
export * from "./interfaces/IfArray";
export * from "./interfaces/IfDraw2D";
export * from "./interfaces/IfEnum";
export * from "./interfaces/IfHttpAgent";
export * from "./interfaces/IfList";
export * from "./interfaces/IfMessagePort";
export * from "./interfaces/IfSocket";
export * from "./interfaces/IfToStr";
export * from "./components/BrsComponent";
export * from "./components/RoArray";
export * from "./components/RoByteArray";
export * from "./components/RoEVPCipher";
export * from "./components/RoEVPDigest";
export * from "./components/RoHMAC";
export * from "./components/RoDeviceCrypto";
export * from "./components/RoList";
export * from "./components/RoAssociativeArray";
export * from "./components/RoDateTime";
export * from "./components/RoTimespan";
export * from "./components/BrsObjects";
export * from "./components/RoFunction";
export * from "./components/RoRegex";
export * from "./components/RoString";
export * from "./components/RoBitmap";
export * from "./components/RoRegion";
export * from "./components/RoScreen";
export * from "./components/RoSprite";
export * from "./components/RoCompositor";
export * from "./components/RoImageMetadata";
export * from "./components/RoMessagePort";
export * from "./components/RoFontRegistry";
export * from "./components/RoFont";
export * from "./components/RoXMLElement";
export * from "./components/RoXMLList";
export * from "./components/RoBoolean";
export * from "./components/RoDouble";
export * from "./components/RoFloat";
export * from "./components/RoInt";
export * from "./components/RoLongInteger";
export * from "./components/RoInvalid";
export * from "./components/RoAppInfo";
export * from "./components/RoAppManager";
export * from "./components/RoPath";
export * from "./components/RoURLTransfer";
export * from "./components/RoHttpAgent";
export * from "./components/RoAudioPlayer";
export * from "./components/RoAudioResource";
export * from "./components/RoAudioMetadata";
export * from "./components/RoVideoPlayer";
export * from "./components/RoInput";
export * from "./components/RoSystemLog";
export * from "./components/RoLocalization";
export * from "./components/RoRegistry";
export * from "./components/RoRegistrySection";
export * from "./components/RoDeviceInfo";
export * from "./components/RoRemoteInfo";
export * from "./components/RoAppMemoryMonitor";
export * from "./components/RoFileSystem";
export * from "./components/RoChannelStore";
export * from "./components/RoSocketAddress";
export * from "./components/RoTextureRequest";
export * from "./components/RoTextureManager";
export * from "./components/RoUtils";
export * from "./events/BrsEvent";
export * from "./events/RoURLEvent";
export * from "./events/RoInputEvent";
export * from "./events/RoAudioPlayerEvent";
export * from "./events/RoVideoPlayerEvent";
export * from "./events/RoSystemLogEvent";
export * from "./events/RoDeviceInfoEvent";
export * from "./events/RoChannelStoreEvent";
export * from "./events/RoUniversalControlEvent";
/**
 * Determines whether or not the given value is a number.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` is a numeric value, otherwise `false`.
 */
export declare function isBrsNumber(value: BrsType): value is BrsNumber;
export declare const NumberKinds: Set<ValueKind>;
/**
 * Checks if a ValueKind represents a numeric type.
 * @param kind ValueKind to check
 * @returns True if the kind is a numeric type, false otherwise
 */
export declare function isNumberKind(kind: ValueKind): boolean;
export declare const PrimitiveKinds: Set<ValueKind>;
/**
 * Determines whether or not the given value is a string.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` is a string, otherwise `false`.
 */
export declare function isBrsString(value: BrsType): value is BrsString | RoString;
/**
 * Determines whether or not the given value is a boolean.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` if a boolean, otherwise `false`.
 */
export declare function isBrsBoolean(value: BrsType): value is BrsBoolean | RoBoolean;
/**
 * Determines whether or not the given value is a BrightScript callable.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` is a Callable value, otherwise `false`.
 */
export declare function isBrsCallable(value: BrsType): value is Callable;
/**
 * Determines whether or not the given value is a BrightScript collection type.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` is a collection type, otherwise `false`.
 */
export declare function isCollection(value: BrsType): value is BrsType & BrsCollection;
/**
 * Determines whether or not the provided value is an instance of a iterable BrightScript type.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` can be iterated across, otherwise `false`.
 */
export declare function isIterable(value: BrsType): value is BrsType & BrsIterable;
/**
 * Determines whether or not the given value can be compared as a number.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` can be compared as a number, otherwise `false`.
 */
export declare function isNumberComp(value: BrsType): value is BrsType & Comparable;
/**
 * Determines whether or not the given value can be compared as a string.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` can be compared as a string, otherwise `false`.
 */
export declare function isStringComp(value: BrsType): value is BrsString & Comparable;
/**
 * Determines whether or not the given value is a BrightScript boxed number.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` is a boxed number, otherwise `false`.
 */
export declare function isBoxedNumber(value: BrsType | BrsComponent): value is BoxedNumber;
/** The set of BrightScript numeric types. */
export type BrsNumber = Int32 | Int64 | Float | Double;
/** The set of BrightScript boxed numeric types. */
export type BoxedNumber = RoInt | RoFloat | RoDouble | RoLongInteger;
/**
 * Determines whether or not the given value can be converted to a number.
 * @param value the BrightScript value in question.
 * @returns `true` if `value` can be converted to a number, otherwise `false`.
 */
export declare function isAnyNumber(value: BrsType): value is BrsNumber | BoxedNumber;
/**
 * The set of all comparable BrightScript types. Only primitive (i.e. intrinsic * and unboxed)
 * BrightScript types are comparable to each other.
 */
export type BrsPrimitive = BrsInterface | BrsInvalid | BrsBoolean | BrsString | BrsNumber;
export type AllComponents = {
    kind: ValueKind.Object;
} & BrsComponent & BrsValue;
/** The set of all supported types in BrightScript. */
export type BrsType = BrsPrimitive | Callable | AllComponents | Uninitialized;
/**
 * Checks if a value is a BrightScript type.
 * @param value Value to check
 * @returns True if the value is a BrsType, false otherwise
 */
export declare function isBrsType(value: any): value is BrsType;
/** The valid ISO Date formats for roDateTime and roTimeSpan parsing */
export declare const ValidDateFormats: string[];
/**
 * Interface for a flexible object with string keys and convertible values.
 * This is to be used to behave like and convert to a BrightScript Associative Array.
 */
export interface FlexObject {
    [key: string]: BrsConvertible | BrsConvertible[] | FlexObject | FlexObject[] | Map<string, any> | SharedArrayBuffer;
}
/**
 * A type that can be converted to a BrightScript type.
 */
export type BrsConvertible = boolean | number | string | BrsType | null | undefined;
/**
 * Converts a JavaScript object or Map to a RoAssociativeArray, converting each property or entry to the corresponding BrightScript type.
 * @param input The JavaScript object or Map to convert.
 * @param {boolean} cs Whether to return an AA as case sensitive.
 * @param {Map<string, Node>} nodeMap Optional map to track nodes by ID for resolving circular references.
 * @returns A RoAssociativeArray with the converted properties or entries.
 */
export declare function toAssociativeArray(input: Map<string, any> | FlexObject, cs?: boolean, nodeMap?: Map<string, ISGNode>): RoAssociativeArray;
/**
 * Converts a value to its representation as a BrsType. If no such
 * representation is possible, throws an Error.
 * @param {any} value Some value.
 * @param {boolean} cs Whether to return an AA as case sensitive.
 * @param {Map<string, Node>} nodeMap Optional map to track nodes by ID for resolving circular references.
 * @return {BrsType} The BrsType representation of `x`.
 * @throws {Error} If `x` cannot be represented as a BrsType.
 */
export declare function brsValueOf(value: any, cs?: boolean, nodeMap?: Map<string, ISGNode>): BrsType;
/**
 * Converts a BrsType value to its representation as a JavaScript type.
 * @param {BrsType} value Some BrsType value.
 * @param {WeakSet<Node>} visitedNodes Optional set to track visited nodes for circular reference detection.
 * @return {any} The JavaScript representation of `x`.
 */
export declare function jsValueOf(value: BrsType, deep?: boolean, visitedNodes?: WeakSet<ISGNode>): any;
/**
 * Checks if a BrsType value is invalid.
 * @param value The BrsType value to check.
 * @returns True if the value is invalid, false otherwise.
 */
export declare function isInvalid(value: BrsType): boolean;
/**
 * Checks if a string represents a number and returns its precision.
 * The precision is equivalent to the Number.toPrecision() parameter (total significant digits).
 * @param {string} str - The string to check
 * @returns {number | null} - The precision (significant digits count) or null if not a valid number
 */
export declare function getFloatingPointPrecision(str: string): number | null;
