@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
107 lines • 3.17 kB
TypeScript
/**
* @import { Word } from "@helios-lang/compiler-utils"
* @typedef {import("../codegen/index.js").Definitions} Definitions
* @typedef {import("../typecheck/index.js").DataType} DataType
* @typedef {import("../typecheck/index.js").EnumMemberType} EnumMemberType
* @typedef {import("../typecheck/common.js").GenericEnumMemberTypeProps} GenericEnumMemberTypeProps
* @typedef {import("../typecheck/index.js").TypeSchema} TypeSchema
* @typedef {import("../typecheck/index.js").VariantTypeSchema} VariantTypeSchema
*/
/**
* @typedef {{
* name: Word
* path: string
* hasParameters(): boolean
* }} EnumStatementI
*/
/**
* EnumMember defintion is similar to a struct definition
* @internal
*/
export class EnumMember {
/**
* @param {number} constrIndex
* @param {Word} name
* @param {DataField[]} fields
*/
constructor(constrIndex: number, name: Word, fields: DataField[]);
/**
* Registered later
* @private
* @type {EnumStatementI | undefined}
*/
private _parent;
/**
* @readonly
* @type {number}
*/
readonly constrIndex: number;
/**
* @private
* @readonly
* @type {DataDefinition}
*/
private readonly _dataDef;
/**
* @type {Word}
*/
get name(): Word;
/**
* @param {EnumStatementI} parent
*/
registerParent(parent: EnumStatementI): void;
/**
* @type {EnumStatementI}
*/
get parent(): EnumStatementI;
/**
* @type {DataDefinition}
*/
get dataDefinition(): DataDefinition;
/**
* @param {Scope} scope
*/
evalDataFields(scope: Scope): void;
/**
* @param {Scope} scope
* @returns {(parent: DataType) => EnumMemberType}
*/
evalType(scope: Scope): (parent: DataType) => EnumMemberType;
get path(): string;
/**
* @param {ToIRContext} ctx
* @param {Definitions} map
*/
toIR(ctx: ToIRContext, map: Definitions): void;
/**
* @returns {string}
*/
toString(): string;
/**
* @param {Set<string>} parents
* @returns {VariantTypeSchema}
*/
toSchemaInternal(parents: Set<string>): VariantTypeSchema;
/**
* @param {Set<string>} parents
* @returns {TypeSchema}
*/
toSchema(parents: Set<string>): TypeSchema;
}
export type Definitions = import("../codegen/index.js").Definitions;
export type DataType = import("../typecheck/index.js").DataType;
export type EnumMemberType = import("../typecheck/index.js").EnumMemberType;
export type GenericEnumMemberTypeProps = import("../typecheck/common.js").GenericEnumMemberTypeProps;
export type TypeSchema = import("../typecheck/index.js").TypeSchema;
export type VariantTypeSchema = import("../typecheck/index.js").VariantTypeSchema;
export type EnumStatementI = {
name: Word;
path: string;
hasParameters(): boolean;
};
import type { Word } from "@helios-lang/compiler-utils";
import { DataDefinition } from "./DataDefinition.js";
import { Scope } from "../scopes/Scope.js";
import { ToIRContext } from "../codegen/index.js";
import { DataField } from "./DataField.js";
//# sourceMappingURL=EnumMember.d.ts.map