def METHOD_NAME(config: Config, contract: str, sender: str, data: Optional[str], value: Optional[str]):
    value = value or ""
    neon_token_mint = ElfParams().neon_token_mint
    chain_id = ElfParams().chain_id
    max_evm_steps_to_execute = config.max_evm_step_cnt_emulate
    if data is not None:
        if not data.startswith("0x"):
            data = "0x" + data
        data = {"data": data}
    try:
        return NeonCli(config).call(
            'emulate',
            '--token_mint', str(neon_token_mint),
            '--chain_id', str(chain_id),
            '--max_steps_to_execute', str(max_evm_steps_to_execute),
            sender,
            contract,
            value,
            data=data
        )
    except subprocess.TimeoutExpired:
        raise NoMoreRetriesError()
    except subprocess.CalledProcessError as err:
        msg = convert_evm_error(str(err.stderr))
        raise EthereumError(message=msg)