aboutsummaryrefslogblamecommitdiffstats
path: root/packages/typescript-typings/types/solc/index.d.ts
blob: 2cfd4a030629e55cb5cc4f52afad2598f4f736d2 (plain) (tree)
1
2
                       
                                               


























                                                                    
































                                                        




















                                                                                                          




                                                              
                                   
     
                                                                                                                 





                                                                
                                                                                                           
     



                                                                

                                                             
declare module 'solc' {
    import { SolcError } from 'ethereum-types';
    export interface ContractCompilationResult {
        srcmap: string;
        srcmapRuntime: string;
        bytecode: string;
        runtimeBytecode: string;
        interface: string;
    }
    export interface CompilationResult {
        errors: string[];
        contracts: {
            [contractIdentifier: string]: ContractCompilationResult;
        };
        sources: {
            [sourceName: string]: {
                AST: any;
            };
        };
        sourceList: string[];
    }
    export interface ImportContents {
        contents: string;
    }
    export interface InputSources {
        sources: {
            [fileName: string]: string;
        };
    }
    export interface BaseSource {
        keccak256?: string;
    }
    export interface InMemorySource extends BaseSource {
        content: string;
    }
    export interface UrlSource extends BaseSource {
        urls: string[];
    }
    export type Source = UrlSource | InMemorySource;
    export type OutputField =
        | '*'
        | 'ast'
        | 'legacyAST'
        | 'abi'
        | 'devdoc'
        | 'userdoc'
        | 'metadata'
        | 'ir'
        | 'evm.assembly'
        | 'evm.legacyAssembly'
        | 'evm.bytecode.object'
        | 'evm.bytecode.opcodes'
        | 'evm.bytecode.sourceMap'
        | 'evm.bytecode.linkReferences'
        | 'evm.deployedBytecode.object'
        | 'evm.deployedBytecode.opcodes'
        | 'evm.deployedBytecode.sourceMap'
        | 'evm.deployedBytecode.linkReferences'
        | 'evm.methodIdentifiers'
        | 'evm.gasEstimates'
        | 'ewasm.wast'
        | 'ewasm.wasm';
    export interface CompilerSettings {
        remappings?: string[];
        optimizer?: {
            enabled: boolean;
            runs?: number;
        };
        evmVersion?: 'homestead' | 'tangerineWhistle' | 'spuriousDragon' | 'byzantium' | 'constantinople';
        metadata?: {
            useLiteralContent: true;
        };
        libraries?: {
            [fileName: string]: {
                [libName: string]: string;
            };
        };
        outputSelection: {
            [fileName: string]: {
                [contractName: string]: OutputField[];
            };
        };
    }
    export interface StandardInput {
        language: 'Solidity' | 'serpent' | 'lll' | 'assembly';
        sources: {
            [fileName: string]: Source;
        };
        settings: CompilerSettings;
    }
    export { ErrorType, ErrorSeverity, SolcError, StandardContractOutput, StandardOutput } from 'ethereum-types';
    export interface SolcInstance {
        compile(
            sources: InputSources,
            optimizerEnabled: number,
            findImports: (importPath: string) => ImportContents,
        ): CompilationResult;
        compileStandardWrapper(input: string, findImports: (importPath: string) => ImportContents): string;
    }
    export function loadRemoteVersion(
        versionName: string,
        cb: (err: SolcError | null, res?: SolcInstance) => void,
    ): void;
    export function setupMethods(solcBin: any): SolcInstance;
}