import type { NetworkConnection } from 'hardhat/types/network';
import type { GetContractReturnType, KeyedClient } from '@nomicfoundation/hardhat-viem/types';
import type { Address } from 'viem';
/**
 * ABI of the UpgradeableBeacon contract from OpenZeppelin Contracts 5.x, which is the beacon
 * that `deployBeacon` deploys. Exposed as a `const` so that the beacon contract instances
 * returned by the viem-based API have typed `read` and `write` functions.
 */
export declare const upgradeableBeaconAbi: readonly [{
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "implementation_";
        readonly type: "address";
    }, {
        readonly internalType: "address";
        readonly name: "initialOwner";
        readonly type: "address";
    }];
    readonly stateMutability: "nonpayable";
    readonly type: "constructor";
}, {
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "implementation";
        readonly type: "address";
    }];
    readonly name: "BeaconInvalidImplementation";
    readonly type: "error";
}, {
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "owner";
        readonly type: "address";
    }];
    readonly name: "OwnableInvalidOwner";
    readonly type: "error";
}, {
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "account";
        readonly type: "address";
    }];
    readonly name: "OwnableUnauthorizedAccount";
    readonly type: "error";
}, {
    readonly anonymous: false;
    readonly inputs: readonly [{
        readonly indexed: true;
        readonly internalType: "address";
        readonly name: "previousOwner";
        readonly type: "address";
    }, {
        readonly indexed: true;
        readonly internalType: "address";
        readonly name: "newOwner";
        readonly type: "address";
    }];
    readonly name: "OwnershipTransferred";
    readonly type: "event";
}, {
    readonly anonymous: false;
    readonly inputs: readonly [{
        readonly indexed: true;
        readonly internalType: "address";
        readonly name: "implementation";
        readonly type: "address";
    }];
    readonly name: "Upgraded";
    readonly type: "event";
}, {
    readonly inputs: readonly [];
    readonly name: "implementation";
    readonly outputs: readonly [{
        readonly internalType: "address";
        readonly name: "";
        readonly type: "address";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}, {
    readonly inputs: readonly [];
    readonly name: "owner";
    readonly outputs: readonly [{
        readonly internalType: "address";
        readonly name: "";
        readonly type: "address";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}, {
    readonly inputs: readonly [];
    readonly name: "renounceOwnership";
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
    readonly type: "function";
}, {
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "newOwner";
        readonly type: "address";
    }];
    readonly name: "transferOwnership";
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
    readonly type: "function";
}, {
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "newImplementation";
        readonly type: "address";
    }];
    readonly name: "upgradeTo";
    readonly outputs: readonly [];
    readonly stateMutability: "nonpayable";
    readonly type: "function";
}];
/**
 * A viem contract instance for an UpgradeableBeacon contract.
 */
export type UpgradeableBeaconContract = GetContractReturnType<typeof upgradeableBeaconAbi>;
/**
 * Gets a viem contract instance for the UpgradeableBeacon at the given address.
 * The beacon contract is not a project artifact, so the instance is created directly with
 * viem's `getContract` instead of `connection.viem.getContractAt`, using the same clients
 * that hardhat-viem would use by default.
 */
export declare function getUpgradeableBeaconContract(connection: NetworkConnection, address: Address, client?: KeyedClient): Promise<UpgradeableBeaconContract>;
//# sourceMappingURL=upgradeable-beacon.d.ts.map