/**
 * @import { Word } from "@helios-lang/compiler-utils"
 * @typedef {import("../typecheck/index.js").DataType} DataType
 * @typedef {import("../typecheck/index.js").EvalEntity} EvalEntity
 * @typedef {import("../typecheck/index.js").Func} Func
 * @typedef {import("../typecheck/index.js").MultiValidatorInfo} MultiValidatorInfo
 * @typedef {import("../typecheck/index.js").Named} Named
 * @typedef {import("../typecheck/index.js").Namespace} Namespace
 * @typedef {import("../typecheck/index.js").Parametric} Parametric
 * @typedef {import("../typecheck/index.js").Type} Type
 * @typedef {import("../typecheck/index.js").ScriptTypes} ScriptTypes
 */
/**
 * Setting information allows making the scope multi-validator aware
 * @typedef {{
 *   currentScript?: string
 *   scriptTypes?: ScriptTypes
 * }} GlobalScopeConfig
 */
/**
 * @type {{[name: string]: (info: MultiValidatorInfo) => NamedNamespace}}
 */
export const builtinNamespaces: {
    [name: string]: (info: MultiValidatorInfo) => NamedNamespace;
};
/**
 * @type {{[name: string]: DataType}}
 */
export const builtinTypes: {
    [name: string]: DataType;
};
/**
 * GlobalScope sits above the top-level scope and contains references to all the builtin Values and Types
 */
export class GlobalScope {
    /**
     * Initialize the GlobalScope with all the builtins
     * @param {MultiValidatorInfo} info
     * @returns {GlobalScope}
     */
    static "new"(info: MultiValidatorInfo): GlobalScope;
    /**
     * @private
     * @readonly
     * @type {[Word, EvalEntity][]}
     */
    private readonly _values;
    /**
     * Checks if scope contains a name
     * @param {Word} name
     * @returns {boolean}
     */
    has(name: Word): boolean;
    /**
     * Sets a global name, doesn't check for uniqueness
     * Called when initializing GlobalScope
     * @param {string | Word} name
     * @param {EvalEntity} value
     */
    set(name: string | Word, value: EvalEntity): void;
    /**
     * Gets a named value from the scope.
     * Throws an error if not found.
     * @param {Word} name
     * @returns {EvalEntity}
     */
    get(name: Word): EvalEntity;
    /**
     * @param {Word} name
     * @returns {(Named & Namespace) | undefined}
     */
    getBuiltinNamespace(name: Word): (Named & Namespace) | undefined;
    /**
     * @returns {boolean}
     */
    isStrict(): boolean;
    /**
     * @param {(name: string, type: Type) => void} callback
     */
    loopTypes(callback: (name: string, type: Type) => void): void;
}
export type DataType = import("../typecheck/index.js").DataType;
export type EvalEntity = import("../typecheck/index.js").EvalEntity;
export type Func = import("../typecheck/index.js").Func;
export type MultiValidatorInfo = import("../typecheck/index.js").MultiValidatorInfo;
export type Named = import("../typecheck/index.js").Named;
export type Namespace = import("../typecheck/index.js").Namespace;
export type Parametric = import("../typecheck/index.js").Parametric;
export type Type = import("../typecheck/index.js").Type;
export type ScriptTypes = import("../typecheck/index.js").ScriptTypes;
/**
 * Setting information allows making the scope multi-validator aware
 */
export type GlobalScopeConfig = {
    currentScript?: string;
    scriptTypes?: ScriptTypes;
};
import { NamedNamespace } from "../typecheck/index.js";
import type { Word } from "@helios-lang/compiler-utils";
//# sourceMappingURL=GlobalScope.d.ts.map