{
  "_format": "hh-sol-artifact-1",
  "contractName": "BalancerPoolToken",
  "sourceName": "src.sol/amm/pools/BalancerPoolToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        }
      ],
      "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"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "decreaseApproval",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "increaseApproval",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "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"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6101006040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960e0523480156200003657600080fd5b5060405162000da738038062000da7833981810160405260408110156200005c57600080fd5b81019080805160405193929190846401000000008211156200007d57600080fd5b9083019060208201858111156200009357600080fd5b8251640100000000811182820188101715620000ae57600080fd5b82525081516020918201929091019080838360005b83811015620000dd578181015183820152602001620000c3565b50505050905090810190601f1680156200010b5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200012f57600080fd5b9083019060208201858111156200014557600080fd5b82516401000000008111828201881017156200016057600080fd5b82525081516020918201929091019080838360005b838110156200018f57818101518382015260200162000175565b50505050905090810190601f168015620001bd5780820380516001836020036101000a031916815260200191505b506040818101905260018152603160f81b602080830191825287519088019081206080529151902060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c05285516200022194506003935090915062000240565b5080516200023790600490602084019062000240565b505050620002dc565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028357805160ff1916838001178555620002b3565b82800160010185558215620002b3579182015b82811115620002b357825182559160200191906001019062000296565b50620002c1929150620002c5565b5090565b5b80821115620002c15760008155600101620002c6565b60805160a05160c05160e051610a9562000312600039806105ef5250806108d35250806109155250806108f45250610a956000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146102a2578063d505accf146102ce578063d73dd62314610321578063dd62ed3e1461034d576100ea565b806370a082311461024e5780637ecebe001461027457806395d89b411461029a576100ea565b806323b872dd116100c857806323b872dd146101c6578063313ce567146101fc5780633644e5151461021a5780636618846314610222576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101ac575b600080fd5b6100f761037b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986004803603604081101561018257600080fd5b506001600160a01b038135169060200135610411565b604080519115158252519081900360200190f35b6101b4610427565b60408051918252519081900360200190f35b610198600480360360608110156101dc57600080fd5b506001600160a01b0381358116916020810135909116906040013561042d565b6102046104ae565b6040805160ff9092168252519081900360200190f35b6101b46104b3565b6101986004803603604081101561023857600080fd5b506001600160a01b0381351690602001356104c2565b6101b46004803603602081101561026457600080fd5b50356001600160a01b031661051c565b6101b46004803603602081101561028a57600080fd5b50356001600160a01b0316610537565b6100f7610552565b610198600480360360408110156102b857600080fd5b506001600160a01b0381351690602001356105b3565b61031f600480360360e08110156102e457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356105c0565b005b6101986004803603604081101561033757600080fd5b506001600160a01b038135169060200135610730565b6101b46004803603604081101561036357600080fd5b506001600160a01b0381358116916020013516610766565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104075780601f106103dc57610100808354040283529160200191610407565b820191906000526020600020905b8154815290600101906020018083116103ea57829003601f168201915b5050505050905090565b600061041e338484610791565b50600192915050565b60025490565b6001600160a01b0383166000818152600160209081526040808320338085529252822054919261046b9114806104635750838210155b6101976107f3565b610476858585610805565b336001600160a01b0386161480159061049157506000198114155b156104a3576104a38533858403610791565b506001949350505050565b601290565b60006104bd6108cf565b905090565b3360009081526001602090815260408083206001600160a01b03861684529091528120548083106104fe576104f933856000610791565b610512565b610512338561050d848761098d565b610791565b5060019392505050565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b031660009081526005602052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104075780601f106103dc57610100808354040283529160200191610407565b600061041e338484610805565b6105ce8442111560d16107f3565b6001600160a01b0380881660008181526005602090815260408083205481517f00000000000000000000000000000000000000000000000000000000000000008185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e0909401905282519201919091209061065a826109a3565b9050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156106b8573d6000803e3d6000fd5b5050604051601f19015191506106fa90506001600160a01b038216158015906106f257508b6001600160a01b0316826001600160a01b0316145b6101f86107f3565b6001600160a01b038b1660009081526005602052604090206001850190556107238b8b8b610791565b5050505050505050505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161041e91859061050d90866109ef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b816108015761080181610a08565b5050565b6001600160a01b03831660009081526020819052604090205461082d828210156101966107f3565b6108446001600160a01b03841615156101996107f3565b6001600160a01b0380851660009081526020819052604080822085850390559185168152205461087490836109ef565b6001600160a01b038085166000818152602081815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061093c610a5b565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b600061099d8383111560016107f3565b50900390565b60006109ad6108cf565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000828201610a0184821015836107f3565b9392505050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b469056fea2646970667358221220be675151ecddcb167456c6c3dc1dd7a0a5cf4a919c7b4079dffb48661878580264736f6c63430007010033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146102a2578063d505accf146102ce578063d73dd62314610321578063dd62ed3e1461034d576100ea565b806370a082311461024e5780637ecebe001461027457806395d89b411461029a576100ea565b806323b872dd116100c857806323b872dd146101c6578063313ce567146101fc5780633644e5151461021a5780636618846314610222576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101ac575b600080fd5b6100f761037b565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101986004803603604081101561018257600080fd5b506001600160a01b038135169060200135610411565b604080519115158252519081900360200190f35b6101b4610427565b60408051918252519081900360200190f35b610198600480360360608110156101dc57600080fd5b506001600160a01b0381358116916020810135909116906040013561042d565b6102046104ae565b6040805160ff9092168252519081900360200190f35b6101b46104b3565b6101986004803603604081101561023857600080fd5b506001600160a01b0381351690602001356104c2565b6101b46004803603602081101561026457600080fd5b50356001600160a01b031661051c565b6101b46004803603602081101561028a57600080fd5b50356001600160a01b0316610537565b6100f7610552565b610198600480360360408110156102b857600080fd5b506001600160a01b0381351690602001356105b3565b61031f600480360360e08110156102e457600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356105c0565b005b6101986004803603604081101561033757600080fd5b506001600160a01b038135169060200135610730565b6101b46004803603604081101561036357600080fd5b506001600160a01b0381358116916020013516610766565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104075780601f106103dc57610100808354040283529160200191610407565b820191906000526020600020905b8154815290600101906020018083116103ea57829003601f168201915b5050505050905090565b600061041e338484610791565b50600192915050565b60025490565b6001600160a01b0383166000818152600160209081526040808320338085529252822054919261046b9114806104635750838210155b6101976107f3565b610476858585610805565b336001600160a01b0386161480159061049157506000198114155b156104a3576104a38533858403610791565b506001949350505050565b601290565b60006104bd6108cf565b905090565b3360009081526001602090815260408083206001600160a01b03861684529091528120548083106104fe576104f933856000610791565b610512565b610512338561050d848761098d565b610791565b5060019392505050565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b031660009081526005602052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104075780601f106103dc57610100808354040283529160200191610407565b600061041e338484610805565b6105ce8442111560d16107f3565b6001600160a01b0380881660008181526005602090815260408083205481517f00000000000000000000000000000000000000000000000000000000000000008185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e0909401905282519201919091209061065a826109a3565b9050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156106b8573d6000803e3d6000fd5b5050604051601f19015191506106fa90506001600160a01b038216158015906106f257508b6001600160a01b0316826001600160a01b0316145b6101f86107f3565b6001600160a01b038b1660009081526005602052604090206001850190556107238b8b8b610791565b5050505050505050505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161041e91859061050d90866109ef565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b816108015761080181610a08565b5050565b6001600160a01b03831660009081526020819052604090205461082d828210156101966107f3565b6108446001600160a01b03841615156101996107f3565b6001600160a01b0380851660009081526020819052604080822085850390559185168152205461087490836109ef565b6001600160a01b038085166000818152602081815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061093c610a5b565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b600061099d8383111560016107f3565b50900390565b60006109ad6108cf565b82604051602001808061190160f01b81525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000828201610a0184821015836107f3565b9392505050565b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b469056fea2646970667358221220be675151ecddcb167456c6c3dc1dd7a0a5cf4a919c7b4079dffb48661878580264736f6c63430007010033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
