/// <reference types="@rbxts/compiler-types" />
/// <reference types="@rbxts/types" />
import { ZrEnum } from "@rbxts/zirconium/out/Data/Enum";
import { ZrEnumItem } from "@rbxts/zirconium/out/Data/EnumItem";
import { ZrValue } from "@rbxts/zirconium/out/Data/Locals";
import ZrObject from "@rbxts/zirconium/out/Data/Object";
import ZrRange from "@rbxts/zirconium/out/Data/Range";
import ZrUndefined from "@rbxts/zirconium/out/Data/Undefined";
import { ZrUserdata, ZrInstanceUserdata } from "@rbxts/zirconium/out/Data/Userdata";
import { ZirconFunction } from "../Class/ZirconFunction";
interface TypeId extends Pick<CheckableTypes, "string" | "number" | "boolean"> {
    undefined: ZrUndefined;
    function: ZirconFunction<any, any>;
    range: ZrRange;
    userdata: ZrUserdata<any>;
    Instance: ZrInstanceUserdata<Instance>;
    object: ZrObject;
    enum: ZrEnum;
    EnumItem: ZrEnumItem;
    array: ZrValue[];
}
export declare function zirconTypeIs<K extends keyof TypeId>(value: ZrValue | ZrUndefined, k: K): value is TypeId[K];
export declare type ZirconCheckableTypes = keyof TypeId | `enum$${string}`;
export declare function zirconTypeOf(value: ZrValue | ZrUndefined): ZirconCheckableTypes;
export declare function zirconTypeId(value: ZrValue | ZrUndefined): string;
export {};
