package generated

import (
	"strings"

	"github.com/autonity/autonity/accounts/abi"
	"github.com/autonity/autonity/common"
)

var InflationControllerBytecode = common.Hex2Bytes("6080604052348015600f57600080fd5b50604051611428380380611428833981016040819052602c916058565b8051600055602081015160015560408101516002556060810151600355608001516004554260055560d5565b600060a0828403128015606a57600080fd5b5060405160009060a081016001600160401b0381118282101715609b57634e487b7160e01b83526041600452602483fd5b6040908152845182526020808601519083015284810151908201526060808501519082015260809384015193810193909352509092915050565b611344806100e46000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80635e615a6b1461003b57806392eff3cd1461008e575b600080fd5b6100436100af565b6040516100859190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b60405180910390f35b6100a161009c36600461117a565b610116565b604051908152602001610085565b6100e16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b506040805160a08101825260005481526001546020820152600254918101919091526003546060820152600454608082015290565b60008061012f6005548561012a91906111db565b6101c3565b905060006101446005548561012a91906111db565b60035490915081136101645761015b8783836102b4565b925050506101bb565b6003548212156101ab57600061018088846000600301546102b4565b9050600061019488600060030154856103b4565b90506101a081836111ee565b9450505050506101bb565b6101b68683836103b4565b925050505b949350505050565b60006101f7670de0b6b3a76400007f8000000000000000000000000000000000000000000000000000000000000000611230565b821215610238576040517f99474eeb000000000000000000000000000000000000000000000000000000008152600481018390526024015b60405180910390fd5b61026a670de0b6b3a76400007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611230565b8213156102a6576040517f9d5810910000000000000000000000000000000000000000000000000000000081526004810183905260240161022f565b50670de0b6b3a76400000290565b6000806102ce6000600201546102ca60006101c3565b1490565b1561030a5760005460015461030391906102fe906102f6906102f090846103d8565b886103e7565b600354610553565b610683565b905061037c565b600061031e6102f6600060020154876103e7565b9050600061035661034061033184610698565b61033b60016101c3565b6103d8565b610351610331600060020154610698565b610553565b600054600154919250610377916102fe9061037190836103d8565b846103e7565b925050505b600061039d6103938361038e896101c3565b6103e7565b61038e86886103d8565b90506103a881610706565b925050505b9392505050565b60006101bb6103d06103c8610393876101c3565b6004546103e7565b610706565b90565b60006103ad6103d583856112bf565b600082827f800000000000000000000000000000000000000000000000000000000000000082148061043857507f800000000000000000000000000000000000000000000000000000000000000081145b1561046f576040517fa6070c2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600084126104805783610485565b836000035b915060008312610495578261049a565b826000035b905060006104a8838361071a565b90507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561050e576040517f120b5b43000000000000000000000000000000000000000000000000000000008152600481018990526024810188905260440161022f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8585181361054681610542578260000390565b8290565b9998505050505050505050565b600082827f80000000000000000000000000000000000000000000000000000000000000008214806105a457507f800000000000000000000000000000000000000000000000000000000000000081145b156105db576040517f9fe2b45000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600084126105ec57836105f1565b836000035b9150600083126106015782610606565b826000035b9050600061061d83670de0b6b3a764000084610821565b90507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561050e576040517fd49c26b3000000000000000000000000000000000000000000000000000000008152600481018990526024810188905260440161022f565b60006103ad6103d583856112e6565b92915050565b600081680736ea4425c11ac6308113156106e1576040517fca7ec0c50000000000000000000000000000000000000000000000000000000081526004810184905260240161022f565b6714057b7ef767814f81026101bb610701670de0b6b3a7640000835b0590565b61092c565b6000610692670de0b6b3a764000083611230565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8486098486029250828110838203039150508060000361076c5750670de0b6b3a764000090049050610692565b670de0b6b3a764000081106107b7576040517f5173648d000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260440161022f565b6000670de0b6b3a7640000858709620400008185030493109091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690291505092915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036108795783828161086f5761086f611201565b04925050506103ad565b8381106108c3576040517f63a0577800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044810185905260640161022f565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000818181121561099f577ffffffffffffffffffffffffffffffffffffffffffffffffcc22e87f6eb468eeb8112156109685750600092915050565b61099861097b6103d56107018460000390565b6ec097ce7bc90715b34b9f1000000000816106fd576106fd611201565b9150610a00565b680a688906bd8affffff8113156109e5576040517f0360d0280000000000000000000000000000000000000000000000000000000081526004810184905260240161022f565b670de0b6b3a7640000604082901b056101bb6103d582610a06565b50919050565b7780000000000000000000000000000000000000000000000067ff00000000000000821615610b2757678000000000000000821615610a4e5768016a09e667f3bcc9090260401c5b674000000000000000821615610a6d576801306fe0a31b7152df0260401c5b672000000000000000821615610a8c576801172b83c7d517adce0260401c5b671000000000000000821615610aab5768010b5586cf9890f62a0260401c5b670800000000000000821615610aca576801059b0d31585743ae0260401c5b670400000000000000821615610ae957680102c9a3e778060ee70260401c5b670200000000000000821615610b085768010163da9fb33356d80260401c5b670100000000000000821615610b2757680100b1afa5abcbed610260401c5b66ff000000000000821615610c26576680000000000000821615610b545768010058c86da1c09ea20260401c5b6640000000000000821615610b72576801002c605e2e8cec500260401c5b6620000000000000821615610b9057680100162f3904051fa10260401c5b6610000000000000821615610bae576801000b175effdc76ba0260401c5b6608000000000000821615610bcc57680100058ba01fb9f96d0260401c5b6604000000000000821615610bea5768010002c5cc37da94920260401c5b6602000000000000821615610c08576801000162e525ee05470260401c5b6601000000000000821615610c265768010000b17255775c040260401c5b65ff0000000000821615610d1c5765800000000000821615610c51576801000058b91b5bc9ae0260401c5b65400000000000821615610c6e57680100002c5c89d5ec6d0260401c5b65200000000000821615610c8b5768010000162e43f4f8310260401c5b65100000000000821615610ca857680100000b1721bcfc9a0260401c5b65080000000000821615610cc55768010000058b90cf1e6e0260401c5b65040000000000821615610ce2576801000002c5c863b73f0260401c5b65020000000000821615610cff57680100000162e430e5a20260401c5b65010000000000821615610d1c576801000000b1721835510260401c5b64ff00000000821615610e0957648000000000821615610d4557680100000058b90c0b490260401c5b644000000000821615610d615768010000002c5c8601cc0260401c5b642000000000821615610d7d576801000000162e42fff00260401c5b641000000000821615610d995768010000000b17217fbb0260401c5b640800000000821615610db5576801000000058b90bfce0260401c5b640400000000821615610dd157680100000002c5c85fe30260401c5b640200000000821615610ded5768010000000162e42ff10260401c5b640100000000821615610e0957680100000000b17217f80260401c5b63ff000000821615610eed576380000000821615610e305768010000000058b90bfc0260401c5b6340000000821615610e4b576801000000002c5c85fe0260401c5b6320000000821615610e6657680100000000162e42ff0260401c5b6310000000821615610e81576801000000000b17217f0260401c5b6308000000821615610e9c57680100000000058b90c00260401c5b6304000000821615610eb75768010000000002c5c8600260401c5b6302000000821615610ed2576801000000000162e4300260401c5b6301000000821615610eed5768010000000000b172180260401c5b62ff0000821615610fc85762800000821615610f12576801000000000058b90c0260401c5b62400000821615610f2c57680100000000002c5c860260401c5b62200000821615610f465768010000000000162e430260401c5b62100000821615610f6057680100000000000b17210260401c5b62080000821615610f7a5768010000000000058b910260401c5b62040000821615610f94576801000000000002c5c80260401c5b62020000821615610fae57680100000000000162e40260401c5b62010000821615610fc8576801000000000000b1720260401c5b61ff0082161561109a57618000821615610feb57680100000000000058b90260401c5b6140008216156110045768010000000000002c5d0260401c5b61200082161561101d576801000000000000162e0260401c5b6110008216156110365768010000000000000b170260401c5b61080082161561104f576801000000000000058c0260401c5b61040082161561106857680100000000000002c60260401c5b61020082161561108157680100000000000001630260401c5b61010082161561109a57680100000000000000b10260401c5b60ff8216156111635760808216156110bb57680100000000000000590260401c5b60408216156110d3576801000000000000002c0260401c5b60208216156110eb57680100000000000000160260401c5b6010821615611103576801000000000000000b0260401c5b600882161561111b57680100000000000000060260401c5b600482161561113357680100000000000000030260401c5b600282161561114b57680100000000000000010260401c5b600182161561116357680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000806000806080858703121561119057600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610692576106926111ac565b80820180821115610692576106926111ac565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611266577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156112ba576112ba6111ac565b500590565b81810360008312801583831316838312821617156112df576112df6111ac565b5092915050565b8082018281126000831280158216821582161715611306576113066111ac565b50509291505056fea2646970667358221220a22a20a0e54ebb66001e376f21967c4c0311d71680fde4b73577625e55e0db5364736f6c634300081e0033")

