interface IBeacon {
        /**
         * @dev Must return an address that can be used as a delegate call target.
         *
         * {BeaconProxy} will check that this address is a contract.
         */
        function implementation() external view returns (address);
    }
/**
 * @dev This is the interface that {BeaconProxy} expects of its beacon.
 */
function implementation() external view returns (address);

/**
 * @dev Must return an address that can be used as a delegate call target.
 *
 * {BeaconProxy} will check that this address is a contract.
 */