The Admin Upgradeable Proxy is based on having the target stored on a specific storage slot changeable by the proxy's owner.
AdminUpgradeableProxy.sol
contract AdminUpgradeableProxy is ProxyOwnable, Proxy {
bytes32 internal constant _IMPLEMENTATION_SLOT =
bytes32(uint256(keccak256("proxy.implementation")) - 1);
event Upgraded(address indexed _implementation);
constructor(
address _owner,
address _target,
bytes memory _initialCall
);
function upgradeTo(
address _newImplementation,
bytes memory _oldImplementationData,
bytes memory _newImplementationData
) external;
function implementation()
public
view
override
returns (address _implementation);
function proxyType() public pure override returns (uint256 _type);
function _setImplementation(address _newImplementation) internal;
}