import type { Fr } from '@aztec/foundation/curves/bn254'; import { z } from 'zod'; import { FunctionSelector } from './function_selector.js'; /** A basic value. */ export interface BasicValue { /** The kind of the value. */ kind: T; value: V; } /** An exported value. */ export type AbiValue = BasicValue<'boolean', boolean> | BasicValue<'string', string> | BasicValue<'array', AbiValue[]> | TupleValue | IntegerValue | StructValue; export declare const AbiValueSchema: z.ZodType; export type TypedStructFieldValue = { name: string; value: T; }; export interface StructValue { kind: 'struct'; fields: TypedStructFieldValue[]; } export interface TupleValue { kind: 'tuple'; fields: AbiValue[]; } export interface IntegerValue extends BasicValue<'integer', string> { sign: boolean; } /** Indicates whether a parameter is public or secret/private. */ export declare const ABIParameterVisibility: readonly ["public", "private", "databus"]; /** Indicates whether a parameter is public or secret/private. */ export type ABIParameterVisibility = (typeof ABIParameterVisibility)[number]; /** A basic type. */ export interface BasicType { /** The kind of the type. */ kind: T; } /** Sign for numeric types. */ declare const Sign: readonly ["unsigned", "signed"]; type Sign = (typeof Sign)[number]; /** A variable type. */ export type AbiType = BasicType<'field'> | BasicType<'boolean'> | IntegerType | ArrayType | StringType | StructType | TupleType; export declare const AbiTypeSchema: z.ZodType; /** A named type. */ export declare const ABIVariableSchema: z.ZodObject<{ /** The name of the variable. */ name: z.ZodString; /** The type of the variable. */ type: z.ZodType; }, "strip", z.ZodTypeAny, { name: string; type: AbiType; }, { name: string; type: AbiType; }>; /** A named type. */ export type ABIVariable = z.infer; /** A function parameter. */ export declare const ABIParameterSchema: z.ZodIntersection; }, "strip", z.ZodTypeAny, { name: string; type: AbiType; }, { name: string; type: AbiType; }>, z.ZodObject<{ /** Visibility of the parameter in the function. */ visibility: z.ZodEnum<["public", "private", "databus"]>; }, "strip", z.ZodTypeAny, { visibility: "databus" | "private" | "public"; }, { visibility: "databus" | "private" | "public"; }>>; /** A function parameter. */ export type ABIParameter = z.infer; /** An integer type. */ export interface IntegerType extends BasicType<'integer'> { /** The sign of the integer. */ sign: Sign; /** The width of the integer in bits. */ width: number; } /** An array type. */ export interface ArrayType extends BasicType<'array'> { /** The length of the array. */ length: number; /** The type of the array elements. */ type: AbiType; } /** A tuple type. */ export interface TupleType extends BasicType<'tuple'> { /** The types of the tuple elements. */ fields: AbiType[]; } /** A string type. */ export interface StringType extends BasicType<'string'> { /** The length of the string. */ length: number; } /** A struct type. */ export interface StructType extends BasicType<'struct'> { /** The fields of the struct. */ fields: ABIVariable[]; /** Fully qualified name of the struct. */ path: string; } /** An error could be a custom error of any regular type or a string error. */ export type AbiErrorType = { error_kind: 'string'; string: string; } | { error_kind: 'fmtstring'; length: number; item_types: AbiType[]; } | ({ error_kind: 'custom'; } & AbiType); /** Aztec.nr function types. */ export declare enum FunctionType { PRIVATE = "private", PUBLIC = "public", UTILITY = "utility" } /** The abi entry of a function. */ export interface FunctionAbi { /** The name of the function. */ name: string; /** Whether the function is secret. */ functionType: FunctionType; /** Whether the function is marked as `#[only_self]` and hence callable only from within the contract. */ isOnlySelf: boolean; /** Whether the function can alter state or not */ isStatic: boolean; /** Function parameters. */ parameters: ABIParameter[]; /** The types of the return values. */ returnTypes: AbiType[]; /** The types of the errors that the function can throw. */ errorTypes: Partial>; /** Whether the function is flagged as an initializer. */ isInitializer: boolean; } export declare const FunctionAbiSchema: z.ZodObject<{ name: z.ZodString; functionType: z.ZodNativeEnum; isOnlySelf: z.ZodBoolean; isStatic: z.ZodBoolean; isInitializer: z.ZodBoolean; parameters: z.ZodArray; visibility: z.ZodEnum<["public", "private", "databus"]>; }, "strip", z.ZodTypeAny, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }>, "many">; returnTypes: z.ZodArray, "many">; errorTypes: z.ZodRecord; string: z.ZodString; }, "strip", z.ZodTypeAny, { error_kind: "string"; string: string; }, { error_kind: "string"; string: string; }>, z.ZodObject<{ error_kind: z.ZodLiteral<"fmtstring">; length: z.ZodNumber; item_types: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }>, z.ZodIntersection; }, "strip", z.ZodTypeAny, { error_kind: "custom"; }, { error_kind: "custom"; }>, z.ZodType>]>>>; }, "strip", z.ZodTypeAny, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }>; /** Debug metadata for a function. */ export interface FunctionDebugMetadata { /** Maps opcodes to source code pointers */ debugSymbols: DebugInfo; /** Maps the file IDs to the file contents to resolve pointers */ files: DebugFileMap; } export declare const FunctionDebugMetadataSchema: z.ZodObject<{ debugSymbols: z.ZodObject<{ location_tree: z.ZodObject<{ locations: z.ZodArray; value: z.ZodObject<{ span: z.ZodObject<{ start: z.ZodNumber; end: z.ZodNumber; }, "strip", z.ZodTypeAny, { start: number; end: number; }, { start: number; end: number; }>; file: z.ZodNumber; }, "strip", z.ZodTypeAny, { span: { start: number; end: number; }; file: number; }, { span: { start: number; end: number; }; file: number; }>; }, "strip", z.ZodTypeAny, { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }, { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }>, "many">; }, "strip", z.ZodTypeAny, { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }, { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }>; acir_locations: z.ZodRecord; brillig_locations: z.ZodRecord>; }, "strip", z.ZodTypeAny, { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }, { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }>; files: z.ZodType; }, "strip", z.ZodTypeAny, { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; }, { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; }>; /** The artifact entry of a function. */ export interface FunctionArtifact extends FunctionAbi { /** The ACIR bytecode of the function. */ bytecode: Buffer; /** The verification key of the function, base64 encoded, if it's a private fn. */ verificationKey?: string; /** Maps opcodes to source code pointers */ debugSymbols: string; /** Debug metadata for the function. */ debug?: FunctionDebugMetadata; } export interface FunctionArtifactWithContractName extends FunctionArtifact { /** The name of the contract. */ contractName: string; } export declare const FunctionArtifactSchema: z.ZodIntersection; isOnlySelf: z.ZodBoolean; isStatic: z.ZodBoolean; isInitializer: z.ZodBoolean; parameters: z.ZodArray; visibility: z.ZodEnum<["public", "private", "databus"]>; }, "strip", z.ZodTypeAny, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }>, "many">; returnTypes: z.ZodArray, "many">; errorTypes: z.ZodRecord; string: z.ZodString; }, "strip", z.ZodTypeAny, { error_kind: "string"; string: string; }, { error_kind: "string"; string: string; }>, z.ZodObject<{ error_kind: z.ZodLiteral<"fmtstring">; length: z.ZodNumber; item_types: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }>, z.ZodIntersection; }, "strip", z.ZodTypeAny, { error_kind: "custom"; }, { error_kind: "custom"; }>, z.ZodType>]>>>; }, "strip", z.ZodTypeAny, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }>, z.ZodObject<{ bytecode: import("@aztec/foundation/schemas").ZodFor>; verificationKey: z.ZodOptional; debugSymbols: z.ZodString; debug: z.ZodOptional; value: z.ZodObject<{ span: z.ZodObject<{ start: z.ZodNumber; end: z.ZodNumber; }, "strip", z.ZodTypeAny, { start: number; end: number; }, { start: number; end: number; }>; file: z.ZodNumber; }, "strip", z.ZodTypeAny, { span: { start: number; end: number; }; file: number; }, { span: { start: number; end: number; }; file: number; }>; }, "strip", z.ZodTypeAny, { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }, { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }>, "many">; }, "strip", z.ZodTypeAny, { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }, { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }>; acir_locations: z.ZodRecord; brillig_locations: z.ZodRecord>; }, "strip", z.ZodTypeAny, { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }, { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }>; files: z.ZodType; }, "strip", z.ZodTypeAny, { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; }, { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; }>>; }, "strip", z.ZodTypeAny, { bytecode: Buffer; verificationKey?: string | undefined; debugSymbols: string; debug?: { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; } | undefined; }, { bytecode?: any; verificationKey?: string | undefined; debugSymbols: string; debug?: { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; } | undefined; }>>; /** A file ID. It's assigned during compilation. */ type FileId = number; /** A pointer to a specific section of the source code. */ interface SourceCodeLocation { /** The section of the source code. */ span: { /** The byte where the section starts. */ start: number; /** The byte where the section ends. */ end: number; }; /** The source code file pointed to. */ file: FileId; } /** * The location of an opcode in the bytecode. * It's a string of the form `{acirIndex}` or `{acirIndex}:{brilligIndex}`. */ export type OpcodeLocation = string; export type BrilligFunctionId = number; export type OpcodeToLocationsMap = Record; export type LocationNodeDebugInfo = { parent: number | null; value: SourceCodeLocation; }; export type LocationTree = { locations: LocationNodeDebugInfo[]; }; /** The debug information for a given function. */ export interface DebugInfo { /** A map of the opcode location to the source code location. */ location_tree: LocationTree; acir_locations: OpcodeToLocationsMap; /** For each Brillig function, we have a map of the opcode location to the source code location. */ brillig_locations: Record; } /** The debug information for a given program (a collection of functions) */ export interface ProgramDebugInfo { /** A list of debug information that matches with each function in a program */ debug_infos: Array; } /** The range a function occupies in a file. */ export type FunctionLocation = { /** The byte where the function starts. */ start: number; /** The name of the function. */ name: string; }; /** Maps a file ID to its metadata for debugging purposes. */ export type DebugFileMap = Record; /** Type representing a field layout in the storage of a contract. */ export type FieldLayout = { /** Slot in which the field is stored. */ slot: Fr; }; /** Placeholder version injected into artifacts compiled before aztecVersion was added. TODO(F-557): Remove. */ export declare const ARTIFACT_VERSION_BEFORE_INJECTION = "FROM_RELEASE_BEFORE_VERSION_INJECTION"; /** Defines artifact of a contract. */ export interface ContractArtifact { /** The name of the contract. */ name: string; /** The version of the Aztec stack that compiled this artifact. */ aztecVersion: string; /** The functions of the contract. Includes private and utility functions, plus the public dispatch function. */ functions: FunctionArtifact[]; /** The public functions of the contract, excluding dispatch. */ nonDispatchPublicFunctions: FunctionAbi[]; /** The outputs of the contract. */ outputs: { structs: Record; globals: Record; }; /** Storage layout */ storageLayout: Record; /** The map of file ID to the source code and path of the file. */ fileMap: DebugFileMap; } export declare const ContractArtifactSchema: z.ZodObject<{ name: z.ZodString; aztecVersion: z.ZodDefault; functions: z.ZodArray; isOnlySelf: z.ZodBoolean; isStatic: z.ZodBoolean; isInitializer: z.ZodBoolean; parameters: z.ZodArray; visibility: z.ZodEnum<["public", "private", "databus"]>; }, "strip", z.ZodTypeAny, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }>, "many">; returnTypes: z.ZodArray, "many">; errorTypes: z.ZodRecord; string: z.ZodString; }, "strip", z.ZodTypeAny, { error_kind: "string"; string: string; }, { error_kind: "string"; string: string; }>, z.ZodObject<{ error_kind: z.ZodLiteral<"fmtstring">; length: z.ZodNumber; item_types: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }>, z.ZodIntersection; }, "strip", z.ZodTypeAny, { error_kind: "custom"; }, { error_kind: "custom"; }>, z.ZodType>]>>>; }, "strip", z.ZodTypeAny, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }>, z.ZodObject<{ bytecode: import("@aztec/foundation/schemas").ZodFor>; verificationKey: z.ZodOptional; debugSymbols: z.ZodString; debug: z.ZodOptional; value: z.ZodObject<{ span: z.ZodObject<{ start: z.ZodNumber; end: z.ZodNumber; }, "strip", z.ZodTypeAny, { start: number; end: number; }, { start: number; end: number; }>; file: z.ZodNumber; }, "strip", z.ZodTypeAny, { span: { start: number; end: number; }; file: number; }, { span: { start: number; end: number; }; file: number; }>; }, "strip", z.ZodTypeAny, { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }, { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }>, "many">; }, "strip", z.ZodTypeAny, { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }, { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }>; acir_locations: z.ZodRecord; brillig_locations: z.ZodRecord>; }, "strip", z.ZodTypeAny, { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }, { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }>; files: z.ZodType; }, "strip", z.ZodTypeAny, { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; }, { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; }>>; }, "strip", z.ZodTypeAny, { bytecode: Buffer; verificationKey?: string | undefined; debugSymbols: string; debug?: { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; } | undefined; }, { bytecode?: any; verificationKey?: string | undefined; debugSymbols: string; debug?: { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; } | undefined; }>>, "many">; nonDispatchPublicFunctions: z.ZodArray; isOnlySelf: z.ZodBoolean; isStatic: z.ZodBoolean; isInitializer: z.ZodBoolean; parameters: z.ZodArray; visibility: z.ZodEnum<["public", "private", "databus"]>; }, "strip", z.ZodTypeAny, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }, { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }>, "many">; returnTypes: z.ZodArray, "many">; errorTypes: z.ZodRecord; string: z.ZodString; }, "strip", z.ZodTypeAny, { error_kind: "string"; string: string; }, { error_kind: "string"; string: string; }>, z.ZodObject<{ error_kind: z.ZodLiteral<"fmtstring">; length: z.ZodNumber; item_types: z.ZodArray, "many">; }, "strip", z.ZodTypeAny, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }, { error_kind: "fmtstring"; length: number; item_types: AbiType[]; }>, z.ZodIntersection; }, "strip", z.ZodTypeAny, { error_kind: "custom"; }, { error_kind: "custom"; }>, z.ZodType>]>>>; }, "strip", z.ZodTypeAny, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }, { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }>, "many">; outputs: z.ZodObject<{ structs: z.ZodEffects, "many">>, Record, Record>; globals: z.ZodRecord, "many">>; }, "strip", z.ZodTypeAny, { structs: Record; globals: Record; }, { structs: Record; globals: Record; }>; storageLayout: z.ZodRecord; }, "strip", z.ZodTypeAny, { slot: Fr; }, { slot: string; }>>; fileMap: z.ZodEffects, "many">; }, "strip", z.ZodTypeAny, { source: string; path: string; function_locations: { start: number; name: string; }[]; }, { source: string; path: string; function_locations: { start: number; name: string; }[]; }>>, Record, unknown>; }, "strip", z.ZodTypeAny, { name: string; aztecVersion: string; functions: ({ name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; } & { bytecode: Buffer; verificationKey?: string | undefined; debugSymbols: string; debug?: { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; } | undefined; })[]; nonDispatchPublicFunctions: { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }[]; outputs: { structs: Record; globals: Record; }; storageLayout: Record; fileMap: Record; }, { name: string; aztecVersion?: string | undefined; functions: ({ name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; } & { bytecode?: any; verificationKey?: string | undefined; debugSymbols: string; debug?: { debugSymbols: { location_tree: { locations: { parent: number | null; value: { span: { start: number; end: number; }; file: number; }; }[]; }; acir_locations: Record; brillig_locations: Record>; }; files: DebugFileMap; } | undefined; })[]; nonDispatchPublicFunctions: { name: string; functionType: FunctionType; isOnlySelf: boolean; isStatic: boolean; isInitializer: boolean; parameters: { name: string; type: AbiType; visibility: "databus" | "private" | "public"; }[]; returnTypes: AbiType[]; errorTypes: Record; }[]; outputs: { structs: Record; globals: Record; }; storageLayout: Record; fileMap?: unknown; }>; export declare function getFunctionArtifactByName(artifact: ContractArtifact, functionName: string): FunctionArtifact; /** Gets a function artifact including debug metadata given its name or selector. */ export declare function getFunctionArtifact(artifact: ContractArtifact, functionNameOrSelector: string | FunctionSelector): Promise; /** Gets all function abis */ export declare function getAllFunctionAbis(artifact: ContractArtifact): FunctionAbi[]; export declare function parseDebugSymbols(debugSymbols: string): DebugInfo[]; /** * Gets the debug metadata of a given function from the contract artifact * @param artifact - The contract build artifact * @param functionName - The name of the function * @returns The debug metadata of the function */ export declare function getFunctionDebugMetadata(contractArtifact: ContractArtifact, functionArtifact: FunctionArtifact): FunctionDebugMetadata | undefined; /** * Returns an initializer from the contract, assuming there is at least one. If there are multiple initializers, * it returns the one named "constructor" or "initializer"; if there is none with that name, it returns the first * initializer it finds, prioritizing initializers with no arguments and then private ones. * @param contractArtifact - The contract artifact. * @returns An initializer function, or none if there are no functions flagged as initializers in the contract. */ export declare function getDefaultInitializer(contractArtifact: ContractArtifact): FunctionAbi | undefined; /** * Returns an initializer from the contract. * @param initializerNameOrArtifact - The name of the constructor, or the artifact of the constructor, or undefined * to pick the default initializer. */ export declare function getInitializer(contract: ContractArtifact, initializerNameOrArtifact: string | undefined | FunctionArtifact): FunctionAbi | undefined; export declare function emptyFunctionAbi(): FunctionAbi; export declare function emptyFunctionArtifact(): FunctionArtifact; export declare function emptyContractArtifact(): ContractArtifact; export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJpLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2FiaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUt6RCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELHFCQUFxQjtBQUNyQixNQUFNLFdBQVcsVUFBVSxDQUFDLENBQUMsU0FBUyxNQUFNLEVBQUUsQ0FBQztJQUM3Qyw2QkFBNkI7SUFDN0IsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDLENBQUM7Q0FDVjtBQUlELHlCQUF5QjtBQUN6QixNQUFNLE1BQU0sUUFBUSxHQUNoQixVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUM5QixVQUFVLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUM1QixVQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQy9CLFVBQVUsR0FDVixZQUFZLEdBQ1osV0FBVyxDQUFDO0FBRWhCLGVBQU8sTUFBTSxjQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBVTdDLENBQUM7QUFFSCxNQUFNLE1BQU0scUJBQXFCLENBQUMsQ0FBQyxJQUFJO0lBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7Q0FBRSxDQUFDO0FBRWxFLE1BQU0sV0FBVyxXQUFXO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUM7SUFDZixNQUFNLEVBQUUscUJBQXFCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztDQUMzQztBQUVELE1BQU0sV0FBVyxVQUFVO0lBQ3pCLElBQUksRUFBRSxPQUFPLENBQUM7SUFDZCxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7Q0FDcEI7QUFFRCxN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