/**
 * @typedef {import("@helios-lang/type-utils").EnumTypeSchema} EnumTypeSchema
 * @typedef {import("../codegen/index.js").Definitions} Definitions
 * @typedef {import("../typecheck/index.js").DataType} DataType
 * @typedef {import("../typecheck/index.js").TypeSchema} TypeSchema
 * @typedef {import("./EntryPoint.js").EntryPoint} EntryPoint
 */
/**
 * Note: all FuncArgs are converted from data to primitive format, so from an external PoV none of them are ignored, and there is no need for an `isIgnored` flag
 * @typedef {{
 *   name: string
 *   isOptional: boolean
 *   type: TypeSchema
 * }} AnalyzedFuncArg
 */
/**
 * If `returns` isn't set, the function returns undefined (i.e. void or unit)
 * @typedef {{
 *   name: string
 *   requiresScriptContext: boolean
 *   requiresCurrentScript: boolean
 *   arguments: AnalyzedFuncArg[]
 *   returns?: TypeSchema
 * }} AnalyzedFunc
 */
/**
 * @typedef {{
 *   name: string
 *   purpose: string
 *   sourceCode: string
 *   moduleDepedencies: string[]
 *   types: Record<string, TypeSchema>
 *   functions: Record<string, AnalyzedFunc>
 * }} AnalyzedModule
 */
/**
 * Note: `hashDependencies` doesn't contain the indirect dependencies! It must be kept to a minimum in order to inform in which order the validators must be compiled
 * @typedef {AnalyzedModule & {
 *   hashDependencies: string[]
 *   Redeemer: TypeSchema
 *   currentScriptIndex?: number
 *   Datum?: TypeSchema
 * }} AnalyzedValidator
 */
/**
 * Maps purposes to concrete ScriptHashTypes
 * @param {string} purpose
 * @returns {ScriptHashType}
 */
export function getScriptHashType(purpose: string): ScriptHashType;
/**
 * @param {string[]} validatorSources
 * @param {string[]} moduleSources
 * @returns {{
 *   modules: Record<string, AnalyzedModule>,
 *   validators: Record<string, AnalyzedValidator>
 * }}
 */
export function analyzeMulti(validatorSources: string[], moduleSources: string[]): {
    modules: Record<string, AnalyzedModule>;
    validators: Record<string, AnalyzedValidator>;
};
export type EnumTypeSchema = import("@helios-lang/type-utils").EnumTypeSchema;
export type Definitions = import("../codegen/index.js").Definitions;
export type DataType = import("../typecheck/index.js").DataType;
export type TypeSchema = import("../typecheck/index.js").TypeSchema;
export type EntryPoint = import("./EntryPoint.js").EntryPoint;
/**
 * Note: all FuncArgs are converted from data to primitive format, so from an external PoV none of them are ignored, and there is no need for an `isIgnored` flag
 */
export type AnalyzedFuncArg = {
    name: string;
    isOptional: boolean;
    type: TypeSchema;
};
/**
 * If `returns` isn't set, the function returns undefined (i.e. void or unit)
 */
export type AnalyzedFunc = {
    name: string;
    requiresScriptContext: boolean;
    requiresCurrentScript: boolean;
    arguments: AnalyzedFuncArg[];
    returns?: TypeSchema;
};
export type AnalyzedModule = {
    name: string;
    purpose: string;
    sourceCode: string;
    moduleDepedencies: string[];
    types: Record<string, TypeSchema>;
    functions: Record<string, AnalyzedFunc>;
};
/**
 * Note: `hashDependencies` doesn't contain the indirect dependencies! It must be kept to a minimum in order to inform in which order the validators must be compiled
 */
export type AnalyzedValidator = AnalyzedModule & {
    hashDependencies: string[];
    Redeemer: TypeSchema;
    currentScriptIndex?: number;
    Datum?: TypeSchema;
};
import { ScriptHashType } from "../typecheck/index.js";
//# sourceMappingURL=multi.d.ts.map