@helios-lang/compiler
Version:
Helios is a Domain Specific Language that compiles to Plutus-Core (i.e. Cardano on-chain validator scripts). Helios is a non-Haskell alternative to Plutus. With this library you can compile Helios scripts and build Cardano transactions, all you need to bu
100 lines • 3.44 kB
TypeScript
/**
* @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