import { ethers } from 'ethers';
import { LibraryReference } from '../../types/library';
export interface LibraryConfig {
    name: string;
    address?: string;
    bytecode?: string;
    abi?: any[];
    dependencies?: string[];
}
interface LibraryDeploymentResult {
    name: string;
    address: string;
    deploymentHash?: string;
}
export declare class LibraryManager {
    private deployedLibraries;
    private libraryConfigs;
    private provider;
    private signer;
    private timeline;
    constructor(provider: ethers.providers.Provider, signer: ethers.Signer, libraries?: Record<string, LibraryConfig>);
    resolveLibraries(requiredLibraries: string[]): Promise<Record<string, string>>;
    private resolveLibrary;
    private deployLibrary;
    private linkLibrary;
    /**
     * Deploy a library using a specific wallet
     * @param lib Library reference to deploy
     * @param wallet Wallet to use for deployment
     * @returns Promise<LibraryDeploymentResult>
     */
    deployLibraryWithWallet(lib: LibraryReference, wallet: ethers.Wallet): Promise<LibraryDeploymentResult>;
}
export {};
//# sourceMappingURL=libraryManager.d.ts.map