@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
104 lines • 3.55 kB
TypeScript
/**
* @typedef {import("@helios-lang/type-utils").EnumTypeSchema} EnumTypeSchema
* @typedef {import("../codegen/index.js").Definitions} Definitions
* @typedef {import("../typecheck/index.js").DataType} DataType
* @typedef {import("../typecheck/index.js").TypeSchema} TypeSchema
* @typedef {import("./EntryPoint.js").EntryPoint} EntryPoint
*/
/**
* Note: all FuncArgs are converted from data to primitive format, so from an external PoV none of them are ignored, and there is no need for an `isIgnored` flag
* @typedef {{
* name: string
* isOptional: boolean
* type: TypeSchema
* }} AnalyzedFuncArg
*/
/**
* If `returns` isn't set, the function returns undefined (i.e. void or unit)
* @typedef {{
* name: string
* requiresScriptContext: boolean
* requiresCurrentScript: boolean
* arguments: AnalyzedFuncArg[]
* returns?: TypeSchema
* }} AnalyzedFunc
*/
/**
* @typedef {{
* name: string
* purpose: string
* sourceCode: string
* moduleDepedencies: string[]
* types: Record<string, TypeSchema>
* functions: Record<string, AnalyzedFunc>
* }} AnalyzedModule
*/
/**
* Note: `hashDependencies` doesn't contain the indirect dependencies! It must be kept to a minimum in order to inform in which order the validators must be compiled
* @typedef {AnalyzedModule & {
* hashDependencies: string[]
* Redeemer: TypeSchema
* currentScriptIndex?: number
* Datum?: TypeSchema
* }} AnalyzedValidator
*/
/**
* Maps purposes to concrete ScriptHashTypes
* @param {string} purpose
* @returns {ScriptHashType}
*/
export function getScriptHashType(purpose: string): ScriptHashType;
/**
* @param {string[]} validatorSources
* @param {string[]} moduleSources
* @returns {{
* modules: Record<string, AnalyzedModule>,
* validators: Record<string, AnalyzedValidator>
* }}
*/
export function analyzeMulti(validatorSources: string[], moduleSources: string[]): {
modules: Record<string, AnalyzedModule>;
validators: Record<string, AnalyzedValidator>;
};
export type EnumTypeSchema = import("@helios-lang/type-utils").EnumTypeSchema;
export type Definitions = import("../codegen/index.js").Definitions;
export type DataType = import("../typecheck/index.js").DataType;
export type TypeSchema = import("../typecheck/index.js").TypeSchema;
export type EntryPoint = import("./EntryPoint.js").EntryPoint;
/**
* Note: all FuncArgs are converted from data to primitive format, so from an external PoV none of them are ignored, and there is no need for an `isIgnored` flag
*/
export type AnalyzedFuncArg = {
name: string;
isOptional: boolean;
type: TypeSchema;
};
/**
* If `returns` isn't set, the function returns undefined (i.e. void or unit)
*/
export type AnalyzedFunc = {
name: string;
requiresScriptContext: boolean;
requiresCurrentScript: boolean;
arguments: AnalyzedFuncArg[];
returns?: TypeSchema;
};
export type AnalyzedModule = {
name: string;
purpose: string;
sourceCode: string;
moduleDepedencies: string[];
types: Record<string, TypeSchema>;
functions: Record<string, AnalyzedFunc>;
};
/**
* Note: `hashDependencies` doesn't contain the indirect dependencies! It must be kept to a minimum in order to inform in which order the validators must be compiled
*/
export type AnalyzedValidator = AnalyzedModule & {
hashDependencies: string[];
Redeemer: TypeSchema;
currentScriptIndex?: number;
Datum?: TypeSchema;
};
import { ScriptHashType } from "../typecheck/index.js";
//# sourceMappingURL=multi.d.ts.map