{
  "_format": "hh-sol-artifact-1",
  "contractName": "RateLimiterLibTest",
  "sourceName": "contracts/test/rollup/lib/RateLimiterLibTest.sol",
  "abi": [
    {
      "inputs": [],
      "name": "InvalidConstants",
      "type": "error"
    },
    {
      "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"
        }
      ],
      "name": "PRBMath_UD60x18_Convert_Overflow",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "thresholdInterval",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "alpha",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "k",
          "type": "uint256"
        }
      ],
      "name": "RateLimitConstantsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "penalty",
          "type": "uint256"
        }
      ],
      "name": "UpdateResult",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "getPenalty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "thresholdInterval",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "alpha",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "k",
          "type": "uint256"
        }
      ],
      "name": "setConstants",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "state",
      "outputs": [
        {
          "internalType": "UD60x18",
          "name": "thresholdInterval",
          "type": "uint256"
        },
        {
          "internalType": "UD60x18",
          "name": "alpha",
          "type": "uint256"
        },
        {
          "internalType": "UD60x18",
          "name": "k",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastCallTime",
          "type": "uint256"
        },
        {
          "internalType": "UD60x18",
          "name": "emaInterval",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "update",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b5061049b8061001f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635f4d1e9d14610051578063a2e6204514610066578063c19d93fb1461006e578063e56e56db146100b5575b600080fd5b61006461005f3660046103db565b6100cb565b005b6100646100dd565b600054600154600254600354600454610088949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0015b60405180910390f35b6100bd61011b565b6040519081526020016100ac565b6100d8600084848461012c565b505050565b7f4ad358ce48672c225b45b8eae0e86641af496b96bf993e0ae4ded4c2c9ad2f8d61010860006101b7565b60405190815260200160405180910390a1565b600061012760006101d9565b905090565b600061013e61013b60016101ed565b90565b90508083106101605760405163e534636960e01b815260040160405180910390fd5b83855582600186015581600286015560408051858152602081018590529081018390527f838519c2bc923fc36074a60cbf38cb34fc876cc09e128133a6bdf73740fb76919060600160405180910390a15050505050565b60008060006101c584610239565b426003870155600490950155509192915050565b6000806101e583610239565b949350505050565b6000610203670de0b6b3a764000060001961041d565b82111561022b57604051631cd951a760e01b8152600481018390526024015b60405180910390fd5b50670de0b6b3a76400000290565b8054600382015460009182918203610255579360009350915050565b6001840154600385015460009061027590610270904261043f565b6101ed565b90506102a961028483836102f0565b6102a461029a61029460016101ed565b86610306565b89600401546102f0565b610315565b9450848311156102e35760006102bf8487610306565b90506102db61013b6102d58960020154846102f0565b836102f0565b9450506102e8565b600093505b505050915091565b60006102ff61013b8484610324565b9392505050565b60006102ff61013b838561043f565b60006102ff61013b8385610452565b60008080600019848609848602925082811083820303915050806000036103585750670de0b6b3a7640000900490506103d5565b670de0b6b3a7640000811061038a57604051635173648d60e01b81526004810186905260248101859052604401610222565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669029150505b92915050565b6000806000606084860312156103f057600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b60008261043a57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103d5576103d5610407565b808201808211156103d5576103d561040756fea26469706673582212200867327c9bcd15fc8a24d403e13da37546c955538dda8d450b0b94dfb7d3c3fb64736f6c634300081b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635f4d1e9d14610051578063a2e6204514610066578063c19d93fb1461006e578063e56e56db146100b5575b600080fd5b61006461005f3660046103db565b6100cb565b005b6100646100dd565b600054600154600254600354600454610088949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0015b60405180910390f35b6100bd61011b565b6040519081526020016100ac565b6100d8600084848461012c565b505050565b7f4ad358ce48672c225b45b8eae0e86641af496b96bf993e0ae4ded4c2c9ad2f8d61010860006101b7565b60405190815260200160405180910390a1565b600061012760006101d9565b905090565b600061013e61013b60016101ed565b90565b90508083106101605760405163e534636960e01b815260040160405180910390fd5b83855582600186015581600286015560408051858152602081018590529081018390527f838519c2bc923fc36074a60cbf38cb34fc876cc09e128133a6bdf73740fb76919060600160405180910390a15050505050565b60008060006101c584610239565b426003870155600490950155509192915050565b6000806101e583610239565b949350505050565b6000610203670de0b6b3a764000060001961041d565b82111561022b57604051631cd951a760e01b8152600481018390526024015b60405180910390fd5b50670de0b6b3a76400000290565b8054600382015460009182918203610255579360009350915050565b6001840154600385015460009061027590610270904261043f565b6101ed565b90506102a961028483836102f0565b6102a461029a61029460016101ed565b86610306565b89600401546102f0565b610315565b9450848311156102e35760006102bf8487610306565b90506102db61013b6102d58960020154846102f0565b836102f0565b9450506102e8565b600093505b505050915091565b60006102ff61013b8484610324565b9392505050565b60006102ff61013b838561043f565b60006102ff61013b8385610452565b60008080600019848609848602925082811083820303915050806000036103585750670de0b6b3a7640000900490506103d5565b670de0b6b3a7640000811061038a57604051635173648d60e01b81526004810186905260248101859052604401610222565b6000670de0b6b3a764000085870962040000818503049310909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669029150505b92915050565b6000806000606084860312156103f057600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b60008261043a57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156103d5576103d5610407565b808201808211156103d5576103d561040756fea26469706673582212200867327c9bcd15fc8a24d403e13da37546c955538dda8d450b0b94dfb7d3c3fb64736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
