/**
 * @import { Site, Token, Word } from "@helios-lang/compiler-utils"
 * @typedef {import("../codegen/index.js").Definitions} Definitions
 */
/**
 * Base class for all statements
 * Doesn't return a value upon calling eval(scope)
 */
export class Statement {
    /**
     * @param {Site} site
     * @param {Word} name
     */
    constructor(site: Site, name: Word);
    /**
     * @readonly
     * @type {Site}
     */
    readonly site: Site;
    /**
     * @type {string}
     */
    basePath: string;
    /**
     * @private
     * @readonly
     * @type {Word}
     */
    private readonly _name;
    /**
     * @type {Word}
     */
    get name(): Word;
    /**
     * @type {string}
     */
    get path(): string;
    /**
     * @type {Statement[]}
     */
    get statements(): Statement[];
    /**
     * @param {ModuleScope} scope
     */
    eval(scope: ModuleScope): void;
    /**
     * @param {string} basePath
     */
    setBasePath(basePath: string): void;
    /**
     * Returns IR of statement.
     * No need to specify indent here, because all statements are top-level
     * @param {ToIRContext} ctx
     * @param {Definitions} map
     */
    toIR(ctx: ToIRContext, map: Definitions): void;
    /**
     * @returns {string}
     */
    toString(): string;
}
export type Definitions = import("../codegen/index.js").Definitions;
import type { Site } from "@helios-lang/compiler-utils";
import type { Word } from "@helios-lang/compiler-utils";
import { ModuleScope } from "../scopes/index.js";
import { ToIRContext } from "../codegen/index.js";
//# sourceMappingURL=Statement.d.ts.map