{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenDeltaMathTest",
  "sourceName": "contracts/test/TokenDeltaMathTest.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtP",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "zeroToOne",
          "type": "bool"
        }
      ],
      "name": "getGasCostOfGetNewPriceAfterInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtP",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "zeroToOne",
          "type": "bool"
        }
      ],
      "name": "getGasCostOfGetNewPriceAfterOutput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtLower",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtUpper",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "bool",
          "name": "roundUp",
          "type": "bool"
        }
      ],
      "name": "getGasCostOfGetToken0Delta",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtLower",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtUpper",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "bool",
          "name": "roundUp",
          "type": "bool"
        }
      ],
      "name": "getGasCostOfGetToken1Delta",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtP",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "zeroToOne",
          "type": "bool"
        }
      ],
      "name": "getNewPriceAfterInput",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "sqrtQ",
          "type": "uint160"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtP",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "zeroToOne",
          "type": "bool"
        }
      ],
      "name": "getNewPriceAfterOutput",
      "outputs": [
        {
          "internalType": "uint160",
          "name": "sqrtQ",
          "type": "uint160"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtLower",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtUpper",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "bool",
          "name": "roundUp",
          "type": "bool"
        }
      ],
      "name": "getToken0Delta",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount0",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint160",
          "name": "sqrtLower",
          "type": "uint160"
        },
        {
          "internalType": "uint160",
          "name": "sqrtUpper",
          "type": "uint160"
        },
        {
          "internalType": "uint128",
          "name": "liquidity",
          "type": "uint128"
        },
        {
          "internalType": "bool",
          "name": "roundUp",
          "type": "bool"
        }
      ],
      "name": "getToken1Delta",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amount1",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610855806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80635e3971de1161005b5780635e3971de146101cf57806397a28f5414610212578063b294af3014610255578063f608d0711461029c57600080fd5b8063053be9c11461008d5780631594271c146100e257806320a62e2a146101295780633877c01114610170575b600080fd5b6100d0600480360360808110156100a357600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156102e3565b60408051918252519081900360200190f35b6100d0600480360360808110156100f857600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610302565b6100d06004803603608081101561013f57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610314565b6101b36004803603608081101561018657600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561032b565b604080516001600160a01b039092168252519081900360200190f35b6101b3600480360360808110156101e557600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610339565b6100d06004803603608081101561022857600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610347565b6100d06004803603608081101561026b57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610359565b6100d0600480360360808110156102b257600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610367565b6000805a90506102f586868686610379565b505a900395945050505050565b6000805a90506102f586868686610389565b600061032285858585610389565b95945050505050565b600061032285858585610436565b600061032285858585610379565b6000805a90506102f586868686610436565b600061032285858585610446565b6000805a90506102f586868686610446565b60006103228585858560006104b7565b60006001600160a01b03858503811690851681106103a657600080fd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16836103ff57866001600160a01b03166103ec8383896001600160a01b03166106e7565b816103f9576103f9610832565b0461042b565b61042b6104168383896001600160a01b0316610781565b886001600160a01b0316808204910615150190565b979650505050505050565b60006103228585858560016104b7565b6000846001600160a01b0316846001600160a01b0316101561046757600080fd5b6001600160a01b0385850316826104955761049081856001600160801b0316600160601b6106e7565b6104ad565b6104ad81856001600160801b0316600160601b610781565b9695505050505050565b6000856001600160a01b03166000036104cf57600080fd5b846001600160801b03166000036104e557600080fd5b836000036104f4575084610322565b81151583151503610602577bffffffffffffffffffffffffffffffff000000000000000000000000606086901b1682156105b0576001600160a01b0387168581029086828161054557610545610832565b04036105755781810182811061057357610569838a6001600160a01b031683610781565b9350505050610322565b505b6105a78261059c888b6001600160a01b0316868161059557610595610832565b0490610801565b808204910615150190565b92505050610322565b6001600160a01b038716858102908682816105cd576105cd610832565b04146105d857600080fd5b8082116105e457600080fd5b6105a76105fd838a6001600160a01b0316848603610781565b610817565b811561066f576106686105fd6001600160a01b0386111561063a5761063586600160601b896001600160801b03166106e7565b610658565b6001600160801b038716606087901b8161065657610656610832565b045b6001600160a01b03891690610801565b9050610322565b60006001600160a01b0385111561069d5761069885600160601b886001600160801b0316610781565b6106ba565b6106ba606086901b6001600160801b038816808204910615150190565b905080876001600160a01b0316116106d157600080fd5b6001600160a01b03871603905095945050505050565b6000838302816000198587098281108382030391505080841161070957600080fd5b8060000361071c5750829004905061077a565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290505b9392505050565b60008315806107a25750508282028284828161079f5761079f610832565b04145b156107c357600082116107b457600080fd5b8181049082900615150161077a565b6107ce8484846106e7565b9050600082806107e0576107e0610832565b848609111561077a5760001981106107f757600080fd5b6001019392505050565b8082018281101561081157600080fd5b92915050565b806001600160a01b038116811461082d57600080fd5b919050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000814000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80635e3971de1161005b5780635e3971de146101cf57806397a28f5414610212578063b294af3014610255578063f608d0711461029c57600080fd5b8063053be9c11461008d5780631594271c146100e257806320a62e2a146101295780633877c01114610170575b600080fd5b6100d0600480360360808110156100a357600080fd5b506001600160a01b03813516906001600160801b03602082013516906040810135906060013515156102e3565b60408051918252519081900360200190f35b6100d0600480360360808110156100f857600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610302565b6100d06004803603608081101561013f57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610314565b6101b36004803603608081101561018657600080fd5b506001600160a01b03813516906001600160801b036020820135169060408101359060600135151561032b565b604080516001600160a01b039092168252519081900360200190f35b6101b3600480360360808110156101e557600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610339565b6100d06004803603608081101561022857600080fd5b506001600160a01b03813516906001600160801b0360208201351690604081013590606001351515610347565b6100d06004803603608081101561026b57600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610359565b6100d0600480360360808110156102b257600080fd5b506001600160a01b0381358116916020810135909116906001600160801b0360408201351690606001351515610367565b6000805a90506102f586868686610379565b505a900395945050505050565b6000805a90506102f586868686610389565b600061032285858585610389565b95945050505050565b600061032285858585610436565b600061032285858585610379565b6000805a90506102f586868686610436565b600061032285858585610446565b6000805a90506102f586868686610446565b60006103228585858560006104b7565b60006001600160a01b03858503811690851681106103a657600080fd5b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b16836103ff57866001600160a01b03166103ec8383896001600160a01b03166106e7565b816103f9576103f9610832565b0461042b565b61042b6104168383896001600160a01b0316610781565b886001600160a01b0316808204910615150190565b979650505050505050565b60006103228585858560016104b7565b6000846001600160a01b0316846001600160a01b0316101561046757600080fd5b6001600160a01b0385850316826104955761049081856001600160801b0316600160601b6106e7565b6104ad565b6104ad81856001600160801b0316600160601b610781565b9695505050505050565b6000856001600160a01b03166000036104cf57600080fd5b846001600160801b03166000036104e557600080fd5b836000036104f4575084610322565b81151583151503610602577bffffffffffffffffffffffffffffffff000000000000000000000000606086901b1682156105b0576001600160a01b0387168581029086828161054557610545610832565b04036105755781810182811061057357610569838a6001600160a01b031683610781565b9350505050610322565b505b6105a78261059c888b6001600160a01b0316868161059557610595610832565b0490610801565b808204910615150190565b92505050610322565b6001600160a01b038716858102908682816105cd576105cd610832565b04146105d857600080fd5b8082116105e457600080fd5b6105a76105fd838a6001600160a01b0316848603610781565b610817565b811561066f576106686105fd6001600160a01b0386111561063a5761063586600160601b896001600160801b03166106e7565b610658565b6001600160801b038716606087901b8161065657610656610832565b045b6001600160a01b03891690610801565b9050610322565b60006001600160a01b0385111561069d5761069885600160601b886001600160801b0316610781565b6106ba565b6106ba606086901b6001600160801b038816808204910615150190565b905080876001600160a01b0316116106d157600080fd5b6001600160a01b03871603905095945050505050565b6000838302816000198587098281108382030391505080841161070957600080fd5b8060000361071c5750829004905061077a565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290505b9392505050565b60008315806107a25750508282028284828161079f5761079f610832565b04145b156107c357600082116107b457600080fd5b8181049082900615150161077a565b6107ce8484846106e7565b9050600082806107e0576107e0610832565b848609111561077a5760001981106107f757600080fd5b6001019392505050565b8082018281101561081157600080fd5b92915050565b806001600160a01b038116811461082d57600080fd5b919050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000814000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
