UNPKG

@tevm/solc

Version:
910 lines (836 loc) 28.7 kB
// generated from docs at https://docs.soliditylang.org/en/v0.8.20/using-the-compiler.html import type { Abi } from 'abitype' // @ts-ignore import solc from 'solc' type HexNumber = `0x${string}` type SolcAst = any // Required: Source code language. Currently supported are "Solidity", "Yul" and "SolidityAST" (experimental). export type SolcLanguage = 'Solidity' | 'Yul' | 'SolidityAST' // The keys here are the "global" names of the source files, // imports can use other files via remappings (see below). export type SolcInputSource = { // Optional: keccak256 hash of the source file // It is used to verify the retrieved content if imported via URLs. keccak256?: HexNumber // If language is set to "SolidityAST", an AST needs to be supplied under the "ast" key. // Note that importing ASTs is experimental and in particular that: // - importing invalid ASTs can produce undefined results and // - no proper error reporting is available on invalid ASTs. // Furthermore, note that the AST import only consumes the fields of the AST as // produced by the compiler in "stopAfter": "parsing" mode and then re-performs // analysis, so any analysis-based annotations of the AST are ignored upon import. // formatted as the json ast requested with the ``ast`` output selection. ast?: SolcAst } & ( | { // Required (unless "content" is used, see below): URL(s) to the source file. // URL(s) should be imported in this order and the result checked against the // keccak256 hash (if available). If the hash doesn't match or none of the // URL(s) result in success, an error should be raised. // Using the commandline interface only filesystem paths are supported. // With the JavaScript interface the URL will be passed to the user-supplied // read callback, so any URL supported by the callback can be used. // @example // [ // "bzzr://56ab...", // "ipfs://Qma...", // "/tmp/path/to/file.sol" // // If files are used, their directories should be added to the command line via // // `--allow-paths <path>`. //] urls: string[] } | { content: string } ) export type SolcRemapping = Array<`${string}=${string}`> // Tuning options for the Yul optimizer. export type SolcYulDetails = { // Improve allocation of stack slots for variables, can free up stack slots early. // Activated by default if the Yul optimizer is activated. stackAllocation?: boolean // Select optimization steps to be applied. It is also possible to modify both the // optimization sequence and the clean-up sequence. Instructions for each sequence // are separated with the ":" delimiter and the values are provided in the form of // optimization-sequence:clean-up-sequence. For more information see // "The Optimizer > Selecting Optimizations". // This field is optional, and if not provided, the default sequences for both // optimization and clean-up are used. If only one of the options is provivded // the other will not be run. // If only the delimiter ":" is provided then neither the optimization nor the clean-up // sequence will be run. // If set to an empty value, only the default clean-up sequence is used and // no optimization steps are applied. optimizerSteps: string } // Switch optimizer components on or off in detail. // The "enabled" switch above provides two defaults which can be // tweaked here. If "details" is given, "enabled" can be omitted. export type SolcOptimizerDetails = { // The peephole optimizer is always on if no details are given, // use details to switch it off. peephole: boolean // The inliner is always on if no details are given, // use details to switch it off. inliner: boolean // The unused jumpdest remover is always on if no details are given, // use details to switch it off. jumpdestRemover: boolean // Sometimes re-orders literals in commutative operations. orderLiterals: boolean // Removes duplicate code blocks deduplicate: boolean // Common subexpression elimination, this is the most complicated step but // can also provide the largest gain. cse: boolean // Optimize representation of literal numbers and strings in code. constantOptimizer: boolean // The new Yul optimizer. Mostly operates on the code of ABI coder v2 // and inline assembly. // It is activated together with the global optimizer setting // and can be deactivated here. // Before Solidity 0.6.0 it had to be activated through this switch. yul: boolean yulDetails: SolcYulDetails } // Optional: Optimizer settings export type SolcOptimizer = { // Disabled by default. // NOTE: enabled=false still leaves some optimizations on. See comments below. // WARNING: Before version 0.8.6 omitting the 'enabled' key was not equivalent to setting // it to false and would actually disable all the optimizations. enabled?: boolean // Optimize for how many times you intend to run the code. // Lower values will optimize more for initial deployment cost, higher // values will optimize more for high-frequency usage. runs: number details: SolcOptimizerDetails } const fileLevelOption = '' as const export type SolcOutputSelection = { [fileName: string]: { [fileLevelOption]?: Array<'ast'> } & { [contractName: Exclude<string, typeof fileLevelOption>]: Array< | 'abi' // TODO this option is only for fileLevelOptions, but it's not clear how to type that | 'ast' | 'devdoc' | 'evm.assembly' | 'evm.bytecode' | 'evm.bytecode.functionDebugData' | 'evm.bytecode.generatedSources' | 'evm.bytecode.linkReferences' | 'evm.bytecode.object' | 'evm.bytecode.opcodes' | 'evm.bytecode.sourceMap' | 'evm.deployedBytecode' | 'evm.deployedBytecode.immutableReferences' | 'evm.deployedBytecode.sourceMap' | 'evm.deployedBytecode.opcodes' | 'evm.deployedBytecode.object' | 'evm.gasEstimates' | 'evm.methodIdentifiers' | 'evm.legacyAssembly' | 'evm.methodIdentifiers' | 'evm.storageLayout' | 'ewasm.wasm' | 'ewasm.wast' | 'ir' | 'irOptimized' | 'metadata' | 'storageLayout' | 'userdoc' | '*' > } } // Chose which contracts should be analyzed as the deployed one. export type SolcModelCheckerContracts = { [fileName: `${string}.sol`]: string[] } export type SolcModelChecker = { contracts: SolcModelCheckerContracts // Choose how division and modulo operations should be encoded. // When using `false` they are replaced by multiplication with slack // variables. This is the default. // Using `true` here is recommended if you are using the CHC engine // and not using Spacer as the Horn solver (using Eldarica, for example). // See the Formal Verification section for a more detailed explanation of this option. divModNoSlacks?: boolean // Choose which model checker engine to use: all (default), bmc, chc, none. engine?: 'all' | 'bmc' | 'chc' | 'none' // Choose whether external calls should be considered trusted in case the // code of the called function is available at compile-time. // For details see the SMTChecker section. extCalls: 'trusted' | 'untrusted' // Choose which types of invariants should be reported to the user: contract, reentrancy. invariants: Array<'contract' | 'reentrancy'> // Choose whether to output all proved targets. The default is `false`. showProved?: boolean // Choose whether to output all unproved targets. The default is `false`. showUnproved?: boolean // Choose whether to output all unsupported language features. The default is `false`. showUnsupported?: boolean // Choose which solvers should be used, if available. // See the Formal Verification section for the solvers description. solvers: Array<'cvc4' | 'smtlib2' | 'z3'> // Choose which targets should be checked: constantCondition, // underflow, overflow, divByZero, balance, assert, popEmptyArray, outOfBounds. // If the option is not given all targets are checked by default, // except underflow/overflow for Solidity >=0.8.7. // See the Formal Verification section for the targets description. targets?: Array<'underflow' | 'overflow' | 'assert'> // Timeout for each SMT query in milliseconds. // If this option is not given, the SMTChecker will use a deterministic // resource limit by default. // A given timeout of 0 means no resource/time restrictions for any query. timeout?: boolean } export type SolcDebugSettings = { // How to treat revert (and require) reason strings. Settings are // "default", "strip", "debug" and "verboseDebug". // "default" does not inject compiler-generated revert strings and keeps user-supplied ones. // "strip" removes all revert strings (if possible, i.e. if literals are used) keeping side-effects // "debug" injects strings for compiler-generated internal reverts, implemented for ABI encoders V1 and V2 for now. // "verboseDebug" even appends further information to user-supplied revert strings (not yet implemented) revertStrings?: 'default' | 'strip' | 'debug' | 'verboseDebug' // Optional: How much extra debug information to include in comments in the produced EVM // assembly and Yul code. Available components are: // - `location`: Annotations of the form `@src <index>:<start>:<end>` indicating the // location of the corresponding element in the original Solidity file, where: // - `<index>` is the file index matching the `@use-src` annotation, // - `<start>` is the index of the first byte at that location, // - `<end>` is the index of the first byte after that location. // - `snippet`: A single-line code snippet from the location indicated by `@src`. // The snippet is quoted and follows the corresponding `@src` annotation. // - `*`: Wildcard value that can be used to request everything. debugInfo?: Array<'location' | 'snippet' | '*'> } export type SolcMetadataSettings = { // The CBOR metadata is appended at the end of the bytecode by default. // Setting this to false omits the metadata from the runtime and deploy time code. appendCBOR?: boolean // Use only literal content and not URLs (false by default) useLiteralContent?: boolean // Use the given hash method for the metadata hash that is appended to the bytecode. // The metadata hash can be removed from the bytecode via option "none". // The other options are "ipfs" and "bzzr1". // If the option is omitted, "ipfs" is used by default. bytecodeHash?: 'ipfs' | 'bzzr1' | 'none' } // Optional: A list of remappings to apply to the source code. export type SolcSettings = { // Optional: Stop compilation after the given stage. Currently only "parsing" is valid here stopAfter?: 'parsing' // Optional: Sorted list of remappings remappings?: SolcRemapping optimizer?: SolcOptimizer // Version of the EVM to compile for. // Affects type checking and code generation. Can be homestead, // tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul, berlin, london or paris evmVersion?: 'byzantium' | 'constantinople' | 'petersburg' | 'istanbul' | 'berlin' | 'london' | 'paris' // Optional: Change compilation pipeline to go through the Yul intermediate representation. // This is false by default. viaIR?: boolean // Optional: Debugging settings debug?: SolcDebugSettings // Metadata settings (optional) metadata?: SolcMetadataSettings // Addresses of the libraries. If not all libraries are given here, // it can result in unlinked objects whose output data is different. // The top level key is the the name of the source file where the library is used. // If remappings are used, this source file should match the global path // after remappings were applied. // If this key is an empty string, that refers to a global level. libraries?: Record<string, Record<string, string>> // The following can be used to select desired outputs based // on file and contract names. // If this field is omitted, then the compiler loads and does type checking, // but will not generate any outputs apart from errors. // The first level key is the file name and the second level key is the contract name. // An empty contract name is used for outputs that are not tied to a contract // but to the whole source file like the AST. // A star as contract name refers to all contracts in the file. // Similarly, a star as a file name matches all files. // To select all outputs the compiler can possibly generate, use // "outputSelection: { "*": { "*": [ "*" ], "": [ "*" ] } }" // but note that this might slow down the compilation process needlessly. // // The available output types are as follows: // // File level (needs empty string as contract name): // ast - AST of all source files // // Contract level (needs the contract name or "*"): // abi - ABI // devdoc - Developer documentation (natspec) // userdoc - User documentation (natspec) // metadata - Metadata // ir - Yul intermediate representation of the code before optimization // irOptimized - Intermediate representation after optimization // storageLayout - Slots, offsets and types of the contract's state variables. // evm.assembly - New assembly format // evm.legacyAssembly - Old-style assembly format in JSON // evm.bytecode.functionDebugData - Debugging information at function level // evm.bytecode.object - Bytecode object // evm.bytecode.opcodes - Opcodes list // evm.bytecode.sourceMap - Source mapping (useful for debugging) // evm.bytecode.linkReferences - Link references (if unlinked object) // evm.bytecode.generatedSources - Sources generated by the compiler // evm.deployedBytecode* - Deployed bytecode (has all the options that evm.bytecode has) // evm.deployedBytecode.immutableReferences - Map from AST ids to bytecode ranges that reference immutables // evm.methodIdentifiers - The list of function hashes // evm.gasEstimates - Function gas estimates // ewasm.wast - Ewasm in WebAssembly S-expressions format // ewasm.wasm - Ewasm in WebAssembly binary format // // Note that using a using `evm`, `evm.bytecode`, `ewasm`, etc. will select every // target part of that output. Additionally, `*` can be used as a wildcard to request everything. // outputSelection: SolcOutputSelection // The modelChecker object is experimental and subject to changes. modelChecker?: SolcModelChecker } export type SolcInputSourcesDestructibleSettings = { // Optional: keccak256 hash of the source file keccak256?: HexNumber // Required (unless "urls" is used): literal contents of the source file content: string } export type SolcInputSources = { [globalName: string]: SolcInputSource & { destructible?: SolcInputSourcesDestructibleSettings } } export type SolcInputDescription = { language: SolcLanguage // Required: A dictionary of source files. The key of each entry is either a file name or a global identifier followed by ":" and a file name. sources: SolcInputSources settings?: SolcSettings } export type SolcOutput = { // Optional: not present if no errors/warnings/infos were encountered errors?: SolcErrorEntry[] // This contains the file-level outputs. // It can be limited/filtered by the outputSelection settings. sources: { [sourceFile: string]: SolcSourceEntry } // This contains the contract-level outputs. // It can be limited/filtered by the outputSelection settings. contracts: { [sourceFile: string]: { [contractName: string]: SolcContractOutput } } } export type SolcErrorEntry = { // Optional: Location within the source file. sourceLocation?: SolcSourceLocation // Optional: Further locations (e.g. places of conflicting declarations) secondarySourceLocations?: SolcSecondarySourceLocation[] // Mandatory: Error type, such as "TypeError", "InternalCompilerError", "Exception", etc. type: string // Mandatory: Component where the error originated, such as "general", "ewasm", etc. component: string // Mandatory ("error", "warning" or "info", but please note that this may be extended in the future) severity: 'error' | 'warning' | 'info' // Optional: unique code for the cause of the error errorCode?: string // Mandatory message: string // Optional: the message formatted with source location formattedMessage?: string } export type SolcSourceLocation = { file: string start: number end: number } export type SolcSecondarySourceLocation = SolcSourceLocation & { message: string } export type SolcSourceEntry = { // Identifier of the source (used in source maps) id: number // The AST object ast: any } export type SolcContractOutput = { // The Ethereum Contract ABI. If empty, it is represented as an empty array. abi: Abi // See the Metadata Output documentation (serialised JSON string) metadata: string // User documentation (natspec) userdoc: { methods?: Record<string, { notice: string }> kind: 'user' notice?: string version: number } // Developer documentation (natspec) devdoc: any // Intermediate representation (string) ir: string // The storage layout output for all contracts provided as sources storageLayout: SolcStorageLayout // EVM-related outputs evm: SolcEVMOutput // Ewasm related outputs ewasm: SolcEwasmOutput } /** * The storage layout for a contract. */ export type SolcStorageLayout<T extends SolcStorageLayoutTypes = SolcStorageLayoutTypes> = { /** * The list of stored variables with relevant slot information, type and metadata. * @see {@link SolcStorageLayoutItem} */ storage: Array<SolcStorageLayoutItem<T>> /** * A record of all types relevant to the stored variables with additional encoding information. * @see {@link SolcStorageLayoutTypes} */ types: T } /** * An item present in the contract's storage * @see [Solidity documentation](https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html#json-output) */ export type SolcStorageLayoutItem<T extends SolcStorageLayoutTypes = SolcStorageLayoutTypes> = { /** * The id of the AST node of the state variable's declaration */ astId: number /** * The name of the contract including its path as prefix */ contract: string /** * The name of the state variable */ label: string /** * The offset in bytes within the storage slot according to the encoding */ offset: number /** * The storage slot where the state variable resides or starts */ slot: string /** * The identifier used as a key to the variable's type information in the {@link SolcStorageLayoutTypes} record */ type: keyof T } /** * A record of all types relevant to the stored variables mapped to their encoding information. */ export type SolcStorageLayoutTypes = Record< `t_${string}`, | SolcStorageLayoutInplaceType | SolcStorageLayoutBytesType | SolcStorageLayoutMappingType | SolcStorageLayoutDynamicArrayType | SolcStorageLayoutStructType > /** * The base type for all storage layout types. */ export interface SolcStorageLayoutTypeBase { /** * How the data is encoded in storage * * - inplace: data is laid out contiguously in storage * - mapping: keccak-256 hash-based method * - dynamic_array: keccak-256 hash-based method * - bytes: single slot or keccak-256 hash-based depending on the data size */ encoding: 'inplace' | 'mapping' | 'dynamic_array' | 'bytes' /** * The canonical type name */ label: string /** * The number of used bytes (as a decimal string) * * Note: if numberOfBytes > 32 this means that more than one slot is used */ numberOfBytes: string } /** * A storage layout type that is laid out contiguously in storage. */ export interface SolcStorageLayoutInplaceType extends SolcStorageLayoutTypeBase { encoding: 'inplace' } /** * A storage layout type that is laid out in a single slot or keccak-256 hash-based depending on the data size. */ export interface SolcStorageLayoutBytesType extends SolcStorageLayoutTypeBase { encoding: 'bytes' } /** * A storage layout type that is laid out in a keccak-256 hash-based method. */ export interface SolcStorageLayoutMappingType extends SolcStorageLayoutTypeBase { encoding: 'mapping' /** * The associated type for the mapping key */ key: `t_${string}` /** * The associated type for the mapping value */ value: `t_${string}` } /** * A storage layout type that is laid out in a keccak-256 hash-based method. */ export interface SolcStorageLayoutDynamicArrayType extends SolcStorageLayoutTypeBase { encoding: 'dynamic_array' /** * The base type of the dynamic array */ base: `t_${string}` } /** * A storage layout type that is a struct. */ export interface SolcStorageLayoutStructType extends SolcStorageLayoutInplaceType { /** * The members of the struct in the same format as a {@link SolcStorageLayoutItem} */ members: Array<SolcStorageLayoutItem> } export type SolcEVMOutput = { // Assembly (string) assembly: string // Old-style assembly (object) legacyAssembly: any // Bytecode and related details. bytecode: SolcBytecodeOutput // Bytecode and related details. deployedBytecode: SolcBytecodeOutput // The list of function hashes methodIdentifiers: { [functionSignature: string]: string } // Function gas estimates gasEstimates: SolcGasEstimates } export type SolcBytecodeOutput = { // Debugging data at the level of functions. functionDebugData: { [functionName: string]: SolcFunctionDebugData } // The bytecode as a hex string. object: string // Opcodes list (string) opcodes: string // The source mapping as a string. See the source mapping definition. sourceMap: string // Array of sources generated by the compiler. Currently only // contains a single Yul file. generatedSources: SolcGeneratedSource[] // If given, this is an unlinked object. linkReferences: { [fileName: string]: { [libraryName: string]: Array<{ start: number; length: number }> } } } & Omit<SolcDeployedBytecodeOutput, 'immutableReferences'> export type SolcDeployedBytecodeOutput = { // ... Same as BytecodeOutput above ... immutableReferences: { [astID: string]: Array<{ start: number; length: number }> } } export type SolcFunctionDebugData = { entryPoint?: number id?: number | null parameterSlots?: number returnSlots?: number } export type SolcGeneratedSource = { // Yul AST ast: any // Source file in its text form (may contain comments) contents: string // Source file ID, used for source references, same "namespace" as the Solidity source files id: number language: string name: string } export type SolcGasEstimates = { creation: { codeDepositCost: string executionCost: string totalCost: string } external: { [functionSignature: string]: string } internal: { [functionSignature: string]: string } } export type SolcEwasmOutput = { // S-expressions format wast: string // Binary format (hex string) wasm: string } export type SolcVersions = | '0.8.30' | '0.8.29' | '0.8.28' | '0.8.27' | '0.8.26' | '0.8.25' | '0.8.24' | '0.8.23' | '0.8.22' | '0.8.21' | '0.8.20' | '0.8.19' | '0.8.18' | '0.8.17' | '0.8.16' | '0.8.15' | '0.8.14' | '0.8.13' | '0.8.12' | '0.8.11' | '0.8.10' | '0.8.9' | '0.8.8' | '0.8.7' | '0.8.6' | '0.8.5' | '0.8.4' | '0.8.3' | '0.8.2' | '0.8.1' | '0.8.0' | '0.7.6' | '0.7.5' | '0.7.4' | '0.7.3' | '0.7.2' | '0.7.1' | '0.7.0' | '0.6.12' | '0.6.11' | '0.6.10' | '0.6.9' | '0.6.8' | '0.6.7' | '0.6.6' | '0.6.5' | '0.6.4' | '0.6.3' | '0.6.2' | '0.6.1' | '0.6.0' | '0.5.17' | '0.5.16' | '0.5.15' | '0.5.14' | '0.5.13' | '0.5.12' | '0.5.11' | '0.5.10' | '0.5.9' | '0.5.8' | '0.5.7' | '0.5.6' | '0.5.5' | '0.5.4' | '0.5.3' | '0.5.2' | '0.5.1' | '0.5.0' | '0.4.26' | '0.4.25' | '0.4.24' | '0.4.23' | '0.4.22' | '0.4.21' | '0.4.20' | '0.4.19' | '0.4.18' | '0.4.17' | '0.4.16' | '0.4.15' | '0.4.14' | '0.4.13' | '0.4.12' | '0.4.11' | '0.4.10' | '0.4.9' | '0.4.8' | '0.4.7' | '0.4.6' | '0.4.5' | '0.4.4' | '0.4.3' | '0.4.2' | '0.4.1' | '0.4.0' | '0.3.6' | '0.3.5' | '0.3.4' | '0.3.3' | '0.3.2' | '0.3.1' | '0.3.0' | '0.2.2' | '0.2.1' | '0.2.0' | '0.1.7' | '0.1.6' | '0.1.5' | '0.1.4' | '0.1.3' | '0.1.2' | '0.1.1' export type Releases = { '0.8.30': 'v0.8.30+commit.73712a01.js' '0.8.29': 'v0.8.29+commit.ab55807c.js' '0.8.28': 'v0.8.28+commit.c33e5a8c.js' '0.8.27': 'v0.8.27+commit.4a35a09.js' '0.8.26': 'v0.8.26+commit.8a97fa7a.js' '0.8.25': 'v0.8.25+commit.b61c2a91.js' '0.8.24': 'v0.8.24+commit.e11b9ed9.js' '0.8.23': 'v0.8.23+commit.f704f362' '0.8.22': 'v0.8.22+commit.4fc1097e' '0.8.21': 'v0.8.21+commit.d9974bed' '0.8.20': 'v0.8.20+commit.a1b79de6' '0.8.19': 'v0.8.19+commit.7dd6d404' '0.8.18': 'v0.8.18+commit.87f61d96' '0.8.17': 'v0.8.17+commit.8df45f5f' '0.8.16': 'v0.8.16+commit.07a7930e' '0.8.15': 'v0.8.15+commit.e14f2714' '0.8.14': 'v0.8.14+commit.80d49f37' '0.8.13': 'v0.8.13+commit.abaa5c0e' '0.8.12': 'v0.8.12+commit.f00d7308' '0.8.11': 'v0.8.11+commit.d7f03943' '0.8.10': 'v0.8.10+commit.fc410830' '0.8.9': 'v0.8.9+commit.e5eed63a' '0.8.8': 'v0.8.8+commit.dddeac2f' '0.8.7': 'v0.8.7+commit.e28d00a7' '0.8.6': 'v0.8.6+commit.11564f7e' '0.8.5': 'v0.8.5+commit.a4f2e591' '0.8.4': 'v0.8.4+commit.c7e474f2' '0.8.3': 'v0.8.3+commit.8d00100c' '0.8.2': 'v0.8.2+commit.661d1103' '0.8.1': 'v0.8.1+commit.df193b15' '0.8.0': 'v0.8.0+commit.c7dfd78e' '0.7.6': 'v0.7.6+commit.7338295f' '0.7.5': 'v0.7.5+commit.eb77ed08' '0.7.4': 'v0.7.4+commit.3f05b770' '0.7.3': 'v0.7.3+commit.9bfce1f6' '0.7.2': 'v0.7.2+commit.51b20bc0' '0.7.1': 'v0.7.1+commit.f4a555be' '0.7.0': 'v0.7.0+commit.9e61f92b' '0.6.12': 'v0.6.12+commit.27d51765' '0.6.11': 'v0.6.11+commit.5ef660b1' '0.6.10': 'v0.6.10+commit.00c0fcaf' '0.6.9': 'v0.6.9+commit.3e3065ac' '0.6.8': 'v0.6.8+commit.0bbfe453' '0.6.7': 'v0.6.7+commit.b8d736ae' '0.6.6': 'v0.6.6+commit.6c089d02' '0.6.5': 'v0.6.5+commit.f956cc89' '0.6.4': 'v0.6.4+commit.1dca32f3' '0.6.3': 'v0.6.3+commit.8dda9521' '0.6.2': 'v0.6.2+commit.bacdbe57' '0.6.1': 'v0.6.1+commit.e6f7d5a4' '0.6.0': 'v0.6.0+commit.26b70077' '0.5.17': 'v0.5.17+commit.d19bba13' '0.5.16': 'v0.5.16+commit.9c3226ce' '0.5.15': 'v0.5.15+commit.6a57276f' '0.5.14': 'v0.5.14+commit.01f1aaa4' '0.5.13': 'v0.5.13+commit.5b0b510c' '0.5.12': 'v0.5.12+commit.7709ece9' '0.5.11': 'v0.5.11+commit.c082d0b4' '0.5.10': 'v0.5.10+commit.5a6ea5b1' '0.5.9': 'v0.5.9+commit.e560f70d' '0.5.8': 'v0.5.8+commit.23d335f2' '0.5.7': 'v0.5.7+commit.6da8b019' '0.5.6': 'v0.5.6+commit.b259423e' '0.5.5': 'v0.5.5+commit.47a71e8f' '0.5.4': 'v0.5.4+commit.9549d8ff' '0.5.3': 'v0.5.3+commit.10d17f24' '0.5.2': 'v0.5.2+commit.1df8f40c' '0.5.1': 'v0.5.1+commit.c8a2cb62' '0.5.0': 'v0.5.0+commit.1d4f565a' '0.4.26': 'v0.4.26+commit.4563c3fc' '0.4.25': 'v0.4.25+commit.59dbf8f1' '0.4.24': 'v0.4.24+commit.e67f0147' '0.4.23': 'v0.4.23+commit.124ca40d' '0.4.22': 'v0.4.22+commit.4cb486ee' '0.4.21': 'v0.4.21+commit.dfe3193c' '0.4.20': 'v0.4.20+commit.3155dd80' '0.4.19': 'v0.4.19+commit.c4cbbb05' '0.4.18': 'v0.4.18+commit.9cf6e910' '0.4.17': 'v0.4.17+commit.bdeb9e52' '0.4.16': 'v0.4.16+commit.d7661dd9' '0.4.15': 'v0.4.15+commit.bbb8e64f' '0.4.14': 'v0.4.14+commit.c2215d46' '0.4.13': 'v0.4.13+commit.0fb4cb1a' '0.4.12': 'v0.4.12+commit.194ff033' '0.4.11': 'v0.4.11+commit.68ef5810' '0.4.10': 'v0.4.10+commit.f0d539ae' '0.4.9': 'v0.4.9+commit.364da425' '0.4.8': 'v0.4.8+commit.60cc1668' '0.4.7': 'v0.4.7+commit.822622cf' '0.4.6': 'v0.4.6+commit.2dabbdf0' '0.4.5': 'v0.4.5+commit.b318366e' '0.4.4': 'v0.4.4+commit.4633f3de' '0.4.3': 'v0.4.3+commit.2353da71' '0.4.2': 'v0.4.2+commit.af6afb04' '0.4.1': 'v0.4.1+commit.4fc6fc2c' '0.4.0': 'v0.4.0+commit.acd334c9' '0.3.6': 'v0.3.6+commit.3fc68da5' '0.3.5': 'v0.3.5+commit.5f97274a' '0.3.4': 'v0.3.4+commit.7dab8902' '0.3.3': 'v0.3.3+commit.4dc1cb14' '0.3.2': 'v0.3.2+commit.81ae2a78' '0.3.1': 'v0.3.1+commit.c492d9be' '0.3.0': 'v0.3.0+commit.11d67369' '0.2.2': 'v0.2.2+commit.ef92f566' '0.2.1': 'v0.2.1+commit.91a6b35f' '0.2.0': 'v0.2.0+commit.4dc2445e' '0.1.7': 'v0.1.7+commit.b4e666cc' '0.1.6': 'v0.1.6+commit.d41f8b7c' '0.1.5': 'v0.1.5+commit.23865e39' '0.1.4': 'v0.1.4+commit.5f6c3cdf' '0.1.3': 'v0.1.3+commit.028f561d' '0.1.2': 'v0.1.2+commit.d0d36e3' '0.1.1': 'v0.1.1+commit.6ff4cd6' } export interface Solc { version: string semver: string license: string lowlevel: LowLevelConfig features: FeaturesConfig compile: (input: SolcInputDescription) => SolcOutput loadRemoteVersion: (versionString: string, callback: (err: Error | null, solc?: Solc) => void) => void setupMethods: (soljson: any) => void } interface LowLevelConfig { compileSingle: any compileMulti: any compileCallback: any } interface FeaturesConfig { legacySingleInput: boolean multipleInputs: boolean importCallback: boolean nativeStandardJSON: boolean }