var InflationControllerAbi, _ = abi.JSON(strings.NewReader(`[
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationRateInitial",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationRateTransition",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationCurveConvexity",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationTransitionPeriod",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationReserveDecayRate",
                  "type" : "int256"
               }
            ],
            "internalType" : "struct InflationController.Params",
            "name" : "_params",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "constructor"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "x",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "y",
            "type" : "uint256"
         }
      ],
      "name" : "PRBMath_MulDiv18_Overflow",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "x",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "y",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "denominator",
            "type" : "uint256"
         }
      ],
      "name" : "PRBMath_MulDiv_Overflow",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "int256",
            "name" : "x",
            "type" : "int256"
         }
      ],
      "name" : "PRBMath_SD59x18_Convert_Overflow",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "int256",
            "name" : "x",
            "type" : "int256"
         }
      ],
      "name" : "PRBMath_SD59x18_Convert_Underflow",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "PRBMath_SD59x18_Div_InputTooSmall",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "SD59x18",
            "name" : "x",
            "type" : "int256"
         },
         {
            "internalType" : "SD59x18",
            "name" : "y",
            "type" : "int256"
         }
      ],
      "name" : "PRBMath_SD59x18_Div_Overflow",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "SD59x18",
            "name" : "x",
            "type" : "int256"
         }
      ],
      "name" : "PRBMath_SD59x18_Exp2_InputTooBig",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "SD59x18",
            "name" : "x",
            "type" : "int256"
         }
      ],
      "name" : "PRBMath_SD59x18_Exp_InputTooBig",
      "type" : "error"
   },
   {
      "inputs" : [],
      "name" : "PRBMath_SD59x18_Mul_InputTooSmall",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "SD59x18",
            "name" : "x",
            "type" : "int256"
         },
         {
            "internalType" : "SD59x18",
            "name" : "y",
            "type" : "int256"
         }
      ],
      "name" : "PRBMath_SD59x18_Mul_Overflow",
      "type" : "error"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_currentSupply",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_inflationReserve",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_lastEpochTime",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_currentEpochTime",
            "type" : "uint256"
         }
      ],
      "name" : "calculateSupplyDelta",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getParams",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationRateInitial",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationRateTransition",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationCurveConvexity",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationTransitionPeriod",
                  "type" : "int256"
               },
               {
                  "internalType" : "SD59x18",
                  "name" : "inflationReserveDecayRate",
                  "type" : "int256"
               }
            ],
            "internalType" : "struct InflationController.Params",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   }
]
`))
