/**
 * @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