@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
325 lines • 9.28 kB
TypeScript
/**
* @import { Site } from "@helios-lang/compiler-utils"
*/
/**
* @typedef {import("./common.js").TypeSchema} TypeSchema
* @typedef {import("./common.js").GenericTypeProps} GenericTypeProps
* @typedef {import("./common.js").GenericEnumMemberTypeProps} GenericEnumMemberTypeProps
* @typedef {import("./common.js").EnumMemberType} EnumMemberType
* @typedef {import("./common.js").ParameterI} ParameterI
* @typedef {import("./common.js").InferenceMap} InferenceMap
* @typedef {import("./common.js").DataType} DataType
* @typedef {import("./common.js").Func} Func
* @typedef {import("./common.js").EvalEntity} EvalEntity
* @typedef {import("./common.js").Named} Named
* @typedef {import("./common.js").Parametric} Parametric
* @typedef {import("./common.js").Type} Type
* @typedef {import("./common.js").Typed} Typed
* @typedef {import("./common.js").TypeClass} TypeClass
* @typedef {import("./common.js").InstanceMembers} InstanceMembers
* @typedef {import("./common.js").TypeMembers} TypeMembers
* @typedef {import("./common.js").TypeClassMembers} TypeClassMembers
*/
/**
* Created by statements
* @implements {DataType}
*/
export class GenericParametricType extends GenericType implements DataType {
}
/**
* Created by statements
* @implements {EnumMemberType}
* @extends {GenericEnumMemberType}
*/
export class GenericParametricEnumMemberType extends GenericEnumMemberType implements EnumMemberType {
}
/**
* @implements {Type}
*/
export class TypeClassImpl extends Common implements Type {
/**
* @param {TypeClass} typeClass
* @param {string} name
* @param {null | ParameterI} parameter - reference to original parameter, which is more unique than name
*/
constructor(typeClass: TypeClass, name: string, parameter: null | ParameterI);
/**
* @private
* @readonly
* @type {string}
*/
private readonly _name;
/**
* @private
* @readonly
* @type {null | ParameterI}
*/
private readonly _parameter;
/**
* @private
* @readonly
* @type {InstanceMembers}
*/
private readonly _instanceMembers;
/**
* @private
* @readonly
* @type {TypeMembers}
*/
private readonly _typeMembers;
/**
* @type {InstanceMembers}
*/
get instanceMembers(): import("./common.js").InstanceMembers;
/**
* @type {string}
*/
get name(): string;
/**
* @type {TypeMembers}
*/
get typeMembers(): import("./common.js").TypeMembers;
/**
* @type {Type}
*/
get asType(): import("./common.js").Type;
/**
* @internal
* @param {Site} site
* @param {InferenceMap} map
* @param {null | Type} type
* @returns {Type}
*/
infer(site: Site, map: InferenceMap, type: null | Type): Type;
/**
* Returns 'true' if 'this' is a base-type of 'type'. Throws an error if 'this' isn't a Type.
* @param {Type} type
* @returns {boolean}
*/
isBaseOf(type: Type): boolean;
/**
* @returns {Typed}
*/
toTyped(): Typed;
}
/**
* @implements {DataType}
*/
export class DataTypeClassImpl extends TypeClassImpl implements DataType {
/**
* @param {TypeClass} typeClass
* @param {string} name
* @param {string} path
* @param {null | ParameterI} parameter
*/
constructor(typeClass: TypeClass, name: string, path: string, parameter: null | ParameterI);
/**
* @private
* @readonly
* @type {string}
*/
private readonly _path;
/**
* @type {DataType}
*/
get asDataType(): import("./common.js").DataType;
/**
* @type {Named}
*/
get asNamed(): import("./common.js").Named;
/**
* @type {string[]}
*/
get fieldNames(): string[];
/**
* @type {string}
*/
get path(): string;
/**
* @param {Set<string>} parents
* @returns {TypeSchema}
*/
toSchema(parents?: Set<string>): TypeSchema;
}
/**
* @implements {TypeClass}
*/
export class AnyTypeClass extends Common implements TypeClass {
/**
* @type {TypeClass}
*/
get asTypeClass(): import("./common.js").TypeClass;
/**
* @param {Type} impl
* @returns {TypeClassMembers}
*/
genInstanceMembers(impl: Type): TypeClassMembers;
/**
* @param {Type} impl
* @returns {TypeClassMembers}
*/
genTypeMembers(impl: Type): TypeClassMembers;
/**
* @param {Type} type
* @returns {boolean}
*/
isImplementedBy(type: Type): boolean;
/**
* @param {string} name
* @param {string} path
* @param {null | ParameterI} parameter
* @returns {Type}
*/
toType(name: string, path: string, parameter?: null | ParameterI): Type;
}
/**
* @implements {TypeClass}
*/
export class DefaultTypeClass extends Common implements TypeClass {
/**
* @type {TypeClass}
*/
get asTypeClass(): import("./common.js").TypeClass;
/**
* @param {Type} impl
* @returns {TypeClassMembers}
*/
genTypeMembers(impl: Type): TypeClassMembers;
/**
* @param {Type} impl
* @returns {TypeClassMembers}
*/
genInstanceMembers(impl: Type): TypeClassMembers;
/**
* @param {Type} type
* @returns {boolean}
*/
isImplementedBy(type: Type): boolean;
/**
* @param {string} name
* @param {string} path
* @param {null | ParameterI} parameter
* @returns {DataType}
*/
toType(name: string, path: string, parameter?: null | ParameterI): DataType;
}
/**
* @implements {TypeClass}
*/
export class SummableTypeClass extends Common implements TypeClass {
/**
* @type {TypeClass}
*/
get asTypeClass(): import("./common.js").TypeClass;
/**
* @param {Type} impl
* @returns {TypeClassMembers}
*/
genTypeMembers(impl: Type): TypeClassMembers;
/**
* @param {Type} impl
* @returns {TypeClassMembers}
*/
genInstanceMembers(impl: Type): TypeClassMembers;
/**
* @param {Type} type
* @returns {boolean}
*/
isImplementedBy(type: Type): boolean;
/**
* @param {string} name
* @param {string} path
* @param {null | ParameterI} parameter
* @returns {DataType}
*/
toType(name: string, path: string, parameter?: null | ParameterI): DataType;
}
/**
* @implements {Parametric}
*/
export class ParametricType extends Common implements Parametric {
/**
* @param {{
* name: string,
* parameters: Parameter[]
* apply: (types: Type[]) => DataType
* }} props
*/
constructor({ name, parameters, apply }: {
name: string;
parameters: Parameter[];
apply: (types: Type[]) => DataType;
});
/**
* @private
* @readonly
* @type {string}
*/
private readonly _name;
/**
* @private
* @readonly
* @type {Parameter[]}
*/
private readonly _parameters;
/**
* @private
* @readonly
* @type {(types: Type[]) => DataType}
*/
private readonly _apply;
/**
* @type {Parametric}
*/
get asParametric(): import("./common.js").Parametric;
/**
* @type {TypeClass[]}
*/
get typeClasses(): import("./common.js").TypeClass[];
/**
* @param {Type[]} types
* @param {Site} site
* @returns {EvalEntity}
*/
apply(types: Type[], site?: Site): EvalEntity;
/**
* Must infer before calling
* @param {Site} site
* @param {Typed[]} args
* @param {{[name: string]: Typed}} namedArgs
* @param {Type[]} paramTypes - so that paramTypes can be accessed by caller
* @returns {Func}
*/
inferCall(site: Site, args: Typed[], namedArgs?: {
[name: string]: Typed;
}, paramTypes?: Type[]): Func;
/**
* @param {Site} site
* @param {InferenceMap} map
* @returns {Parametric}
*/
infer(site: Site, map: InferenceMap): Parametric;
}
export type TypeSchema = import("./common.js").TypeSchema;
export type GenericTypeProps = import("./common.js").GenericTypeProps;
export type GenericEnumMemberTypeProps = import("./common.js").GenericEnumMemberTypeProps;
export type EnumMemberType = import("./common.js").EnumMemberType;
export type ParameterI = import("./common.js").ParameterI;
export type InferenceMap = import("./common.js").InferenceMap;
export type DataType = import("./common.js").DataType;
export type Func = import("./common.js").Func;
export type EvalEntity = import("./common.js").EvalEntity;
export type Named = import("./common.js").Named;
export type Parametric = import("./common.js").Parametric;
export type Type = import("./common.js").Type;
export type Typed = import("./common.js").Typed;
export type TypeClass = import("./common.js").TypeClass;
export type InstanceMembers = import("./common.js").InstanceMembers;
export type TypeMembers = import("./common.js").TypeMembers;
export type TypeClassMembers = import("./common.js").TypeClassMembers;
import { GenericType } from "./common.js";
import { GenericEnumMemberType } from "./common.js";
import { Common } from "./common.js";
import type { Site } from "@helios-lang/compiler-utils";
import { Parameter } from "./Parameter.js";
//# sourceMappingURL=parametric.d.ts.map