{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockConfig",
  "sourceName": "contracts/mocks/MockConfig.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldOracle",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOracle",
          "type": "address"
        }
      ],
      "name": "PriceOracleChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldGap",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newGap",
          "type": "uint256"
        }
      ],
      "name": "RebasePriceGapChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "RouterRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "RouterUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldBeta",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "beta",
          "type": "uint256"
        }
      ],
      "name": "SetBeta",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldFeeParameter",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "feeParameter",
          "type": "uint256"
        }
      ],
      "name": "SetFeeParameter",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldInitMarginRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "initMarginRatio",
          "type": "uint256"
        }
      ],
      "name": "SetInitMarginRatio",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLiquidateFeeRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidateFeeRatio",
          "type": "uint256"
        }
      ],
      "name": "SetLiquidateFeeRatio",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLiquidateThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "liquidateThreshold",
          "type": "uint256"
        }
      ],
      "name": "SetLiquidateThreshold",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldLpWithdrawThreshold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpWithdrawThreshold",
          "type": "uint256"
        }
      ],
      "name": "SetLpWithdrawThreshold",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMaxCPFBoost",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "maxCPFBoost",
          "type": "uint256"
        }
      ],
      "name": "SetMaxCPFBoost",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldTradingSlippage",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTradingSlippage",
          "type": "uint256"
        }
      ],
      "name": "TradingSlippageChanged",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "beta",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeParameter",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initMarginRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidateFeeRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidateThreshold",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lpWithdrawThresholdForNet",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lpWithdrawThresholdForTotal",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxCPFBoost",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "priceOracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rebasePriceGap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "registerRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "routerMap",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "newBeta",
          "type": "uint8"
        }
      ],
      "name": "setBeta",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFeeParameter",
          "type": "uint256"
        }
      ],
      "name": "setFeeParameter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marginRatio",
          "type": "uint256"
        }
      ],
      "name": "setInitMarginRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "feeRatio",
          "type": "uint256"
        }
      ],
      "name": "setLiquidateFeeRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "threshold",
          "type": "uint256"
        }
      ],
      "name": "setLiquidateThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newLpWithdrawThresholdForNet",
          "type": "uint256"
        }
      ],
      "name": "setLpWithdrawThresholdForNet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newLpWithdrawThresholdForTotal",
          "type": "uint256"
        }
      ],
      "name": "setLpWithdrawThresholdForTotal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newMaxCPFBoost",
          "type": "uint256"
        }
      ],
      "name": "setMaxCPFBoost",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOracle",
          "type": "address"
        }
      ],
      "name": "setPriceOracle",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newGap",
          "type": "uint256"
        }
      ],
      "name": "setRebasePriceGap",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newTradingSlippage",
          "type": "uint256"
        }
      ],
      "name": "setTradingSlippage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tradingSlippage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "router",
          "type": "address"
        }
      ],
      "name": "unregisterRouter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040526000805460ff60a01b1916601960a11b179055600a600181905560056002819055600381905561032060045561271090556064600655600b600755600855603260095534801561005357600080fd5b50610b69806100636000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637367ec3e116100de5780639faa3c9111610097578063e57d563611610071578063e57d563614610321578063fbede2241461032a578063fda285491461033d578063fdcb648c1461035057610173565b80639faa3c91146102df578063b85f9f0b14610305578063d73e732e1461030e57610173565b80637367ec3e14610275578063838664691461027e5780638392897d146102875780638ecb45511461029a5780638ff471f7146102a35780639518332e146102ac57610173565b8063530e784f11610130578063530e784f1461020d578063620d4d2b14610220578063683b41ef146102335780636dd26a0714610246578063711a8f521461024f57806371fdd72d1461026257610173565b806322b19af7146101785780632630c12f1461018d5780633cf209b3146101bd5780633ffd2ee2146101d45780634b225189146101e75780635012e0a4146101fa575b600080fd5b61018b610186366004610a5b565b610359565b005b6000546101a0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c660095481565b6040519081526020016101b4565b61018b6101e2366004610a89565b610432565b61018b6101f5366004610a89565b6104a2565b61018b610208366004610a5b565b6104e3565b61018b61021b366004610a5b565b6105b1565b61018b61022e366004610a89565b610632565b61018b610241366004610a89565b6106a0565b6101c660065481565b61018b61025d366004610a89565b610749565b61018b610270366004610aa1565b6107f4565b6101c660085481565b6101c660015481565b61018b610295366004610a89565b6108b7565b6101c660025481565b6101c660035481565b6102cf6102ba366004610a5b565b600a6020526000908152604090205460ff1681565b60405190151581526020016101b4565b6000546102f390600160a01b900460ff1681565b60405160ff90911681526020016101b4565b6101c660075481565b61018b61031c366004610a89565b610947565b6101c660045481565b61018b610338366004610a89565b610988565b61018b61034b366004610a89565b610a1a565b6101c660055481565b6001600160a01b0381166103885760405162461bcd60e51b815260040161037f90610ac2565b60405180910390fd5b6001600160a01b0381166000908152600a602052604090205460ff16156103e65760405162461bcd60e51b815260206004820152601260248201527110dbdb999a59ce88149151d254d51154915160721b604482015260640161037f565b6001600160a01b0381166000818152600a6020526040808220805460ff19166001179055517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a89190a250565b6123288111801561044557506127108111155b6104615760405162461bcd60e51b815260040161037f90610af0565b60055460408051918252602082018390527f33cf718637d6f1faf404b6902a2b551102381524c3b3c83f85cb3681e40758f7910160405180910390a1600555565b60075460408051918252602082018390527fd467fef04f1829519a852bd1ec06607466b3f22c9a92c9b0ec2efab69e98f0f2910160405180910390a1600755565b6001600160a01b0381166105095760405162461bcd60e51b815260040161037f90610ac2565b6001600160a01b0381166000908152600a602052604090205460ff166105685760405162461bcd60e51b815260206004820152601460248201527310dbdb999a59ce881553949151d254d51154915160621b604482015260640161037f565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f75651c5c467d4644a640a67bb1f11c3b5e6e05c68283a21a248c9b2685e4fa099190a250565b6001600160a01b0381166105d75760405162461bcd60e51b815260040161037f90610ac2565b600080546040516001600160a01b03808516939216917f40bddd72ea96b80dae14e3d13e8ce2c4ecd2500d88c6c0004d24a00deab28f9c91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600181118015610643575060648111155b61065f5760405162461bcd60e51b815260040161037f90610af0565b60085460408051918252602082018390527f325514ba4c843e515d3b79b4ed830f5a67fcbc43785d7ae07b01826768484471910160405180910390a1600855565b6000811180156106b05750606481105b6107085760405162461bcd60e51b8152602060048201526024808201527f436f6e6669673a2054524144494e475f534c4950504147455f52414e47455f45604482015263292927a960e11b606482015260840161037f565b60035460408051918252602082018390527f93301c5c8702bd9fef38d0e194884f0dcdceec480fbdac4620781ad65ca09dea910160405180910390a1600355565b60008111801561075b57506107d08111155b6107b35760405162461bcd60e51b815260206004820152602360248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f4645455f524160448201526254494f60e81b606482015260840161037f565b60065460408051918252602082018390527f6e8fb8d7ccbce74238212d18376842dde6f674e4404bdcc2762602939d0fb86c910160405180910390a1600655565b60328160ff161015801561080c575060c88160ff1611155b61084f5760405162461bcd60e51b8152602060048201526014602482015273436f6e6669673a20494e56414c49445f4245544160601b604482015260640161037f565b6000546040805160ff600160a01b9093048316815291831660208301527fa2545869d941985a4dda10a4646a6ca753ab7789f05cf35cb7fd1ca56f7ea412910160405180910390a16000805460ff909216600160a01b0260ff60a01b19909216919091179055565b6000811180156108c75750606481105b6109065760405162461bcd60e51b815260206004820152601060248201526f0436f6e6669673a205a45524f5f4741560841b604482015260640161037f565b60025460408051918252602082018390527f3dcf61c33d20fa3fc1936a5cefe7c78cc9b97adaadcf393a558b922577b83ba4910160405180910390a1600255565b60015460408051918252602082018390527f925aaf6ac64a831f734927a8208b1f475181ebdc9aa05aca723b5af4b419a3f8910160405180910390a1600155565b60648110156109d95760405162461bcd60e51b815260206004820152601c60248201527f436f6e6669673a20494e56414c49445f4d415247494e5f524154494f00000000604482015260640161037f565b60045460408051918252602082018390527f5edea59d534a04dd802be5d64f704cb2beda3fc7e16ee59646b655352202da80910160405180910390a1600455565b60095460408051918252602082018390527f325514ba4c843e515d3b79b4ed830f5a67fcbc43785d7ae07b01826768484471910160405180910390a1600955565b600060208284031215610a6c578081fd5b81356001600160a01b0381168114610a82578182fd5b9392505050565b600060208284031215610a9a578081fd5b5035919050565b600060208284031215610ab2578081fd5b813560ff81168114610a82578182fd5b602080825260149082015273436f6e6669673a205a45524f5f4144445245535360601b604082015260600190565b60208082526023908201527f436f6e6669673a20494e56414c49445f4c49515549444154455f54485245534860408201526213d31160ea1b60608201526080019056fea264697066735822122087ef117f8e484a15abc7e923b2360b126a0c1af7fa6109f6ac120e6070fb6a9564736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637367ec3e116100de5780639faa3c9111610097578063e57d563611610071578063e57d563614610321578063fbede2241461032a578063fda285491461033d578063fdcb648c1461035057610173565b80639faa3c91146102df578063b85f9f0b14610305578063d73e732e1461030e57610173565b80637367ec3e14610275578063838664691461027e5780638392897d146102875780638ecb45511461029a5780638ff471f7146102a35780639518332e146102ac57610173565b8063530e784f11610130578063530e784f1461020d578063620d4d2b14610220578063683b41ef146102335780636dd26a0714610246578063711a8f521461024f57806371fdd72d1461026257610173565b806322b19af7146101785780632630c12f1461018d5780633cf209b3146101bd5780633ffd2ee2146101d45780634b225189146101e75780635012e0a4146101fa575b600080fd5b61018b610186366004610a5b565b610359565b005b6000546101a0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c660095481565b6040519081526020016101b4565b61018b6101e2366004610a89565b610432565b61018b6101f5366004610a89565b6104a2565b61018b610208366004610a5b565b6104e3565b61018b61021b366004610a5b565b6105b1565b61018b61022e366004610a89565b610632565b61018b610241366004610a89565b6106a0565b6101c660065481565b61018b61025d366004610a89565b610749565b61018b610270366004610aa1565b6107f4565b6101c660085481565b6101c660015481565b61018b610295366004610a89565b6108b7565b6101c660025481565b6101c660035481565b6102cf6102ba366004610a5b565b600a6020526000908152604090205460ff1681565b60405190151581526020016101b4565b6000546102f390600160a01b900460ff1681565b60405160ff90911681526020016101b4565b6101c660075481565b61018b61031c366004610a89565b610947565b6101c660045481565b61018b610338366004610a89565b610988565b61018b61034b366004610a89565b610a1a565b6101c660055481565b6001600160a01b0381166103885760405162461bcd60e51b815260040161037f90610ac2565b60405180910390fd5b6001600160a01b0381166000908152600a602052604090205460ff16156103e65760405162461bcd60e51b815260206004820152601260248201527110dbdb999a59ce88149151d254d51154915160721b604482015260640161037f565b6001600160a01b0381166000818152600a6020526040808220805460ff19166001179055517f94df8c3a8087dce110e5fbc5acf380c83c94bbd31b2c8ed4c08e1396a696e1a89190a250565b6123288111801561044557506127108111155b6104615760405162461bcd60e51b815260040161037f90610af0565b60055460408051918252602082018390527f33cf718637d6f1faf404b6902a2b551102381524c3b3c83f85cb3681e40758f7910160405180910390a1600555565b60075460408051918252602082018390527fd467fef04f1829519a852bd1ec06607466b3f22c9a92c9b0ec2efab69e98f0f2910160405180910390a1600755565b6001600160a01b0381166105095760405162461bcd60e51b815260040161037f90610ac2565b6001600160a01b0381166000908152600a602052604090205460ff166105685760405162461bcd60e51b815260206004820152601460248201527310dbdb999a59ce881553949151d254d51154915160621b604482015260640161037f565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f75651c5c467d4644a640a67bb1f11c3b5e6e05c68283a21a248c9b2685e4fa099190a250565b6001600160a01b0381166105d75760405162461bcd60e51b815260040161037f90610ac2565b600080546040516001600160a01b03808516939216917f40bddd72ea96b80dae14e3d13e8ce2c4ecd2500d88c6c0004d24a00deab28f9c91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600181118015610643575060648111155b61065f5760405162461bcd60e51b815260040161037f90610af0565b60085460408051918252602082018390527f325514ba4c843e515d3b79b4ed830f5a67fcbc43785d7ae07b01826768484471910160405180910390a1600855565b6000811180156106b05750606481105b6107085760405162461bcd60e51b8152602060048201526024808201527f436f6e6669673a2054524144494e475f534c4950504147455f52414e47455f45604482015263292927a960e11b606482015260840161037f565b60035460408051918252602082018390527f93301c5c8702bd9fef38d0e194884f0dcdceec480fbdac4620781ad65ca09dea910160405180910390a1600355565b60008111801561075b57506107d08111155b6107b35760405162461bcd60e51b815260206004820152602360248201527f436f6e6669673a20494e56414c49445f4c49515549444154455f4645455f524160448201526254494f60e81b606482015260840161037f565b60065460408051918252602082018390527f6e8fb8d7ccbce74238212d18376842dde6f674e4404bdcc2762602939d0fb86c910160405180910390a1600655565b60328160ff161015801561080c575060c88160ff1611155b61084f5760405162461bcd60e51b8152602060048201526014602482015273436f6e6669673a20494e56414c49445f4245544160601b604482015260640161037f565b6000546040805160ff600160a01b9093048316815291831660208301527fa2545869d941985a4dda10a4646a6ca753ab7789f05cf35cb7fd1ca56f7ea412910160405180910390a16000805460ff909216600160a01b0260ff60a01b19909216919091179055565b6000811180156108c75750606481105b6109065760405162461bcd60e51b815260206004820152601060248201526f0436f6e6669673a205a45524f5f4741560841b604482015260640161037f565b60025460408051918252602082018390527f3dcf61c33d20fa3fc1936a5cefe7c78cc9b97adaadcf393a558b922577b83ba4910160405180910390a1600255565b60015460408051918252602082018390527f925aaf6ac64a831f734927a8208b1f475181ebdc9aa05aca723b5af4b419a3f8910160405180910390a1600155565b60648110156109d95760405162461bcd60e51b815260206004820152601c60248201527f436f6e6669673a20494e56414c49445f4d415247494e5f524154494f00000000604482015260640161037f565b60045460408051918252602082018390527f5edea59d534a04dd802be5d64f704cb2beda3fc7e16ee59646b655352202da80910160405180910390a1600455565b60095460408051918252602082018390527f325514ba4c843e515d3b79b4ed830f5a67fcbc43785d7ae07b01826768484471910160405180910390a1600955565b600060208284031215610a6c578081fd5b81356001600160a01b0381168114610a82578182fd5b9392505050565b600060208284031215610a9a578081fd5b5035919050565b600060208284031215610ab2578081fd5b813560ff81168114610a82578182fd5b602080825260149082015273436f6e6669673a205a45524f5f4144445245535360601b604082015260600190565b60208082526023908201527f436f6e6669673a20494e56414c49445f4c49515549444154455f54485245534860408201526213d31160ea1b60608201526080019056fea264697066735822122087ef117f8e484a15abc7e923b2360b126a0c1af7fa6109f6ac120e6070fb6a9564736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
