/**
 * @import { Site, Word } from "@helios-lang/compiler-utils"
 * @typedef {import("@helios-lang/ir").SourceMappedStringI} SourceMappedStringI
 * @typedef {import("../typecheck/index.js").Type} Type
 */
/**
 * NameTypePair is base class of FuncArg and DataField (differs from StructLiteralField)
 */
export class NameTypePair {
    /**
     * @param {Word} name
     * @param {Expr | undefined} typeExpr
     */
    constructor(name: Word, typeExpr: Expr | undefined);
    /**
     * @private
     * @readonly
     * @type {Word}
     */
    private readonly _name;
    /**
     * @private
     * @readonly
     * @type {Expr | undefined}
     */
    private readonly _typeExpr;
    /**
     * @type {Site}
     */
    get site(): Site;
    /**
     * @type {Word}
     */
    get name(): Word;
    /**
     * Throws an error if called before evalType()
     * @type {Type}
     */
    get type(): import("../typecheck/common.js").Type;
    /**
     * @type {Expr | undefined}
     */
    get typeExpr(): Expr | undefined;
    /**
     * @type {string}
     */
    get typeName(): string;
    /**
     * @returns {boolean}
     */
    isIgnored(): boolean;
    /**
     * @returns {boolean}
     */
    hasType(): boolean;
    /**
     * Evaluates the type, used by FuncLiteralExpr and DataDefinition
     * @param {Scope} scope
     * @returns {Type}
     */
    evalType(scope: Scope): Type;
    /**
     * @returns {SourceMappedStringI}
     */
    toIR(): SourceMappedStringI;
    /**
     *
     * @returns {string}
     */
    toString(): string;
}
export type SourceMappedStringI = import("@helios-lang/ir").SourceMappedStringI;
export type Type = import("../typecheck/index.js").Type;
import type { Site } from "@helios-lang/compiler-utils";
import type { Word } from "@helios-lang/compiler-utils";
import { Expr } from "./Expr.js";
import { Scope } from "../scopes/index.js";
//# sourceMappingURL=NameTypePair.d.ts.map