# 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'}
              ]
