{
  "_format": "hh-sol-artifact-1",
  "contractName": "PriceMovementMathTest",
  "sourceName": "contracts/test/PriceMovementMathTest.sol",
  "abi": [
    {
      "inputs": [],
      "name": "invalidAmountRequired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtP",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPTarget",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "int256",
          "name": "amountRemaining",
          "type": "int256"
        },
        {
          "internalType": "uint24",
          "name": "feePips",
          "type": "uint24"
        }
      ],
      "name": "getGasCostOfmovePriceTowardsTarget",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtP",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPTarget",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "int256",
          "name": "amountRemaining",
          "type": "int256"
        },
        {
          "internalType": "uint24",
          "name": "feePips",
          "type": "uint24"
        }
      ],
      "name": "movePriceTowardsTarget",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "sqrtQ",
          "type": "uint160"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "feeAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506108b6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80630ea96ae41461003b578063be8d9c56146100bc575b600080fd5b61008c600480360360a081101561005157600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff1661011f565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b61010d600480360360a08110156100d257600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff1661015a565b60408051918252519081900360200190f35b600080600080610147896001600160a01b0316896001600160a01b0316108a8a8a8a8a610195565b929c919b50995090975095505050505050565b6000805a9050610182876001600160a01b0316876001600160a01b0316108888888888610195565b505050505a900390505b95945050505050565b60008060008061085d8a6101ab576103636101af565b61037c5b9050600087126102835760006101d88888620f42400362ffffff16620f424062ffffff1661038b565b90506101e98a8c8b8563ffffffff16565b94508481106102165789955061020f858862ffffff1689620f42400362ffffff16610424565b925061025c565b6102228b8a838f6104a4565b9550856001600160a01b03168a6001600160a01b03160361024557610245610867565b610254868c8b8563ffffffff16565b945084880392505b61027b868c8b8f61026f576104b4610273565b6104c35b63ffffffff16565b935050610355565b61085d8b610293576104b4610297565b6104c35b90506102a88a8c8b8463ffffffff16565b935087600003975060008812156102d2576040516334cb3a0160e11b815260040160405180910390fd5b8388106102e157899550610326565b6102ed8b8a8a8f6104d2565b9550856001600160a01b03168a6001600160a01b03161461031a57610317868c8b8463ffffffff16565b93505b87841115610326578793505b610335868c8b8563ffffffff16565b9450610351858862ffffff1689620f42400362ffffff16610424565b9250505b509650965096509692505050565b600061037283858460016104e2565b90505b9392505050565b60006103728484846001610553565b600083830281600019858709828110838203039150508084116103ad57600080fd5b806000036103c057508290049050610375565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6000831580610445575050828202828482816104425761044261087d565b04145b15610466576000821161045757600080fd5b81810490829006151501610375565b61047184848461038b565b9050600082806104835761048361087d565b848609111561037557600019811061049a57600080fd5b6001019392505050565b600061018c858585856001610600565b60006103728385846000610553565b600061037284848460006104e2565b600061018c858585856000610600565b6000846001600160a01b0316846001600160a01b0316101561050357600080fd5b6001600160a01b0385850316826105315761052c81856001600160801b0316600160601b61038b565b610549565b61054981856001600160801b0316600160601b610424565b9695505050505050565b60006001600160a01b038585038116908516811061057057600080fd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16836105c957866001600160a01b03166105b68383896001600160a01b031661038b565b816105c3576105c361087d565b046105f5565b6105f56105e08383896001600160a01b0316610424565b886001600160a01b0316808204910615150190565b979650505050505050565b6000856001600160a01b031660000361061857600080fd5b846001600160801b031660000361062e57600080fd5b8360000361063d57508461018c565b8115158315150361074b577bffffffffffffffffffffffffffffffff000000000000000000000000606086901b1682156106f9576001600160a01b0387168581029086828161068e5761068e61087d565b04036106be578181018281106106bc576106b2838a6001600160a01b031683610424565b935050505061018c565b505b6106f0826106e5888b6001600160a01b031686816106de576106de61087d565b049061082c565b808204910615150190565b9250505061018c565b6001600160a01b038716858102908682816107165761071661087d565b041461072157600080fd5b80821161072d57600080fd5b6106f0610746838a6001600160a01b0316848603610424565b610842565b81156107b8576107b16107466001600160a01b038611156107835761077e86600160601b896001600160801b031661038b565b6107a1565b6001600160801b038716606087901b8161079f5761079f61087d565b045b6001600160a01b0389169061082c565b905061018c565b60006001600160a01b038511156107e6576107e185600160601b886001600160801b0316610424565b610803565b610803606086901b6001600160801b038816808204910615150190565b905080876001600160a01b03161161081a57600080fd5b6001600160a01b03871603905061018c565b8082018281101561083c57600080fd5b92915050565b806001600160a01b038116811461085857600080fd5b919050565b610865610893565b565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052605160045260246000fdfea164736f6c6343000814000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80630ea96ae41461003b578063be8d9c56146100bc575b600080fd5b61008c600480360360a081101561005157600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff1661011f565b604080516001600160a01b0390951685526020850193909352838301919091526060830152519081900360800190f35b61010d600480360360a08110156100d257600080fd5b5080356001600160a01b039081169160208101359091169060408101356001600160801b0316906060810135906080013562ffffff1661015a565b60408051918252519081900360200190f35b600080600080610147896001600160a01b0316896001600160a01b0316108a8a8a8a8a610195565b929c919b50995090975095505050505050565b6000805a9050610182876001600160a01b0316876001600160a01b0316108888888888610195565b505050505a900390505b95945050505050565b60008060008061085d8a6101ab576103636101af565b61037c5b9050600087126102835760006101d88888620f42400362ffffff16620f424062ffffff1661038b565b90506101e98a8c8b8563ffffffff16565b94508481106102165789955061020f858862ffffff1689620f42400362ffffff16610424565b925061025c565b6102228b8a838f6104a4565b9550856001600160a01b03168a6001600160a01b03160361024557610245610867565b610254868c8b8563ffffffff16565b945084880392505b61027b868c8b8f61026f576104b4610273565b6104c35b63ffffffff16565b935050610355565b61085d8b610293576104b4610297565b6104c35b90506102a88a8c8b8463ffffffff16565b935087600003975060008812156102d2576040516334cb3a0160e11b815260040160405180910390fd5b8388106102e157899550610326565b6102ed8b8a8a8f6104d2565b9550856001600160a01b03168a6001600160a01b03161461031a57610317868c8b8463ffffffff16565b93505b87841115610326578793505b610335868c8b8563ffffffff16565b9450610351858862ffffff1689620f42400362ffffff16610424565b9250505b509650965096509692505050565b600061037283858460016104e2565b90505b9392505050565b60006103728484846001610553565b600083830281600019858709828110838203039150508084116103ad57600080fd5b806000036103c057508290049050610375565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6000831580610445575050828202828482816104425761044261087d565b04145b15610466576000821161045757600080fd5b81810490829006151501610375565b61047184848461038b565b9050600082806104835761048361087d565b848609111561037557600019811061049a57600080fd5b6001019392505050565b600061018c858585856001610600565b60006103728385846000610553565b600061037284848460006104e2565b600061018c858585856000610600565b6000846001600160a01b0316846001600160a01b0316101561050357600080fd5b6001600160a01b0385850316826105315761052c81856001600160801b0316600160601b61038b565b610549565b61054981856001600160801b0316600160601b610424565b9695505050505050565b60006001600160a01b038585038116908516811061057057600080fd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16836105c957866001600160a01b03166105b68383896001600160a01b031661038b565b816105c3576105c361087d565b046105f5565b6105f56105e08383896001600160a01b0316610424565b886001600160a01b0316808204910615150190565b979650505050505050565b6000856001600160a01b031660000361061857600080fd5b846001600160801b031660000361062e57600080fd5b8360000361063d57508461018c565b8115158315150361074b577bffffffffffffffffffffffffffffffff000000000000000000000000606086901b1682156106f9576001600160a01b0387168581029086828161068e5761068e61087d565b04036106be578181018281106106bc576106b2838a6001600160a01b031683610424565b935050505061018c565b505b6106f0826106e5888b6001600160a01b031686816106de576106de61087d565b049061082c565b808204910615150190565b9250505061018c565b6001600160a01b038716858102908682816107165761071661087d565b041461072157600080fd5b80821161072d57600080fd5b6106f0610746838a6001600160a01b0316848603610424565b610842565b81156107b8576107b16107466001600160a01b038611156107835761077e86600160601b896001600160801b031661038b565b6107a1565b6001600160801b038716606087901b8161079f5761079f61087d565b045b6001600160a01b0389169061082c565b905061018c565b60006001600160a01b038511156107e6576107e185600160601b886001600160801b0316610424565b610803565b610803606086901b6001600160801b038816808204910615150190565b905080876001600160a01b03161161081a57600080fd5b6001600160a01b03871603905061018c565b8082018281101561083c57600080fd5b92915050565b806001600160a01b038116811461085857600080fd5b919050565b610865610893565b565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052605160045260246000fdfea164736f6c6343000814000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
