export interface SolcInput { language?: 'Solidity' | 'Yul'; sources?: { [file: string]: { keccak256?: string; urls?: string[]; content?: string; }; }; settings?: { remappings?: string[]; optimizer?: { enabled?: boolean; runs?: number; details?: { peephole?: boolean; jumpdestRemover?: boolean; orderLiterals?: boolean; deduplicate?: boolean; cse?: boolean; constantOptimizer?: boolean; yul?: boolean; yulDetails?: { stackAllocation?: boolean; }; }; }; evmVersion?: 'homestead' | 'tangerineWhistle' | 'spuriousDragon' | 'byzantium' | 'constantinople' | 'petersburg' | 'istanbul' | 'berlin'; metadata?: { useLiteralContent?: boolean; }; libraries?: { [file: string]: { [contract: string]: string; }; }; outputSelection?: { [file: string]: { [contract: string]: ('ast' | 'legacyAST' | 'abi' | 'devdoc' | 'userdoc' | 'metadata' | 'ir' | 'irOptimized' | 'evm.assembly' | 'evm.legacyAssembly' | 'evm.bytecode.object' | 'evm.bytecode.opcodes' | 'evm.bytecode.sourceMap' | 'evm.bytecode.linkReferences' | 'evm.deployedBytecode*' | 'evm.methodIdentifiers' | 'evm.gasEstimates')[]; }; }; }; } export interface SolcOutput { errors?: { sourceLocation?: { file: string; start: number; end: number; }; secondarySourceLocations?: { file: string; start: number; end: number; message: string; }[]; type: 'TypeError' | 'InternalCompilerError' | 'Exception'; component: 'general' | 'ewasm'; severity: 'error' | 'warning'; message: string; formattedMessage?: string; }[]; sources?: { [file: string]: { id: number; ast: any; legacyAST: any; }; }; contracts?: { [file: string]: { [contract: string]: { abi: any[]; metadata: string; userdoc: any; devdoc: any; ir: string; evm: { assembly: string; legacyAssembly?: any; bytecode?: { object: string; opcodes: string; sourceMap: string; linkReferences: { [file: string]: { [lib: string]: { start: number; length: number; }[]; }; }; }; deployedBytecode?: { object: string; opcodes: string; sourceMap: string; linkReferences: { [file: string]: { [lib: string]: { start: number; length: number; }[]; }; }; }; methodIdentifiers?: { [fn: string]: string; }; gasEstimates?: { creation?: { codeDepositCost: string; executionCost: string; totalCost: string; }; external?: { [fn: string]: string; }; internal?: { [fn: string]: string; }; }; }; ewasm?: { wast?: string; wasm?: string; }; }; }; }; }