interface ForgeConfig {
    src: string;
    test: string;
    script: string;
    out: string;
    libs: string[];
    cache: boolean;
    cache_path: string;
    eth_rpc_url: string | null;
    remappings: string[];
    [key: string]: unknown;
}
/**
 * Get forge config as a parsed json object.
 */
declare function getForgeConfig(profile?: string): Promise<ForgeConfig>;
/**
 * Get the value of "src" from forge config.
 * The path to the contract sources relative to the root of the project.
 */
declare function getSrcDirectory(profile?: string): Promise<string>;
/**
 * Get the value of "script" from forge config.
 * The path to the contract sources relative to the root of the project.
 */
declare function getScriptDirectory(profile?: string): Promise<string>;
/**
 * Get the value of "test" from forge config.
 * The path to the test contract sources relative to the root of the project.
 */
declare function getTestDirectory(profile?: string): Promise<string>;
/**
 * Get the value of "out" from forge config.
 * The path to put contract artifacts in, relative to the root of the project.
 */
declare function getOutDirectory(profile?: string): Promise<string>;
/**
 * Get the value of "eth_rpc_url" from forge config, default to "http://127.0.0.1:8545"
 * @param profile The foundry profile to use
 * @returns The rpc url
 */
declare function getRpcUrl(profile?: string): Promise<string>;
/**
 * Get the value of "remappings" from forge config
 * @param profile The foundry profile to use
 * @returns The array of remapping tuples `[from, to]`
 */
declare function getRemappings(profile?: string): Promise<[string, string][]>;
/**
 * Execute a forge command
 * @param args The arguments to pass to forge
 * @param options { profile?: The foundry profile to use; silent?: If true, nothing will be logged to the console }
 */
declare function forge(args: string[], options?: {
    profile?: string;
    silent?: boolean;
    env?: NodeJS.ProcessEnv;
    cwd?: string;
}): Promise<void>;
/**
 * Execute a cast command
 * @param args The arguments to pass to cast
 * @returns Stdout of the command
 */
declare function cast(args: string[], options?: {
    profile?: string;
}): Promise<string>;
/**
 * Start an anvil chain
 * @param args The arguments to pass to anvil
 * @returns Stdout of the command
 */
declare function anvil(args: string[]): Promise<string>;

export { ForgeConfig, anvil, cast, forge, getForgeConfig, getOutDirectory, getRemappings, getRpcUrl, getScriptDirectory, getSrcDirectory, getTestDirectory };
