{
  "_format": "hh-sol-artifact-1",
  "contractName": "PriceMovementMathEchidnaTest",
  "sourceName": "contracts/test/echidna/PriceMovementMathEchidnaTest.sol",
  "abi": [
    {
      "inputs": [],
      "name": "invalidAmountRequired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "price",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "checkGetNewPriceAfterInputInvariantOtZ",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "price",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "checkGetNewPriceAfterInputInvariantZtO",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtPriceRaw",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceTargetRaw",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "int256",
          "name": "amountRemaining",
          "type": "int256"
        },
        {
          "internalType": "uint24",
          "name": "feePips",
          "type": "uint24"
        }
      ],
      "name": "checkMovePriceTowardsTargetInvariants",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610b41806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063452696101461004657806372ee26ba1461005b57806381c84c3a1461006e575b600080fd5b610059610054366004610a4c565b610081565b005b610059610069366004610a88565b6100b8565b61005961007c366004610a4c565b610321565b6000610090848484600061033f565b9050600061009f828686610358565b9050828111156100b1576100b1610af2565b5050505050565b6000856001600160a01b0316116100ce57600080fd5b6000846001600160a01b0316116100e457600080fd5b620f42408162ffffff16106100f857600080fd5b600080600080610121896001600160a01b0316896001600160a01b031611158a8a8a8a8a610371565b9350935093509350806000190383111561013d5761013d610af2565b6000861215610187578560000382111561015957610159610af2565b610173838662ffffff1687620f42400362ffffff1661053f565b81111561018257610182610af2565b610199565b85818401111561019957610199610af2565b876001600160a01b0316896001600160a01b0316036101fd5782156101c0576101c0610af2565b81156101ce576101ce610af2565b80156101dc576101dc610af2565b876001600160a01b0316846001600160a01b0316146101fd576101fd610af2565b876001600160a01b0316846001600160a01b03161461027057600086121561025f5785600003821461023157610231610af2565b61024b838662ffffff1687620f42400362ffffff1661053f565b81111561025a5761025a610af2565b610270565b858184011461027057610270610af2565b886001600160a01b0316886001600160a01b0316116102d257886001600160a01b0316846001600160a01b031611156102ab576102ab610af2565b876001600160a01b0316846001600160a01b031610156102cd576102cd610af2565b610316565b886001600160a01b0316846001600160a01b031610156102f4576102f4610af2565b876001600160a01b0316846001600160a01b0316111561031657610316610af2565b505050505050505050565b6000610330848484600161033f565b9050600061009f8286866105bf565b600061034f8585858560016105ce565b95945050505050565b600061036783858460016107fe565b90505b9392505050565b600080600080610a148a6103875761035861038b565b6105bf5b90506000871261045f5760006103b48888620f42400362ffffff16620f424062ffffff1661086f565b90506103c58a8c8b8563ffffffff16565b94508481106103f2578995506103eb858862ffffff1689620f42400362ffffff1661053f565b9250610438565b6103fe8b8a838f61033f565b9550856001600160a01b03168a6001600160a01b03160361042157610421610af2565b610430868c8b8563ffffffff16565b945084880392505b610457868c8b8f61044b5761090861044f565b6109175b63ffffffff16565b935050610531565b610a148b61046f57610908610473565b6109175b90506104848a8c8b8463ffffffff16565b935087600003975060008812156104ae576040516334cb3a0160e11b815260040160405180910390fd5b8388106104bd57899550610502565b6104c98b8a8a8f610926565b9550856001600160a01b03168a6001600160a01b0316146104f6576104f3868c8b8463ffffffff16565b93505b87841115610502578793505b610511868c8b8563ffffffff16565b945061052d858862ffffff1689620f42400362ffffff1661053f565b9250505b509650965096509692505050565b60008315806105605750508282028284828161055d5761055d610b08565b04145b15610581576000821161057257600080fd5b8181049082900615150161036a565b61058c84848461086f565b90506000828061059e5761059e610b08565b848609111561036a5760001981106105b557600080fd5b6001019392505050565b60006103678484846001610936565b6000856001600160a01b03166000036105e657600080fd5b846001600160801b03166000036105fc57600080fd5b8360000361060b57508461034f565b81151583151503610719577bffffffffffffffffffffffffffffffff000000000000000000000000606086901b1682156106c7576001600160a01b0387168581029086828161065c5761065c610b08565b040361068c5781810182811061068a57610680838a6001600160a01b03168361053f565b935050505061034f565b505b6106be826106b3888b6001600160a01b031686816106ac576106ac610b08565b04906109e3565b808204910615150190565b9250505061034f565b6001600160a01b038716858102908682816106e4576106e4610b08565b04146106ef57600080fd5b8082116106fb57600080fd5b6106be610714838a6001600160a01b031684860361053f565b6109f9565b81156107865761077f6107146001600160a01b038611156107515761074c86600160601b896001600160801b031661086f565b61076f565b6001600160801b038716606087901b8161076d5761076d610b08565b045b6001600160a01b038916906109e3565b905061034f565b60006001600160a01b038511156107b4576107af85600160601b886001600160801b031661053f565b6107d1565b6107d1606086901b6001600160801b038816808204910615150190565b905080876001600160a01b0316116107e857600080fd5b6001600160a01b03871603905095945050505050565b6000846001600160a01b0316846001600160a01b0316101561081f57600080fd5b6001600160a01b03858503168261084d5761084881856001600160801b0316600160601b61086f565b610865565b61086581856001600160801b0316600160601b61053f565b9695505050505050565b6000838302816000198587098281108382030391505080841161089157600080fd5b806000036108a45750829004905061036a565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b60006103678385846000610936565b600061036784848460006107fe565b600061034f8585858560006105ce565b60006001600160a01b038585038116908516811061095357600080fd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16836109ac57866001600160a01b03166109998383896001600160a01b031661086f565b816109a6576109a6610b08565b046109d8565b6109d86109c38383896001600160a01b031661053f565b886001600160a01b0316808204910615150190565b979650505050505050565b808201828110156109f357600080fd5b92915050565b806001600160a01b0381168114610a0f57600080fd5b919050565b610a1c610b1e565b565b80356001600160a01b0381168114610a0f57600080fd5b80356001600160801b0381168114610a0f57600080fd5b600080600060608486031215610a6157600080fd5b610a6a84610a1e565b9250610a7860208501610a35565b9150604084013590509250925092565b600080600080600060a08688031215610aa057600080fd5b610aa986610a1e565b9450610ab760208701610a1e565b9350610ac560408701610a35565b925060608601359150608086013562ffffff81168114610ae457600080fd5b809150509295509295909350565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052605160045260246000fdfea164736f6c6343000814000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063452696101461004657806372ee26ba1461005b57806381c84c3a1461006e575b600080fd5b610059610054366004610a4c565b610081565b005b610059610069366004610a88565b6100b8565b61005961007c366004610a4c565b610321565b6000610090848484600061033f565b9050600061009f828686610358565b9050828111156100b1576100b1610af2565b5050505050565b6000856001600160a01b0316116100ce57600080fd5b6000846001600160a01b0316116100e457600080fd5b620f42408162ffffff16106100f857600080fd5b600080600080610121896001600160a01b0316896001600160a01b031611158a8a8a8a8a610371565b9350935093509350806000190383111561013d5761013d610af2565b6000861215610187578560000382111561015957610159610af2565b610173838662ffffff1687620f42400362ffffff1661053f565b81111561018257610182610af2565b610199565b85818401111561019957610199610af2565b876001600160a01b0316896001600160a01b0316036101fd5782156101c0576101c0610af2565b81156101ce576101ce610af2565b80156101dc576101dc610af2565b876001600160a01b0316846001600160a01b0316146101fd576101fd610af2565b876001600160a01b0316846001600160a01b03161461027057600086121561025f5785600003821461023157610231610af2565b61024b838662ffffff1687620f42400362ffffff1661053f565b81111561025a5761025a610af2565b610270565b858184011461027057610270610af2565b886001600160a01b0316886001600160a01b0316116102d257886001600160a01b0316846001600160a01b031611156102ab576102ab610af2565b876001600160a01b0316846001600160a01b031610156102cd576102cd610af2565b610316565b886001600160a01b0316846001600160a01b031610156102f4576102f4610af2565b876001600160a01b0316846001600160a01b0316111561031657610316610af2565b505050505050505050565b6000610330848484600161033f565b9050600061009f8286866105bf565b600061034f8585858560016105ce565b95945050505050565b600061036783858460016107fe565b90505b9392505050565b600080600080610a148a6103875761035861038b565b6105bf5b90506000871261045f5760006103b48888620f42400362ffffff16620f424062ffffff1661086f565b90506103c58a8c8b8563ffffffff16565b94508481106103f2578995506103eb858862ffffff1689620f42400362ffffff1661053f565b9250610438565b6103fe8b8a838f61033f565b9550856001600160a01b03168a6001600160a01b03160361042157610421610af2565b610430868c8b8563ffffffff16565b945084880392505b610457868c8b8f61044b5761090861044f565b6109175b63ffffffff16565b935050610531565b610a148b61046f57610908610473565b6109175b90506104848a8c8b8463ffffffff16565b935087600003975060008812156104ae576040516334cb3a0160e11b815260040160405180910390fd5b8388106104bd57899550610502565b6104c98b8a8a8f610926565b9550856001600160a01b03168a6001600160a01b0316146104f6576104f3868c8b8463ffffffff16565b93505b87841115610502578793505b610511868c8b8563ffffffff16565b945061052d858862ffffff1689620f42400362ffffff1661053f565b9250505b509650965096509692505050565b60008315806105605750508282028284828161055d5761055d610b08565b04145b15610581576000821161057257600080fd5b8181049082900615150161036a565b61058c84848461086f565b90506000828061059e5761059e610b08565b848609111561036a5760001981106105b557600080fd5b6001019392505050565b60006103678484846001610936565b6000856001600160a01b03166000036105e657600080fd5b846001600160801b03166000036105fc57600080fd5b8360000361060b57508461034f565b81151583151503610719577bffffffffffffffffffffffffffffffff000000000000000000000000606086901b1682156106c7576001600160a01b0387168581029086828161065c5761065c610b08565b040361068c5781810182811061068a57610680838a6001600160a01b03168361053f565b935050505061034f565b505b6106be826106b3888b6001600160a01b031686816106ac576106ac610b08565b04906109e3565b808204910615150190565b9250505061034f565b6001600160a01b038716858102908682816106e4576106e4610b08565b04146106ef57600080fd5b8082116106fb57600080fd5b6106be610714838a6001600160a01b031684860361053f565b6109f9565b81156107865761077f6107146001600160a01b038611156107515761074c86600160601b896001600160801b031661086f565b61076f565b6001600160801b038716606087901b8161076d5761076d610b08565b045b6001600160a01b038916906109e3565b905061034f565b60006001600160a01b038511156107b4576107af85600160601b886001600160801b031661053f565b6107d1565b6107d1606086901b6001600160801b038816808204910615150190565b905080876001600160a01b0316116107e857600080fd5b6001600160a01b03871603905095945050505050565b6000846001600160a01b0316846001600160a01b0316101561081f57600080fd5b6001600160a01b03858503168261084d5761084881856001600160801b0316600160601b61086f565b610865565b61086581856001600160801b0316600160601b61053f565b9695505050505050565b6000838302816000198587098281108382030391505080841161089157600080fd5b806000036108a45750829004905061036a565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b60006103678385846000610936565b600061036784848460006107fe565b600061034f8585858560006105ce565b60006001600160a01b038585038116908516811061095357600080fd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16836109ac57866001600160a01b03166109998383896001600160a01b031661086f565b816109a6576109a6610b08565b046109d8565b6109d86109c38383896001600160a01b031661053f565b886001600160a01b0316808204910615150190565b979650505050505050565b808201828110156109f357600080fd5b92915050565b806001600160a01b0381168114610a0f57600080fd5b919050565b610a1c610b1e565b565b80356001600160a01b0381168114610a0f57600080fd5b80356001600160801b0381168114610a0f57600080fd5b600080600060608486031215610a6157600080fd5b610a6a84610a1e565b9250610a7860208501610a35565b9150604084013590509250925092565b600080600080600060a08688031215610aa057600080fd5b610aa986610a1e565b9450610ab760208701610a1e565b9350610ac560408701610a35565b925060608601359150608086013562ffffff81168114610ae457600080fd5b809150509295509295909350565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052605160045260246000fdfea164736f6c6343000814000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
