text: # https://etherscan.io/address/0x03403154afc09Ce8e44C3B185C82C6aD5f86b9ab
  YVAULT_ABI = [
      {'inputs': [{'internalType': 'address', 'name': '_token', 'type': 'address'},
                  {'internalType': 'address', 'name': '_controller', 'type': 'address'}],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'constructor'},
      {'anonymous': False,
       'inputs': [{'indexed': True,
                   'internalType': 'address',
                   'name': 'owner',
                   'type': 'address'},
                  {'indexed': True,
                   'internalType': 'address',
                   'name': 'spender',
                   'type': 'address'},
                  {'indexed': False,
                   'internalType': 'uint256',
                   'name': 'value',
                   'type': 'uint256'}],
       'name': 'Approval',
       'type': 'event'},
      {'anonymous': False,
       'inputs': [{'indexed': True,
                   'internalType': 'address',
                   'name': 'from',
                   'type': 'address'},
                  {'indexed': True,
                   'internalType': 'address',
                   'name': 'to',
                   'type': 'address'},
                  {'indexed': False,
                   'internalType': 'uint256',
                   'name': 'value',
                   'type': 'uint256'}],
       'name': 'Transfer',
       'type': 'event'},
      {'constant': True,
       'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'},
                  {'internalType': 'address', 'name': 'spender', 'type': 'address'}],
       'name': 'allowance',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address', 'name': 'spender', 'type': 'address'},
                  {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}],
       'name': 'approve',
       'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'available',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'balance',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [{'internalType': 'address',
                   'name': 'account',
                   'type': 'address'}],
       'name': 'balanceOf',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'controller',
       'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'decimals',
       'outputs': [{'internalType': 'uint8', 'name': '', 'type': 'uint8'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address', 'name': 'spender', 'type': 'address'},
                  {'internalType': 'uint256', 'name': 'subtractedValue', 'type': 'uint256'}],
       'name': 'decreaseAllowance',
       'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'uint256',
                   'name': '_amount',
                   'type': 'uint256'}],
       'name': 'deposit',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [],
       'name': 'depositAll',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [],
       'name': 'earn',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'getPricePerFullShare',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'governance',
       'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address', 'name': 'spender', 'type': 'address'},
                  {'internalType': 'uint256', 'name': 'addedValue', 'type': 'uint256'}],
       'name': 'increaseAllowance',
       'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'max',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'min',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'name',
       'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address',
                   'name': '_controller',
                   'type': 'address'}],
       'name': 'setController',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address',
                   'name': '_governance',
                   'type': 'address'}],
       'name': 'setGovernance',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'uint256', 'name': '_min', 'type': 'uint256'}],
       'name': 'setMin',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'string', 'name': '_name', 'type': 'string'}],
       'name': 'setName',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'string', 'name': '_symbol', 'type': 'string'}],
       'name': 'setSymbol',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'symbol',
       'outputs': [{'internalType': 'string', 'name': '', 'type': 'string'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'token',
       'outputs': [{'internalType': 'contract IERC20',
                    'name': '',
                    'type': 'address'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': True,
       'inputs': [],
       'name': 'totalSupply',
       'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
       'payable': False,
       'stateMutability': 'view',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address',
                   'name': 'recipient',
                   'type': 'address'},
                  {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}],
       'name': 'transfer',
       'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'address', 'name': 'sender', 'type': 'address'},
                  {'internalType': 'address', 'name': 'recipient', 'type': 'address'},
                  {'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}],
       'name': 'transferFrom',
       'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [{'internalType': 'uint256',
                   'name': '_shares',
                   'type': 'uint256'}],
       'name': 'withdraw',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'},
      {'constant': False,
       'inputs': [],
       'name': 'withdrawAll',
       'outputs': [],
       'payable': False,
       'stateMutability': 'nonpayable',
       'type': 'function'}
  ]
  
  YTOKEN_ABI = [
      {'name': 'Transfer',
       'inputs': [{'name': 'sender', 'type': 'address', 'indexed': True},
                  {'name': 'receiver', 'type': 'address', 'indexed': True},
                  {'name': 'value', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'Approval',
       'inputs': [{'name': 'owner', 'type': 'address', 'indexed': True},
                  {'name': 'spender', 'type': 'address', 'indexed': True},
                  {'name': 'value', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyAdded',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True},
                  {'name': 'debtRatio', 'type': 'uint256', 'indexed': False},
                  {'name': 'minDebtPerHarvest', 'type': 'uint256', 'indexed': False},
                  {'name': 'maxDebtPerHarvest', 'type': 'uint256', 'indexed': False},
                  {'name': 'performanceFee', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyReported',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True},
                  {'name': 'gain', 'type': 'uint256', 'indexed': False},
                  {'name': 'loss', 'type': 'uint256', 'indexed': False},
                  {'name': 'debtPaid', 'type': 'uint256', 'indexed': False},
                  {'name': 'totalGain', 'type': 'uint256', 'indexed': False},
                  {'name': 'totalLoss', 'type': 'uint256', 'indexed': False},
                  {'name': 'totalDebt', 'type': 'uint256', 'indexed': False},
                  {'name': 'debtAdded', 'type': 'uint256', 'indexed': False},
                  {'name': 'debtRatio', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateGovernance',
       'inputs': [{'name': 'governance', 'type': 'address', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateManagement',
       'inputs': [{'name': 'management', 'type': 'address', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateGuestList',
       'inputs': [{'name': 'guestList', 'type': 'address', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateRewards',
       'inputs': [{'name': 'rewards', 'type': 'address', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateDepositLimit',
       'inputs': [{'name': 'depositLimit', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdatePerformanceFee',
       'inputs': [{'name': 'performanceFee', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateManagementFee',
       'inputs': [{'name': 'managementFee', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateGuardian',
       'inputs': [{'name': 'guardian', 'type': 'address', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'EmergencyShutdown',
       'inputs': [{'name': 'active', 'type': 'bool', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'UpdateWithdrawalQueue',
       'inputs': [{'name': 'queue', 'type': 'address[20]', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyUpdateDebtRatio',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True},
                  {'name': 'debtRatio', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyUpdateMinDebtPerHarvest',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True},
                  {'name': 'minDebtPerHarvest', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyUpdateMaxDebtPerHarvest',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True},
                  {'name': 'maxDebtPerHarvest', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyUpdatePerformanceFee',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True},
                  {'name': 'performanceFee', 'type': 'uint256', 'indexed': False}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyMigrated',
       'inputs': [{'name': 'oldVersion', 'type': 'address', 'indexed': True},
                  {'name': 'newVersion', 'type': 'address', 'indexed': True}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyRevoked',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyRemovedFromQueue',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True}],
       'anonymous': False,
       'type': 'event'},
      {'name': 'StrategyAddedToQueue',
       'inputs': [{'name': 'strategy', 'type': 'address', 'indexed': True}],
       'anonymous': False,
       'type': 'event'},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'initialize',
       'inputs': [{'name': 'token', 'type': 'address'},
                  {'name': 'governance', 'type': 'address'},
                  {'name': 'rewards', 'type': 'address'},
                  {'name': 'nameOverride', 'type': 'string'},
                  {'name': 'symbolOverride', 'type': 'string'}],
       'outputs': []},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'initialize',
       'inputs': [{'name': 'token', 'type': 'address'},
                  {'name': 'governance', 'type': 'address'},
                  {'name': 'rewards', 'type': 'address'},
                  {'name': 'nameOverride', 'type': 'string'},
                  {'name': 'symbolOverride', 'type': 'string'},
                  {'name': 'guardian', 'type': 'address'}],
       'outputs': []},
      {'stateMutability': 'pure',
       'type': 'function',
       'name': 'apiVersion',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'string'}],
       'gas': 4546},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setName',
       'inputs': [{'name': 'name', 'type': 'string'}],
       'outputs': [],
       'gas': 107044},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setSymbol',
       'inputs': [{'name': 'symbol', 'type': 'string'}],
       'outputs': [],
       'gas': 71894},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setGovernance',
       'inputs': [{'name': 'governance', 'type': 'address'}],
       'outputs': [],
       'gas': 36365},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'acceptGovernance',
       'inputs': [],
       'outputs': [],
       'gas': 37637},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setManagement',
       'inputs': [{'name': 'management', 'type': 'address'}],
       'outputs': [],
       'gas': 37775},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setGuestList',
       'inputs': [{'name': 'guestList', 'type': 'address'}],
       'outputs': [],
       'gas': 37805},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setRewards',
       'inputs': [{'name': 'rewards', 'type': 'address'}],
       'outputs': [],
       'gas': 37835},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setLockedProfitDegration',
       'inputs': [{'name': 'degration', 'type': 'uint256'}],
       'outputs': [],
       'gas': 36519},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setDepositLimit',
       'inputs': [{'name': 'limit', 'type': 'uint256'}],
       'outputs': [],
       'gas': 37795},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setPerformanceFee',
       'inputs': [{'name': 'fee', 'type': 'uint256'}],
       'outputs': [],
       'gas': 37929},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setManagementFee',
       'inputs': [{'name': 'fee', 'type': 'uint256'}],
       'outputs': [],
       'gas': 37959},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setGuardian',
       'inputs': [{'name': 'guardian', 'type': 'address'}],
       'outputs': [],
       'gas': 39203},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setEmergencyShutdown',
       'inputs': [{'name': 'active', 'type': 'bool'}],
       'outputs': [],
       'gas': 39274},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'setWithdrawalQueue',
       'inputs': [{'name': 'queue', 'type': 'address[20]'}],
       'outputs': [],
       'gas': 763950},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'transfer',
       'inputs': [{'name': 'receiver', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 76768},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'transferFrom',
       'inputs': [{'name': 'sender', 'type': 'address'},
                  {'name': 'receiver', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 116531},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'approve',
       'inputs': [{'name': 'spender', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 38271},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'increaseAllowance',
       'inputs': [{'name': 'spender', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 40312},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'decreaseAllowance',
       'inputs': [{'name': 'spender', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 40336},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'permit',
       'inputs': [{'name': 'owner', 'type': 'address'},
                  {'name': 'spender', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'},
                  {'name': 'expiry', 'type': 'uint256'},
                  {'name': 'signature', 'type': 'bytes'}],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 81264},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'totalAssets',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 4098},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'deposit',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'deposit',
       'inputs': [{'name': '_amount', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'deposit',
       'inputs': [{'name': '_amount', 'type': 'uint256'},
                  {'name': 'recipient', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'maxAvailableShares',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 383839},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'withdraw',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'withdraw',
       'inputs': [{'name': 'maxShares', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'withdraw',
       'inputs': [{'name': 'maxShares', 'type': 'uint256'},
                  {'name': 'recipient', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'withdraw',
       'inputs': [{'name': 'maxShares', 'type': 'uint256'},
                  {'name': 'recipient', 'type': 'address'},
                  {'name': 'maxLoss', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'pricePerShare',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 18195},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'addStrategy',
       'inputs': [{'name': 'strategy', 'type': 'address'},
                  {'name': 'debtRatio', 'type': 'uint256'},
                  {'name': 'minDebtPerHarvest', 'type': 'uint256'},
                  {'name': 'maxDebtPerHarvest', 'type': 'uint256'},
                  {'name': 'performanceFee', 'type': 'uint256'}],
       'outputs': [],
       'gas': 1485796},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'updateStrategyDebtRatio',
       'inputs': [{'name': 'strategy', 'type': 'address'},
                  {'name': 'debtRatio', 'type': 'uint256'}],
       'outputs': [],
       'gas': 115193},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'updateStrategyMinDebtPerHarvest',
       'inputs': [{'name': 'strategy', 'type': 'address'},
                  {'name': 'minDebtPerHarvest', 'type': 'uint256'}],
       'outputs': [],
       'gas': 42441},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'updateStrategyMaxDebtPerHarvest',
       'inputs': [{'name': 'strategy', 'type': 'address'},
                  {'name': 'maxDebtPerHarvest', 'type': 'uint256'}],
       'outputs': [],
       'gas': 42471},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'updateStrategyPerformanceFee',
       'inputs': [{'name': 'strategy', 'type': 'address'},
                  {'name': 'performanceFee', 'type': 'uint256'}],
       'outputs': [],
       'gas': 41251},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'migrateStrategy',
       'inputs': [{'name': 'oldVersion', 'type': 'address'},
                  {'name': 'newVersion', 'type': 'address'}],
       'outputs': [],
       'gas': 1141468},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'revokeStrategy',
       'inputs': [],
       'outputs': []},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'revokeStrategy',
       'inputs': [{'name': 'strategy', 'type': 'address'}],
       'outputs': []},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'addStrategyToQueue',
       'inputs': [{'name': 'strategy', 'type': 'address'}],
       'outputs': [],
       'gas': 1199804},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'removeStrategyFromQueue',
       'inputs': [{'name': 'strategy', 'type': 'address'}],
       'outputs': [],
       'gas': 23088703},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'debtOutstanding',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'debtOutstanding',
       'inputs': [{'name': 'strategy', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'creditAvailable',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'creditAvailable',
       'inputs': [{'name': 'strategy', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'availableDepositLimit',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 9551},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'expectedReturn',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'expectedReturn',
       'inputs': [{'name': 'strategy', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}]},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'report',
       'inputs': [{'name': 'gain', 'type': 'uint256'},
                  {'name': 'loss', 'type': 'uint256'},
                  {'name': '_debtPayment', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 1015170},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'sweep',
       'inputs': [{'name': 'token', 'type': 'address'}],
       'outputs': []},
      {'stateMutability': 'nonpayable',
       'type': 'function',
       'name': 'sweep',
       'inputs': [{'name': 'token', 'type': 'address'},
                  {'name': 'amount', 'type': 'uint256'}],
       'outputs': []},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'name',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'string'}],
       'gas': 8750},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'symbol',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'string'}],
       'gas': 7803},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'decimals',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2408},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'precisionFactor',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2438},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'balanceOf',
       'inputs': [{'name': 'arg0', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2683},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'allowance',
       'inputs': [{'name': 'arg0', 'type': 'address'},
                  {'name': 'arg1', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2928},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'totalSupply',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2528},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'token',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 2558},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'governance',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 2588},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'management',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 2618},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'guardian',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 2648},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'guestList',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 2678},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'strategies',
       'inputs': [{'name': 'arg0', 'type': 'address'}],
       'outputs': [{'name': 'performanceFee', 'type': 'uint256'},
                   {'name': 'activation', 'type': 'uint256'},
                   {'name': 'debtRatio', 'type': 'uint256'},
                   {'name': 'minDebtPerHarvest', 'type': 'uint256'},
                   {'name': 'maxDebtPerHarvest', 'type': 'uint256'},
                   {'name': 'lastReport', 'type': 'uint256'},
                   {'name': 'totalDebt', 'type': 'uint256'},
                   {'name': 'totalGain', 'type': 'uint256'},
                   {'name': 'totalLoss', 'type': 'uint256'}],
       'gas': 11031},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'withdrawalQueue',
       'inputs': [{'name': 'arg0', 'type': 'uint256'}],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 2847},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'emergencyShutdown',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'bool'}],
       'gas': 2768},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'depositLimit',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2798},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'debtRatio',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2828},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'totalDebt',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2858},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'lastReport',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2888},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'activation',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2918},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'lockedProfit',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2948},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'lockedProfitDegration',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 2978},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'rewards',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'address'}],
       'gas': 3008},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'managementFee',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 3038},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'performanceFee',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 3068},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'nonces',
       'inputs': [{'name': 'arg0', 'type': 'address'}],
       'outputs': [{'name': '', 'type': 'uint256'}],
       'gas': 3313},
      {'stateMutability': 'view',
       'type': 'function',
       'name': 'DOMAIN_SEPARATOR',
       'inputs': [],
       'outputs': [{'name': '', 'type': 'bytes32'}],
       'gas': 3128}
  ]
  