import { MultiProvider } from '../../providers/MultiProvider.js';
import { ChainMap, ChainName } from '../../types.js';
import { BuildArtifact, CompilerOptions, ContractVerificationInput, SolidityStandardJsonInput } from './types.js';
export declare class ContractVerifier {
    protected readonly multiProvider: MultiProvider;
    protected readonly apiKeys: ChainMap<string>;
    protected logger: import("pino").default.Logger<never>;
    protected contractSourceMap: {
        [contractName: string]: string;
    };
    protected readonly standardInputJson: SolidityStandardJsonInput;
    protected readonly compilerOptions: CompilerOptions;
    constructor(multiProvider: MultiProvider, apiKeys: ChainMap<string>, buildArtifact: BuildArtifact, licenseType: CompilerOptions['licenseType']);
    verifyContract(chain: ChainName, input: ContractVerificationInput, logger?: import("pino").default.Logger<never>): Promise<void>;
    private submitForm;
    private verify;
    private checkStatus;
    private getProxyData;
    private getImplementationData;
    /**
     * Filters the solidity standard input for a specific contract name.
     *
     * This is a BFS impl to traverse the source input dependency graph.
     * 1. Named contract file is set as root node.
     * 2. The next level is formed by the direct imports of the contract file.
     * 3. Each subsequent level's dependencies form the next level, etc.
     * 4. The queue tracks the next files to process, and ensures the dependency graph explorered level by level.
     */
    private filterStandardInputJsonByContractName;
    private getContractFile;
    private getAllImportStatements;
    private resolveImportPath;
}
//# sourceMappingURL=ContractVerifier.d.ts.map