/**
 * @typedef {import("@helios-lang/ir").SourceMappedStringI} SourceMappedStringI
 * @typedef {import("./Definitions.js").Definitions} Definitions
 */
/**
 *
 * @param {string} s
 * @param {(m: string) => void} callback
 */
export function matchBuiltins(s: string, callback: (m: string) => void): void;
/**
 * Wrapper for a builtin function (written in IR)
 * @internal
 */
export class RawFunc {
    /**
     * Construct a RawFunc, and immediately scan the definition for dependencies
     * @param {string} name
     * @param {string | ((ttp: string[], ftp: string[]) => string)} definition
     */
    constructor(name: string, definition: string | ((ttp: string[], ftp: string[]) => string));
    /**
     * @private
     * @readonly
     * @type {string}
     */
    private readonly _name;
    /**
     * @private
     * @readonly
     * @type {((ttp: string[], ftp: string[]) => string)}
     */
    private readonly _definition;
    /**
     * @type {string}
     */
    get name(): string;
    /**
     * @param {string[]} ttp
     * @param {string[]} ftp
     * @returns {SourceMappedStringI}
     */
    toIR(ttp?: string[], ftp?: string[]): SourceMappedStringI;
    /**
     * Loads dependecies (if not already loaded), then load 'this'
     * @param {Map<string, RawFunc>} db
     * @param {Definitions} dst
     * @param {string[]} ttp
     * @param {string[]} ftp
     * @returns {void}
     */
    load(db: Map<string, RawFunc>, dst: Definitions, ttp?: string[], ftp?: string[]): void;
}
export type SourceMappedStringI = import("@helios-lang/ir").SourceMappedStringI;
export type Definitions = import("./Definitions.js").Definitions;
//# sourceMappingURL=RawFunc.d.ts.map