{
  "_format": "hh-sol-artifact-1",
  "contractName": "MSVBase",
  "sourceName": "contracts/MSVBase.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "AddressEmptyCode",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "CannotRemoveStrategyWithAssets",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "DepositError",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "contract IInvestStrategy",
          "name": "strategy",
          "type": "address"
        }
      ],
      "name": "DuplicatedStrategy",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidQueue",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "InvalidQueueIndexDuplicated",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidQueueLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidStrategiesLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidStrategy",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidStrategyAsset",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "InvalidStrategyInDepositQueue",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "InvalidStrategyInWithdrawQueue",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "OnlyStrategyStorageExposed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "RebalanceAmountExceedsMaxDeposit",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "RebalanceAmountExceedsMaxWithdraw",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "WithdrawError",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "DepositFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "DepositFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8[]",
          "name": "queue",
          "type": "uint8[]"
        }
      ],
      "name": "DepositQueueChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "DisconnectFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "DisconnectFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IInvestStrategy",
          "name": "strategyFrom",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "contract IInvestStrategy",
          "name": "strategyTo",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Rebalance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IInvestStrategy",
          "name": "strategy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "StrategyAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IInvestStrategy",
          "name": "oldStrategy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IInvestStrategy",
          "name": "newStrategy",
          "type": "address"
        }
      ],
      "name": "StrategyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IInvestStrategy",
          "name": "oldStrategy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IInvestStrategy",
          "name": "newStrategy",
          "type": "address"
        }
      ],
      "name": "StrategyChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "contract IInvestStrategy",
          "name": "strategy",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "StrategyRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "WithdrawFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "reason",
          "type": "bytes"
        }
      ],
      "name": "WithdrawFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8[]",
          "name": "queue",
          "type": "uint8[]"
        }
      ],
      "name": "WithdrawQueueChanged",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MAX_STRATEGIES",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IInvestStrategy",
          "name": "newStrategy",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "initStrategyData",
          "type": "bytes"
        }
      ],
      "name": "addStrategy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8[]",
          "name": "newDepositQueue_",
          "type": "uint8[]"
        }
      ],
      "name": "changeDepositQueue",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8[]",
          "name": "newWithdrawQueue_",
          "type": "uint8[]"
        }
      ],
      "name": "changeWithdrawQueue",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "depositQueue",
      "outputs": [
        {
          "internalType": "uint8[32]",
          "name": "",
          "type": "uint8[32]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "depositToStrategies",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "strategyIndex",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "method",
          "type": "uint8"
        },
        {
          "internalType": "bytes",
          "name": "extraData",
          "type": "bytes"
        }
      ],
      "name": "forwardToStrategy",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "slot",
          "type": "bytes32"
        }
      ],
      "name": "getBytesSlot",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "strategyFromIdx",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "strategyToIdx",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "rebalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "strategyIndex",
          "type": "uint8"
        },
        {
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        }
      ],
      "name": "removeStrategy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "strategyIndex",
          "type": "uint8"
        },
        {
          "internalType": "contract IInvestStrategy",
          "name": "newStrategy",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "initStrategyData",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "force",
          "type": "bool"
        }
      ],
      "name": "replaceStrategy",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "strategies",
      "outputs": [
        {
          "internalType": "contract IInvestStrategy[32]",
          "name": "",
          "type": "address[32]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawQueue",
      "outputs": [
        {
          "internalType": "uint8[32]",
          "name": "",
          "type": "uint8[32]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
