/**
 * @import { Site, Word } from "@helios-lang/compiler-utils"
 * @typedef {import("../codegen/index.js").Definitions} Definitions
 * @typedef {import("../typecheck/index.js").GenericTypeProps} GenericTypeProps
 * @typedef {import("../typecheck/index.js").Type} Type
 * @typedef {import("../typecheck/index.js").TypeSchema} TypeSchema
 * @typedef {import("../typecheck/index.js").StructTypeSchema} StructTypeSchema
 */
/**
 * Struct statement
 */
export class StructStatement extends Statement {
    /**
     * @param {Site} site
     * @param {Word} name
     * @param {TypeParameters} parameters
     * @param {DataField[]} fields
     * @param {ImplDefinition} impl
     */
    constructor(site: Site, name: Word, parameters: TypeParameters, fields: DataField[], impl: ImplDefinition);
    /**
     * @private
     * @readonly
     * @type {TypeParameters}
     */
    private readonly _parameters;
    /**
     * @private
     * @readonly
     * @type {DataDefinition}
     */
    private readonly _dataDef;
    /**
     * @private
     * @readonly
     * @type {ImplDefinition}
     */
    private readonly _impl;
    /**
     * Evaluates own type and adds to scope
     * @param {TopScope} scope
     */
    eval(scope: TopScope): void;
    /**
     * @param {ToIRContext} ctx
     * @param {Definitions} map
     */
    toIR_mStructEq(ctx: ToIRContext, map: Definitions): void;
    /**
     * @param {ToIRContext} ctx
     * @param {Definitions} map
     */
    toIR_mStructNeq(ctx: ToIRContext, map: Definitions): void;
    /**
     * @param {ToIRContext} ctx
     * @param {Definitions} map
     */
    toIR_mStruct(ctx: ToIRContext, map: Definitions): void;
    /**
     * @param {ToIRContext} ctx
     * @param {Definitions} map
     */
    toIR_fStruct(ctx: ToIRContext, map: Definitions): void;
}
export type Definitions = import("../codegen/index.js").Definitions;
export type GenericTypeProps = import("../typecheck/index.js").GenericTypeProps;
export type Type = import("../typecheck/index.js").Type;
export type TypeSchema = import("../typecheck/index.js").TypeSchema;
export type StructTypeSchema = import("../typecheck/index.js").StructTypeSchema;
import { Statement } from "./Statement.js";
import { TopScope } from "../scopes/index.js";
import { ToIRContext } from "../codegen/index.js";
import type { Site } from "@helios-lang/compiler-utils";
import type { Word } from "@helios-lang/compiler-utils";
import { TypeParameters } from "./TypeParameters.js";
import { DataField } from "./DataField.js";
import { ImplDefinition } from "./ImplDefinition.js";
//# sourceMappingURL=StructStatement.d.ts.map