/**
 * @typedef {import("@helios-lang/compiler-utils").Site} Site
 * @typedef {import("./common.js").Func} Func
 * @typedef {import("./common.js").Named} Named
 * @typedef {import("./common.js").Type} Type
 * @typedef {import("./common.js").Typed} Typed
 */
/**
 * Used by print, error, and assert
 * @implements {Func}
 * @implements {Named}
 */
export class BuiltinFunc extends Common implements Func, Named {
    /**
     *
     * @param {{
     *   name: string,
     *   type: FuncType
     * }} props
     */
    constructor({ name, type }: {
        name: string;
        type: FuncType;
    });
    /**
     * @private
     * @readonly
     * @type {string}
     */
    private readonly _name;
    /**
     * @private
     * @readonly
     * @type {FuncType}
     */
    private readonly _type;
    /**
     * @type {string}
     */
    get name(): string;
    /**
     * @type {string}
     */
    get path(): string;
    /**
     * @type {Type}
     */
    get type(): import("./common.js").Type;
    /**
     * @type {FuncType}
     */
    get funcType(): FuncType;
    /**
     * @type {Func}
     */
    get asFunc(): import("./common.js").Func;
    /**
     * @type {Named}
     */
    get asNamed(): import("./common.js").Named;
    /**
     * @type {Typed}
     */
    get asTyped(): import("./common.js").Typed;
    /**
     * Can mutate the args and the namedArgs in case of casting
     * @param {Site} site
     * @param {Typed[]} args
     * @param {{[name: string]: Typed}} namedArgs
     * @returns {Typed}
     */
    call(site: Site, args: Typed[], namedArgs?: {
        [name: string]: Typed;
    }): Typed;
}
/**
 * Special builtin function that throws an error if condition is false and returns Void
 */
export const AssertFunc: BuiltinFunc;
/**
 * Special builtin function that throws an error and returns ErrorInstance (special case of Void)
 */
export const ErrorFunc: BuiltinFunc;
/**
 * Special builtin function that prints a message and returns void
 */
export const PrintFunc: BuiltinFunc;
export type Site = import("@helios-lang/compiler-utils").Site;
export type Func = import("./common.js").Func;
export type Named = import("./common.js").Named;
export type Type = import("./common.js").Type;
export type Typed = import("./common.js").Typed;
import { Common } from "./common.js";
import { FuncType } from "./common.js";
//# sourceMappingURL=builtin-funcs.d.ts.map