Error: missing arguemnt: types/values length mismatch (count=0, expectedCount=1, code=MISSING_ARGUMENT, version=6.11.1)

62 views Asked by At

how can i deploy the contracts below as Transparent upgradable proxies using hardhat and javaScript, note that the argument initialValues is required in order to call to initialize all contracts

//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

contract Messenger {
    uint256 i;

    struct Message {
        address sender;
        address reciever;
        string notes;
    }

    address senderAddress;
    mapping(uint256 => Messenger) public IdTochat;

    function initialize(address _config) external {
        senderAddress = config.getUserProfileAddress();
    }

    function sendMessage(string memory _message) public {
        require(senderAddress == _msgSender());
        IdTochat[i] = Message(senderAddress, receieverAddress, _message);
        i++;
    }

    function getNumberOfMessages()external view returns(uint256){
        return i;
    }
}

//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

contract Base {
    address private messengerContractAddress;
    enter code here

    function initialize(bytes calldata initialValue) external {
        // Decode the address from the initialization data
        messengerContractAddress = abi.decode(
            initialValue,
            (messengerContractAddress)
        );
    }

    function getMessengerContractAddress() public view returns 
    (address) {
        return messengerContractAddress;
    }
}
pragma solidity 0.8.19;

contract Config {
    struct ConfigData {
        address messenger;
        address user;
    }

    uint256 public constant ADDRESS_MESSENGER =
        uint256(keccak256("ADDRESS_MESSENGER"));
    uint256 public constant ADDRESS_USER = uint256(keccak256("ADDRESS_USER"));

    mapping(uint256 => uint256) public configMap;

    function initialize(bytes calldata initialValue) external {
        ConfigData memory configData = abi.decode(initialValues, (ConfigData));
        configMap[ADDRESS_MESSENGER] = uint256(uint160(configData.messenger));
        configMap[ADDRESS_MESSENGER] = uint256(uint160(configData.user));
    }


    function geMessengerAddress() public view returns (address) {
        return address(uint160(configData.messenger));
    }


    function getUserProfileAddress() public view returns (address) {
        return address(uint160(configData.user));
    }

}

error message

0

There are 0 answers