import fs from "fs";
import { DirectoryTree } from "directory-tree";
import { ExternalContracts, LockliftConfig } from "../../config";
import { BuilderConfig } from "./index";
import * as Buffer from "buffer";
import { ExecSyncOptionsWithBufferEncoding, ExecSyncOptionsWithStringEncoding } from "child_process";
export declare function checkDirEmpty(dir: fs.PathLike): fs.PathLike | boolean;
export declare function flatDirTree(tree: DirectoryTree): DirectoryTree[] | undefined;
export declare const compilerConfigResolver: ({ compiler, linker, }: Pick<LockliftConfig, "compiler" | "linker">) => Promise<BuilderConfig>;
export declare const tvcToBase64: (tvc: Buffer) => string;
export declare const extractContractName: (pathToFile: string) => string;
export declare function execSyncWrapper(command: string): Buffer;
export declare function execSyncWrapper(command: string, options: ExecSyncOptionsWithStringEncoding): string;
export declare function execSyncWrapper(command: string, options: ExecSyncOptionsWithBufferEncoding): Buffer;
export declare const tryToGetNodeModules: () => string | undefined;
export declare const isValidCompilerOutputLog: (output: string) => boolean;
export declare const resolveExternalContracts: (externalContracts?: ExternalContracts) => Promise<{
    contractArtifacts: string[];
    contractsToBuild: string[];
}>;
export declare const compileBySolC: ({ contracts, compilerVersion, buildFolder, disableIncludePath, compilerPath, compilerParams, linkerLibPath, linkerPath, }: {
    contracts: Array<{
        path: string;
        contractFileName: string;
    }>;
    compilerVersion: string;
    buildFolder: string;
    disableIncludePath: boolean;
    compilerPath: string;
    compilerParams?: string[];
    linkerLibPath: string;
    linkerPath: string;
}) => Promise<void>;
export declare const compileBySolD: ({ contracts, compilerVersion, buildFolder, disableIncludePath, compilerPath, compilerParams, }: {
    contracts: Array<{
        path: string;
        contractFileName: string;
    }>;
    compilerVersion: string;
    buildFolder: string;
    disableIncludePath: boolean;
    compilerPath: string;
    compilerParams?: string[];
    soldPath: string;
}) => Promise<void>;
