/**
 * @typedef {import("@helios-lang/compiler-utils").Site} Site
 * @typedef {import("../codegen/index.js").Definitions} Definitions
 * @typedef {import("../typecheck/index.js").InstanceMembers} InstanceMembers
 * @typedef {import("../typecheck/index.js").TypeMembers} TypeMembers
 */
/**
 * Impl statements, which add functions and constants to registry of user types (Struct, Enum Member and Enums)
 */
export class ImplDefinition {
    /**
     * @param {Expr} selfTypeExpr;
     * @param {(FuncStatement | ConstStatement)[]} statements
     */
    constructor(selfTypeExpr: Expr, statements: (FuncStatement | ConstStatement)[]);
    /**
     * @readonly
     * @type {(FuncStatement | ConstStatement)[]}
     */
    readonly statements: (FuncStatement | ConstStatement)[];
    /**
     * @private
     * @readonly
     * @type {Expr}
     */
    private readonly _selfTypeExpr;
    /**
     * @type {Site}
     */
    get site(): import("@helios-lang/compiler-utils").Site;
    /**
     * @param {string} basePath
     */
    setBasePath(basePath: string): void;
    /**
     * @returns {string}
     */
    toString(): string;
    /**
     * @param {Scope} scope
     * @returns {TypeMembers}
     */
    genTypeMembers(scope: Scope): TypeMembers;
    /**
     * Doesn't add the common types
     * @param {Scope} scope
     * @returns {InstanceMembers}
     */
    genInstanceMembers(scope: Scope): InstanceMembers;
    /**
     * @param {Scope} scope
     */
    eval(scope: Scope): void;
    /**
     * Returns IR of all impl members
     * @param {ToIRContext} ctx
     * @param {Definitions} map
     */
    toIR(ctx: ToIRContext, map: Definitions): void;
}
export type Site = import("@helios-lang/compiler-utils").Site;
export type Definitions = import("../codegen/index.js").Definitions;
export type InstanceMembers = import("../typecheck/index.js").InstanceMembers;
export type TypeMembers = import("../typecheck/index.js").TypeMembers;
import { FuncStatement } from "./FuncStatement.js";
import { ConstStatement } from "./ConstStatement.js";
import { Scope } from "../scopes/index.js";
import { ToIRContext } from "../codegen/ToIRContext.js";
import { Expr } from "../expressions/index.js";
//# sourceMappingURL=ImplDefinition.d.ts.map