{
  "_format": "hh-sol-artifact-1",
  "contractName": "TickTest",
  "sourceName": "contracts/test/TickTest.sol",
  "abi": [
    {
      "inputs": [],
      "name": "liquidityAdd",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "liquidityOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "liquiditySub",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "tickInvalidLinks",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "tickIsNotInitialized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        }
      ],
      "name": "clear",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "internalType": "uint256",
          "name": "totalFeeGrowth0Token",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalFeeGrowth1Token",
          "type": "uint256"
        }
      ],
      "name": "cross",
      "outputs": [
        {
          "internalType": "int128",
          "name": "liquidityDelta",
          "type": "int128"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "bottomTick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "topTick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "currentTick",
          "type": "int24"
        },
        {
          "internalType": "uint256",
          "name": "totalFeeGrowth0Token",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalFeeGrowth1Token",
          "type": "uint256"
        }
      ],
      "name": "getInnerFeeGrowth",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "innerFeeGrowth0Token",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "innerFeeGrowth1Token",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "prevTick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "nextTick",
          "type": "int24"
        }
      ],
      "name": "insertTick",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxLiquidityPerTick",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        }
      ],
      "name": "removeTick",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "liquidityTotal",
              "type": "uint256"
            },
            {
              "internalType": "int128",
              "name": "liquidityDelta",
              "type": "int128"
            },
            {
              "internalType": "int24",
              "name": "prevTick",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "nextTick",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "outerFeeGrowth0Token",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "outerFeeGrowth1Token",
              "type": "uint256"
            }
          ],
          "internalType": "struct TickManagement.Tick",
          "name": "data",
          "type": "tuple"
        }
      ],
      "name": "setTick",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "name": "ticks",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "liquidityTotal",
          "type": "uint256"
        },
        {
          "internalType": "int128",
          "name": "liquidityDelta",
          "type": "int128"
        },
        {
          "internalType": "int24",
          "name": "prevTick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "nextTick",
          "type": "int24"
        },
        {
          "internalType": "uint256",
          "name": "outerFeeGrowth0Token",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "outerFeeGrowth1Token",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int24",
          "name": "tick",
          "type": "int24"
        },
        {
          "internalType": "int24",
          "name": "currentTick",
          "type": "int24"
        },
        {
          "internalType": "int128",
          "name": "liquidityDelta",
          "type": "int128"
        },
        {
          "internalType": "uint256",
          "name": "totalFeeGrowth0Token",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalFeeGrowth1Token",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "upper",
          "type": "bool"
        }
      ],
      "name": "update",
      "outputs": [
        {
          "internalType": "bool",
          "name": "flipped",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610c00806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063c9ca13b011610076578063d4c484611161005b578063d4c484611461029d578063e1c7392a146102c5578063f30dba93146102cd57600080fd5b8063c9ca13b01461025d578063cd4727941461027057600080fd5b806370cf754a116100a757806370cf754a1461013f57806389b8ccf21461015b578063b613524a1461020a57600080fd5b806329ea5c7c146100c35780636d80f628146100eb575b600080fd5b6100d66100d136600461094f565b610353565b60405190151581526020015b60405180910390f35b61012c6100f93660046109be565b600292830b60009081526020819052604090206003810180549482018054909403909355929003905560010154600f0b90565b604051600f9190910b81526020016100e2565b6040516d09745258e83de0d0f4e400fce79981526020016100e2565b6102086101693660046109f1565b600291820b6000908152602081815260409182902083518155908301516001820180549385015160608601516001600160801b039093167fffffffffffffffffffffffffff0000000000000000000000000000000000000090951694909417600160801b62ffffff958616021762ffffff60981b1916600160981b94909216939093021790915560808201519281019290925560a00151600390910155565b005b610208610218366004610ab2565b600290810b600090815260208190526040812081815560018101805475ffffffffffffffffffffffffffffffffffffffffffff19169055918201819055600390910155565b61020861026b366004610ad4565b61036f565b61028361027e366004610ab2565b610381565b60408051600293840b81529190920b6020820152016100e2565b6102b06102ab366004610b17565b610397565b604080519283526020830191909152016100e2565b6102086103b6565b61031c6102db366004610ab2565b6000602081905290815260409020805460018201546002808401546003909401549293600f83900b93600160801b8404830b93600160981b900490920b9186565b60408051968752600f9590950b6020870152600293840b94860194909452910b6060840152608083015260a082015260c0016100e2565b6000610364818888888888886103c2565b979650505050505050565b61037c60008484846104bc565b505050565b60008061038e81846105b5565b91509150915091565b6000806103a881888888888861071a565b915091509550959350505050565b6103c060006107b8565b565b600286900b60009081526020889052604081208054826103e282896108a6565b6001600160801b031690506d09745258e83de0d0f4e400fce79981111561041c576040516312dc1b2560e11b815260040160405180910390fd5b6001830154600f0b856104405788600f0b81600f0b61043b9190610b82565b610452565b88600f0b81600f0b6104529190610baa565b6001850180546fffffffffffffffffffffffffffffffff19166001600160801b03929092169190911790558184558115945060008390036104ad57841594508960020b8b60020b136104ad5760038401879055600284018890555b50505050979650505050505050565b600283900b620d89e71914806104e357506104da620d89e719610bd1565b60020b8360020b145b6105af578260020b8260020b12801561050157508260020b8160020b135b61051e5760405163e45ac17d60e01b815260040160405180910390fd5b600283810b6000908152602086905260408082206001908101805465ffffffffffff60801b1916600160981b62ffffff888116820262ffffff60801b1990811693909317600160801b8b831681029190911790945589880b87528587208501805462ffffff60981b1916918c169283029190911790559587900b855292909320018054909116929091029190911790555b50505050565b600281810b600081815260208590526040812060018101805483835575ffffffffffffffffffffffffffffffffffffffffffff198116909155818501839055600390910191909155600160801b8104830b92600160981b909104900b90620d89e7191480610634575061062b620d89e719610bd1565b60020b8360020b145b1561068d57600283900b6000908152602085905260409020600101805462ffffff808516600160801b0262ffffff60801b19918516600160981b029190911665ffffffffffff60801b1990921691909117179055610713565b8060020b8260020b036106b357604051630d6e094960e01b815260040160405180910390fd5b600282810b6000908152602086905260408082206001908101805462ffffff808816600160981b0262ffffff60981b19909216919091179091559385900b83529120018054918416600160801b0262ffffff60801b199092169190911790555b9250929050565b600285810b60009081526020889052604080822087840b8084529183209293849391929088900b1215610790578860020b8760020b1261076b5781600201548603935081600301548503925061077a565b81600201549350816003015492505b60028101546003820154940393909203916107ab565b81600201548160020154039350816003015481600301540392505b5050965096945050505050565b620d89e7196107c681610bd1565b620d89e7196000818152602085905260409020600101805465ffffffffffff60801b1916600160981b62ffffff9485160262ffffff60801b191617600160801b94909316939093029190911790915561081e81610bd1565b82600061082e620d89e719610bd1565b60020b60020b81526020019081526020016000206001016010846000620d89e71961085890610bd1565b60020b81526020810191909152604001600020600101805462ffffff948516600160981b0262ffffff60981b1990911617905581549383166101009190910a90810292021990921617905550565b60008082600f0b12156108e857508082016001600160801b03808416908216106108e3576040516302603ee960e31b815260040160405180910390fd5b610920565b826001600160801b03168284019150816001600160801b0316101561092057604051634cba017960e11b815260040160405180910390fd5b92915050565b8035600281900b811461093857600080fd5b919050565b8035600f81900b811461093857600080fd5b60008060008060008060c0878903121561096857600080fd5b61097187610926565b955061097f60208801610926565b945061098d6040880161093d565b9350606087013592506080870135915060a087013580151581146109b057600080fd5b809150509295509295509295565b6000806000606084860312156109d357600080fd5b6109dc84610926565b95602085013595506040909401359392505050565b60008082840360e0811215610a0557600080fd5b610a0e84610926565b925060c0601f1982011215610a2257600080fd5b5060405160c0810181811067ffffffffffffffff82111715610a5457634e487b7160e01b600052604160045260246000fd5b806040525060208401358152610a6c6040850161093d565b6020820152610a7d60608501610926565b6040820152610a8e60808501610926565b606082015260a0840135608082015260c084013560a0820152809150509250929050565b600060208284031215610ac457600080fd5b610acd82610926565b9392505050565b600080600060608486031215610ae957600080fd5b610af284610926565b9250610b0060208501610926565b9150610b0e60408501610926565b90509250925092565b600080600080600060a08688031215610b2f57600080fd5b610b3886610926565b9450610b4660208701610926565b9350610b5460408701610926565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052601160045260246000fd5b8082018281126000831280158216821582161715610ba257610ba2610b6c565b505092915050565b8181036000831280158383131683831282161715610bca57610bca610b6c565b5092915050565b60008160020b627fffff198103610bea57610bea610b6c565b6000039291505056fea164736f6c6343000814000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c8063c9ca13b011610076578063d4c484611161005b578063d4c484611461029d578063e1c7392a146102c5578063f30dba93146102cd57600080fd5b8063c9ca13b01461025d578063cd4727941461027057600080fd5b806370cf754a116100a757806370cf754a1461013f57806389b8ccf21461015b578063b613524a1461020a57600080fd5b806329ea5c7c146100c35780636d80f628146100eb575b600080fd5b6100d66100d136600461094f565b610353565b60405190151581526020015b60405180910390f35b61012c6100f93660046109be565b600292830b60009081526020819052604090206003810180549482018054909403909355929003905560010154600f0b90565b604051600f9190910b81526020016100e2565b6040516d09745258e83de0d0f4e400fce79981526020016100e2565b6102086101693660046109f1565b600291820b6000908152602081815260409182902083518155908301516001820180549385015160608601516001600160801b039093167fffffffffffffffffffffffffff0000000000000000000000000000000000000090951694909417600160801b62ffffff958616021762ffffff60981b1916600160981b94909216939093021790915560808201519281019290925560a00151600390910155565b005b610208610218366004610ab2565b600290810b600090815260208190526040812081815560018101805475ffffffffffffffffffffffffffffffffffffffffffff19169055918201819055600390910155565b61020861026b366004610ad4565b61036f565b61028361027e366004610ab2565b610381565b60408051600293840b81529190920b6020820152016100e2565b6102b06102ab366004610b17565b610397565b604080519283526020830191909152016100e2565b6102086103b6565b61031c6102db366004610ab2565b6000602081905290815260409020805460018201546002808401546003909401549293600f83900b93600160801b8404830b93600160981b900490920b9186565b60408051968752600f9590950b6020870152600293840b94860194909452910b6060840152608083015260a082015260c0016100e2565b6000610364818888888888886103c2565b979650505050505050565b61037c60008484846104bc565b505050565b60008061038e81846105b5565b91509150915091565b6000806103a881888888888861071a565b915091509550959350505050565b6103c060006107b8565b565b600286900b60009081526020889052604081208054826103e282896108a6565b6001600160801b031690506d09745258e83de0d0f4e400fce79981111561041c576040516312dc1b2560e11b815260040160405180910390fd5b6001830154600f0b856104405788600f0b81600f0b61043b9190610b82565b610452565b88600f0b81600f0b6104529190610baa565b6001850180546fffffffffffffffffffffffffffffffff19166001600160801b03929092169190911790558184558115945060008390036104ad57841594508960020b8b60020b136104ad5760038401879055600284018890555b50505050979650505050505050565b600283900b620d89e71914806104e357506104da620d89e719610bd1565b60020b8360020b145b6105af578260020b8260020b12801561050157508260020b8160020b135b61051e5760405163e45ac17d60e01b815260040160405180910390fd5b600283810b6000908152602086905260408082206001908101805465ffffffffffff60801b1916600160981b62ffffff888116820262ffffff60801b1990811693909317600160801b8b831681029190911790945589880b87528587208501805462ffffff60981b1916918c169283029190911790559587900b855292909320018054909116929091029190911790555b50505050565b600281810b600081815260208590526040812060018101805483835575ffffffffffffffffffffffffffffffffffffffffffff198116909155818501839055600390910191909155600160801b8104830b92600160981b909104900b90620d89e7191480610634575061062b620d89e719610bd1565b60020b8360020b145b1561068d57600283900b6000908152602085905260409020600101805462ffffff808516600160801b0262ffffff60801b19918516600160981b029190911665ffffffffffff60801b1990921691909117179055610713565b8060020b8260020b036106b357604051630d6e094960e01b815260040160405180910390fd5b600282810b6000908152602086905260408082206001908101805462ffffff808816600160981b0262ffffff60981b19909216919091179091559385900b83529120018054918416600160801b0262ffffff60801b199092169190911790555b9250929050565b600285810b60009081526020889052604080822087840b8084529183209293849391929088900b1215610790578860020b8760020b1261076b5781600201548603935081600301548503925061077a565b81600201549350816003015492505b60028101546003820154940393909203916107ab565b81600201548160020154039350816003015481600301540392505b5050965096945050505050565b620d89e7196107c681610bd1565b620d89e7196000818152602085905260409020600101805465ffffffffffff60801b1916600160981b62ffffff9485160262ffffff60801b191617600160801b94909316939093029190911790915561081e81610bd1565b82600061082e620d89e719610bd1565b60020b60020b81526020019081526020016000206001016010846000620d89e71961085890610bd1565b60020b81526020810191909152604001600020600101805462ffffff948516600160981b0262ffffff60981b1990911617905581549383166101009190910a90810292021990921617905550565b60008082600f0b12156108e857508082016001600160801b03808416908216106108e3576040516302603ee960e31b815260040160405180910390fd5b610920565b826001600160801b03168284019150816001600160801b0316101561092057604051634cba017960e11b815260040160405180910390fd5b92915050565b8035600281900b811461093857600080fd5b919050565b8035600f81900b811461093857600080fd5b60008060008060008060c0878903121561096857600080fd5b61097187610926565b955061097f60208801610926565b945061098d6040880161093d565b9350606087013592506080870135915060a087013580151581146109b057600080fd5b809150509295509295509295565b6000806000606084860312156109d357600080fd5b6109dc84610926565b95602085013595506040909401359392505050565b60008082840360e0811215610a0557600080fd5b610a0e84610926565b925060c0601f1982011215610a2257600080fd5b5060405160c0810181811067ffffffffffffffff82111715610a5457634e487b7160e01b600052604160045260246000fd5b806040525060208401358152610a6c6040850161093d565b6020820152610a7d60608501610926565b6040820152610a8e60808501610926565b606082015260a0840135608082015260c084013560a0820152809150509250929050565b600060208284031215610ac457600080fd5b610acd82610926565b9392505050565b600080600060608486031215610ae957600080fd5b610af284610926565b9250610b0060208501610926565b9150610b0e60408501610926565b90509250925092565b600080600080600060a08688031215610b2f57600080fd5b610b3886610926565b9450610b4660208701610926565b9350610b5460408701610926565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052601160045260246000fd5b8082018281126000831280158216821582161715610ba257610ba2610b6c565b505092915050565b8181036000831280158383131683831282161715610bca57610bca610b6c565b5092915050565b60008160020b627fffff198103610bea57610bea610b6c565b6000039291505056fea164736f6c6343000814000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
