export interface FetcherConstructor { readonly fetcherName: string; forNetworkId(networkId: number, options?: FetcherOptions): Promise; getSupportedNetworks(): SupportedNetworks; } export interface Fetcher { /** * should have same name as the static version */ readonly fetcherName: string; /** * returns null if no sources for address * (also may return null if the sources fall under an unsupported * case, although currently there are no such cases) */ fetchSourcesForAddress(address: string): Promise; } export interface NetworkInfo { name: string; networkId: number; chainId: number; } export interface SupportedNetworks { [name: string]: NetworkInfo; } export interface FetcherOptions { apiKey?: string; } export interface SourceInfo { contractName?: string; sources: SourcesByPath; options: CompilerOptions; } export interface SourcesByPath { [sourcePath: string]: string; } export type CompilerOptions = SolcOptions | VyperOptions; export interface SolcOptions { language: "Solidity" | "Yul"; version: string; settings: SolcSettings; specializations: SolcSpecializations; } export interface VyperOptions { language: "Vyper"; version: string; settings: VyperSettings; specializations: VyperSpecializations; } export interface SolcSettings { remappings?: string[]; optimizer?: OptimizerSettings; evmVersion?: string; debug?: DebugSettings; metadata?: MetadataSettings; viaIR?: boolean; libraries?: LibrarySettings; compilationTarget?: { [sourcePath: string]: string; }; } export interface VyperSettings { evmVersion?: string; optimize?: boolean; } export interface SolcSpecializations { libraries?: LibrarySettings; constructorArguments?: string; } export interface VyperSpecializations { constructorArguments?: string; } export interface SolcSources { [sourcePath: string]: { keccak256?: string; content?: string; urls?: string; }; } export interface SolcInput { language: "Solidity" | "Yul" | "SolidityAST"; sources: SolcSources; settings: SolcSettings; } export interface SolcMetadata { language: "Solidity" | "Yul"; compiler: { version: string; }; settings: SolcSettings; sources: SolcSources; version: number; } export interface LibrarySettings { [contractPath: string]: Libraries; } export interface Libraries { [libraryName: string]: string; } export interface MetadataSettings { useLiteralContent?: boolean; bytecodeHash?: "none" | "ipfs" | "bzzr1"; appendCBOR?: boolean; } export interface DebugSettings { revertStrings?: "default" | "strip" | "debug" | "verboseDebug"; } export interface OptimizerSettings { enabled?: boolean; runs?: number; details?: OptimizerDetails; } export interface OptimizerDetails { peephole?: boolean; jumpdestRemover?: boolean; orderLiterals?: boolean; deduplicate?: boolean; cse?: boolean; constantOptimizer?: boolean; yul?: boolean; yulDetails?: YulDetails; } export interface YulDetails { stackAllocation?: boolean; optimizerSteps?: string; }