{
  "version": "v4.3.0",
  "name": "Pool",
  "bytecode": "4020403609124023403843b747b34916493049ca4a3c4a6c4a9c4ad04afc4b3b4b674c494c6c4c8a4cbc4cd84d0b4d6c4d824d9d4da74dbc4dd24df94e064e1b4e714e854eef4f5f4feb508b512f51b45206524e535c562056ae572f57af57c5589258af597a5a125a4b5bfe5c55010000000102140002010000000102a0000201000101010716000c3413406e7bce0102010002030008160100021702160016024113406d7b0000010301413816000c3f264c061600057c203d4a0216003d1701160112800d89e83d321340ca7b16010d380c304c0213ccfffcb933bd6fad37aa2d162d1a5940014a0113cd0100000000000000000000000000000000170216010e380c304c06160213ccfff97272373d413259a46990580e213a2c1340803c4a0116021702160110380c304c06160213ccfff2e50f5f656932ef12357cf3c7fdcc2c1340803c4a011602170216011308380c304c06160213ccffe5caca7e10e4e61c3624eaa0941cd02c1340803c4a011602170216011310380c304c06160213ccffcb9843d60f6159c9db58835c9266442c1340803c4a011602170216011320380c304c06160213ccff973b41fa98c081472e6896dfb254c02c1340803c4a01160217021601134040380c304c06160213ccff2ea16466c96a3843ec78b326b528612c1340803c4a01160217021601134080380c304c06160213ccfe5dee046a99a2a811c461f1969c30532c1340803c4a01160217021601134100380c304c06160213ccfcbe86c7900a88aedcffc83b479aa3a42c1340803c4a01160217021601134200380c304c06160213ccf987a7253ac413176f2b074cf7815e542c1340803c4a01160217021601134400380c304c06160213ccf3392b0822b70005940c7a398e4b70f32c1340803c4a01160217021601134800380c304c06160213cce7159475a2c29b7443b29c7fa6e889d92c1340803c4a01160217021601135000380c304c06160213ccd097f3bdfd2022b8845ad8f792aa58252c1340803c4a01160217021601136000380c304c06160213cca9f746462d870fdf8a65dc1f90e061e52c1340803c4a011602170216011380004000380c304c06160213cc70d869a156d2a1b890bb3df62baf32f72c1340803c4a011602170216011380008000380c304c06160213cc31be135f97d08fd981231505542fcfa62c1340803c4a011602170216011380010000380c304c06160213cc09aa508b5b7a84e1c677de54f3e99bc92c1340803c4a011602170216011380020000380c304c06160213cb5d6af8dedb81196699c329225ee6042c1340803c4a011602170216011380040000380c304c06160213ca2216e584f5fa1ea926041bedfe982c1340803c4a011602170216011380080000380c304c06160213c8048a170391f7dc42444e8fa22c1340803c4a0116021702160005284c060c0d3616022d4a0116021702160213c1010000000091020100010b0141f2d3c6eb44f3160013c101000276a3347a4c0418160013d0fffd8963efd1fc6a506488495d951d5263988d26311340c97b160013203b1701160117020c1703160213cd01000000000000000000000000000000000d2b334c08160313408039170316021340803c1702160213c50100000000000000000d2b334c08160313404039170316021340403c1702160213c101000000000d2b334c0816031320391703160213203c17021602138000ffff334c0816031310391703160213103c170216021340ff334c0816031308391703160213083c17021602130f334c081603103917031602103c170216020f334c0816030e39170316020e3c170216020d334c0416030d3917031603134080344c071601160313407f2b3c17024a06160113407f16032b3b17021603134080314c0e0c0d3613407f2b16032a0c0d361340403c384a0316031340802b1340403b17040c1705160216022c13407f3c170216021340803c170516041605133f3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133e3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133d3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133c3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133b3b391704160216053c1702160216022c13407f3c170216021340803c170516041605133a3b391704160216053c1702160216022c13407f3c170216021340803c17051604160513393b391704160216053c1702160216022c13407f3c170216021340803c17051604160513383b391704160216053c1702160216022c13407f3c170216021340803c17051604160513373b391704160216053c1702160216022c13407f3c170216021340803c17051604160513363b391704160216053c1702160216022c13407f3c170216021340803c17051604160513353b391704160216053c1702160216022c13407f3c170216021340803c17051604160513343b391704160216053c1702160216022c13407f3c170216021340803c17051604160513333b391704160216053c1702160216022c13407f3c170216021340803c17051604160513323b391704160413c63627a301d71055774c85371706160613dcfffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556351340803c1707160613ccdb2df09e81959a81455e260799a0632f351340803c170816071380800000314c0316073f4a0616071380ffffff383f128100000020170916081380800000314c0316083f4a0616081380ffffff383f128100000020170a1609160a244c031609024a0a160a00041600324c03160a024a021609020000050d0440c5160016013417051603052917060c17070c17080c17090c170a16064c402316033d13800f424016042b13800f42400010170b16054c0616011600160203000c4a0516001601160203000e1707160b1607344c0216014a0516001602160b1605000a17094a402216054c0616011600160204000e4a0516001601160204000c17081603057c203d1608344c0216014a09160016021603057c203d1605000b1709160116092f170c16054c1e160c7a4c021816064c0216074a0516091600160203000c1707160c7a4c03181606194c0216084a0516091600160204000e17084a1d160c7a4c021816064c0216074a0516001609160203000e1707160c7a4c03181606194c0216084a0516001609160204000c17081606197a4c0818160316083f057c20284c061603057c203d170816067a4c041816091601304c0616033d16072b170a4a071607160413800f424016042b0011170a160916071608160a0200000202010e160016012d160016012e0c2f4c020c4a010d2a020000040901404916020c2f4c0216000216011340603b17041602160037170516034c1c160516022d16002f4c0d1604160535170616061604344c051604160016060011021604160416002d16022a0007024a1d160516022d16002f7a4c041816041605331340dd7b160416052b170716041600160700111708160813d1010000000000000000000000000000000000000000311340e17b1608020000040701402116034c11160213c901000000000000000000000000160100101704160016042a1705160513d1010000000000000000000000000000000000000000311340e17b1605024a0e160213c90100000000000000000000000016010011170616001606331340de7b160016062b0200000404011916000c331340df7b16010c331340e07b16034c07160016011602030008024a061600160116020300090200000404011916000c331340df7b16010c331340e07b16034c07160016011602040009024a061600160116020400080200000406011916021340603b1704160116002b170516034c08160416051601001116000007024a07160416051601001016002d0200000303011b16020b274c0f160016011602057c203d04000c3f057c20024a081600160116023d03000c3f02000004050111160116002b170416034c061602160413c9010000000000000000000000000011024a051602160413c90100000000000000000000000000100200000303011b160205264c0f160016011602057c203d04000e3f057c20024a081600160116023d03000e3f020000030901408d160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816041608370200000304011216001601160200101703160016011602870c334c0416030d2a021603020000010101120e16007a7a1241003a7a05294b033a904a023a221302640200000105011b1600001217011601cb17021602c54c02160202b21301640c130164170417031601ce0416031604c11816020200000103010d1600001217011601cb17021602c54c02160202ce040200000103001e1600ce0a23052413412d7b16007a7ace0a3a7a05294b033a904a023a22170116010013170216010d0c160201020000020602403016007a7ace0a3a7a05294b033a904a023a2216014c02054a01061f170216020014170316021601ce0a0f0e1603010317051704160412bff27618264c0212bff276181704160412800d89e8284c0212800d89e817041604160502010003030108d37afb14100d1600160116021304640201000405010ad35b19984c1601160216030017170416001604cc0200000101010316004002000003040109160016020019cc1703160116034402000003040109160016011602001a170316001603cc0200000202000f16001601261340667b160012bff27618291340677b160112800d89e8271340687b0000010101050c160013026402010001020107d30949c5981600001d17011601cb02000001080240301600001d17011601cb17021602c54c03160204021600a002274c04a00ea00fa0104a030c0c0c170517041703b216001302640c05160316041605130564170717061601ce0316061607c11816020302000003040108160016011602001717031603cb020000030d024039160016011602001717031603cb17041604c54c03160404020c0c0c1709170817070c0c0c170c170b170ab2a0001406414c504800031303640c160716081609160a160b160c13076417061705a0000d2aa1001603ce01160516060d1600c9181604030200000209034047a002a00ea00fa010100f16000101170417031702a002a00ea00fa010100f160101021707170617050c170816080f314c402716087a0f314d130e2ac316087a0f314d0e2a782b16087a0f314d112a783616087a0f314d0e2a7916080d2a17084a7fd5160216031604020000051103404b1602001f170617051603001f17081707ce0b1604040f0d160501001709ce0b1604030f0d16070100170a16097a4b021816064c0216020015160a7a4b021816084c0216030015160516070022170d170c170b1604160b160c160d100f160001041710170f170e16094c0516010d0c16050103160a4c0516010d0c16070103160e160f1610020003050f05405416021603001c560030160016011602160316040023170717061705160405254c403ca004170816020004170916030004170aa0021602264c0b1609160a1604000d170b160b0516051606160702a0021603264c16a001160a1604000d170c1609a0011604000f170d16083f16041f3da104160c160d160516061607021609160a1604000f170e05160e1605160616070205051605160616070201070513024056d3e58379f416011602160300211706170516064c0d16040c2f170716071913406b7b160016014513406c7b16011602160316043f170b170a170917081600160516064c020c4a010da3160516081609160a160b00241710170f170e170d170c160c3d1711160d3d17121600ce061611ac1600ce071612ac1207160116021603160e160f161056750916001601160216031604161116125676161116120201030511024048d39d5023b316011602160316043f057c20170817071706170516011602160300201709160016090da3160916051606160716080024170e170d170c170b170a160a057c203d170f160b057c203d1710160f16100e0c160901051207160116021603160c160d160e56750a16001601160216031604160f161075160f1610020103080c034027d3417830ee160216031604002017081605160616070f0f16080106170b170a1709160016080da316011609160a160b00281206160016011602160316041609160a160b761609160a160b020001040800402ece06ce07ce081706170517040c170716070f314c402216077a0f314d0d2a780c334c12160016077a0f314d102a7816077a0f314d0d2a78ab16070d2a17074a7fda01000418004097d34c88990ba0011704a0021705a00417061601052817070517081605160019001618170906160900045e16030c334c407c16030d2b1703160516000016170b170a160a0004170c1604160c16061601ce0900061710170f170e170d16074c0d1601160e16102a3f2017011608160f3f2017084a0c1601160f3f1f17011608160e16102a3f1f1708160b4c17160a001e17110c0d16110105171216004c051612057c204a011612171316063f16131f3d170616004c04160a06204a01160a1705160d170407160416065f160105244c1f1602430c2f4c0102160016071c4c02ce074a01ce061714160216141607002b171717161817151615160816171603100c16160129024a7f80010307403402416dd3d6407a21160405251340697b560030160405281707a001a002a003170a1709170816034c0c16051608317a4c0418160513c101000276a33313406a7b4a0b16051608337a4c0418160513d0fffd8963efd1fc6a506488495d951d5263988d263113406a7ba00416034c04160a13102e4a03160a103c170c170b1604051608160916034c02a00e4a01a00f160b0c1713171217111710170f170e170d160d05257a4c0418160f1605304c409b1610160300161715171416140004171616034c0416161605314a031616160533171716174c0216054a0116161718160f16181612160dce090006171c171b171a1719160f161416151616161a161b161c1723172217211720171f171e171d1619170f16074c0d160d162116232a3f20170d160e16223f20170e4a0c160d16223f1f170d160e162116232a3f1f170e160c0c334c041623160c2d4a010c1724161316242a171316120c334c091611162316242b13cd0100000000000000000000000000000000161200102a1711160f16202f4c4027161f4c1c161e001e1725a00ea00fa01016031611110d16250104172616034c051626057c204a011626172716123f16271f3d171216034c04161e06204a01161e17104a07160f161d304c03160f000517104a7f5b160fa1011610a1021612a1041613130a2d1728161316282b171316034c071611a10ea01116132aa1114a061611a10fa01216132aa1121604160d201729160e172a160316071d4c041629172a160e172916034c0e160016011602ce0616293dce07162a057c203d16064a0d160016011602ce07162a3dce061629057c203d1606173217311730172f172e172d172c172b16074c0f1600162e162fa3162b162c162d162e162f1630163116321628002d4a1216001602a51733160016021633a3162b162c162d162e162f1630163116321628002c08160016011629162aa001a004a002751629162a020000030d04404116000c13206217030e170416001320132016042a62170516056d1706160171160371311707160716021c170816084c0413c101000276a30d2a4a0313d0fffd8963efd1fc6a506488495d951d5263988d260d2b17091600132016042a16004362170a16074c0416011603444a031603160144170bce00160b1606001b170c16081609160c160a020001091000404716031602414c1e160016031604acce02160047cc1709ce00ce06ce0744ce05001a170a160016031608a3160016031608160a0c110c160901004a40211607160304002b170e170d170c170b16001602a5170f16001602160fa31600b21602160b16043f057c20160c160e13070e160d012a1818160116051606ab00010910004046160016031604acce02160147cc17091609c51340717b1609170ace00ce06ce0744ce05001a170b160016031608a3160016031608160b0c110c160a010016051602414c05160116051606ab4a1a1607160503002b170f170e170d170cb216051606a3b216011602160c16063f160d160f13070e160e012a1818010002020307d3c62bf5cfa0011600000416010004020000020800408716007a0f314d0f2c112ac3170216007a0f314d0f2c112a0d2ac3170316020c2f7a4b041816011602327a4b041816031602324c0102a0040c304c404f160116022b170416007a0f314d0f2c112a0e2ac31705160316022b170616041606314c0516041605160600104a011605170716007a0f314d130e2ac3160713cd0100000000000000000000000000000000a00400102a16007a0f314d130e2ac416007a0f314d0f2c112a0e2ac316072b16007a0f314d0f2c112a0e2ac4160116007a0f314d0f2c112ac400000102000e0c170116010f314c0816011600002f16010d2a17014a340107030a004096d34ca91e1416010f311340727b16020c331340747bce06ce07ce0817051704170316017a0f314d0f2a7817065617071607003016017a0f314d0f2c112a0e2ac3170816017a0f314d0f2c112a0d2ac31607337a4c041816080c331340737b16017a0f314d0f2c112a0d2ac316072b1709160716017a0f314d0f2c112ac416017a0f314d0f2c112a0d2ac316091602160800102a16017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316022a16017a0f314d0f2c112a0e2ac4160016061602ac0107050a004065d375c252e5b4ce00774513406f7b16010f311340727b16040c331340747b56170516021605334c0216024a011605170616061603311340707b16050030ce06ce07ce08170917081707160616017a0f314d0f2c112ac4160316017a0f314d0f2c112a0d2ac416017a0f314d0f2c112a0e2ac316042a16017a0f314d0f2c112a0e2ac4160016017a0f314d13072a781604ac01020103001cd3960b26b3b3ce00411341937ba0111701a01217021600ce061601ab1600ce071602ab0ca1110ca1121208b41600160116026101000840270840d1d300611b5f1601001e17081602001e17091600160116020020170a0c10160a0107170e170d170c170b16081609002217111710170f160100041712160200041713051714051715160b3f1716a0021601264c06161216131616000d17144a14a0021602264c0ba00116131616000d17141612a0011616000f17154a05161216131616000f17150c0c0c171917181717160b0c334c40290c171a161a0f314c4023161a7a0f314d130f2a78161a7a0f314d130c2a782b171b161b160b13cd01000000000000000000000000000000000010161a7a0f314d13172a79161a0d2a171a4a7fd905171c05171d56171e161e16062b171f1607161f2a17201603160b161f2c2a3f1721a0021601264c06161216131621000d171c4a14a0021602264c0ba00116131621000d171c1612a0011621000f171d4a05161216131621000f171da001a00113c901000000000000000000000000001017221622161c3d13c9010000000000000000000000000010161d3d2a1723160416172a1724160516182a17251622162413c901000000000000000000000000001016252a17261614161516171618161916231626162002010000000103d3ee6a5cd514404868747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f616c65706869756d2f746f6b656e2d6c6973742f6d61737465722f636f72652f6d2e6a736f6e02",
  "codeHash": "cdb37fb2772ba9c976a4dc34db15994ecaeef82d8690b9a94c600a81c67f98c4",
  "fieldsSig": {
    "names": [
      "parent",
      "positionTemplate",
      "dexAccountTemplate",
      "tickTemplate",
      "wordTemplate",
      "configIndex",
      "token0",
      "token1",
      "token2",
      "fee",
      "tickSpacing",
      "maxLiquidityPerTick",
      "nextNftIndex",
      "slot0",
      "liquidity",
      "rewardInfos",
      "feeGrowths",
      "protocolFees",
      "__stdInterfaceId"
    ],
    "types": [
      "PoolFactory",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "U256",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "U256",
      "I256",
      "U256",
      "U256",
      "Slot0",
      "U256",
      "[Reward;3]",
      "[U256;3]",
      "ProtocolFees",
      "ByteVec"
    ],
    "isMutable": [
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      true,
      true,
      true,
      true,
      true,
      true,
      false
    ]
  },
  "eventsSig": [
    {
      "name": "Initialize",
      "fieldNames": [
        "sqrtPriceX96",
        "tick"
      ],
      "fieldTypes": [
        "U256",
        "I256"
      ]
    },
    {
      "name": "SwapStart",
      "fieldNames": [
        "sqrtPriceX96"
      ],
      "fieldTypes": [
        "U256"
      ]
    },
    {
      "name": "SwapStep",
      "fieldNames": [
        "sqrtPriceX96",
        "liquidity"
      ],
      "fieldTypes": [
        "U256",
        "U256"
      ]
    },
    {
      "name": "Swap",
      "fieldNames": [
        "sender",
        "recipient",
        "amount0",
        "amount1",
        "sqrtPriceX96",
        "liquidity",
        "tick"
      ],
      "fieldTypes": [
        "Address",
        "Address",
        "I256",
        "I256",
        "U256",
        "U256",
        "I256"
      ]
    },
    {
      "name": "Mint",
      "fieldNames": [
        "sender",
        "owner",
        "tickLower",
        "tickUpper",
        "liquidity",
        "amount0",
        "amount1",
        "timestamp"
      ],
      "fieldTypes": [
        "Address",
        "Address",
        "I256",
        "I256",
        "U256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "Burn",
      "fieldNames": [
        "operator",
        "owner",
        "tickLower",
        "tickUpper",
        "liquidity",
        "amount0",
        "amount1"
      ],
      "fieldTypes": [
        "Address",
        "Address",
        "I256",
        "I256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "Collect",
      "fieldNames": [
        "operator",
        "recipient",
        "owner",
        "tickLower",
        "tickUpper",
        "amount0",
        "amount1",
        "amount2"
      ],
      "fieldTypes": [
        "Address",
        "Address",
        "Address",
        "I256",
        "I256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "Fees",
      "fieldNames": [
        "owner",
        "tickLower",
        "tickUpper",
        "amount0",
        "amount1",
        "amount2",
        "timestamp"
      ],
      "fieldTypes": [
        "Address",
        "I256",
        "I256",
        "U256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "CollectProtocol",
      "fieldNames": [
        "sender",
        "recipient",
        "amount0",
        "amount1"
      ],
      "fieldTypes": [
        "Address",
        "Address",
        "U256",
        "U256"
      ]
    }
  ],
  "functions": [
    {
      "name": "getCollectionUri",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "totalSupply",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "nftByIndex",
      "paramNames": [
        "index"
      ],
      "paramTypes": [
        "U256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "INFT"
      ]
    },
    {
      "name": "validateNFT",
      "paramNames": [
        "nftId",
        "nftIndex"
      ],
      "paramTypes": [
        "ByteVec",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "getSqrtRatioAtTick",
      "paramNames": [
        "tick"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getTickAtSqrtRatio",
      "paramNames": [
        "sqrtPriceX96"
      ],
      "paramTypes": [
        "U256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "I256"
      ]
    },
    {
      "name": "computeSwapStep",
      "paramNames": [
        "sqrtRatioCurrentX96",
        "sqrtRatioTargetX96",
        "liquidity_",
        "amountRemaining",
        "feePips"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "I256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256",
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "divRoundingUp",
      "paramNames": [
        "x",
        "y"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getNextSqrtPriceFromAmount0RoundingUp",
      "paramNames": [
        "sqrtPX96",
        "liquidity_",
        "amount",
        "add"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getNextSqrtPriceFromAmount1RoundingDown",
      "paramNames": [
        "sqrtPX96",
        "liquidity_",
        "amount",
        "add"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getNextSqrtPriceFromInput",
      "paramNames": [
        "sqrtPX96",
        "liquidity_",
        "amountIn",
        "zeroForOne"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getNextSqrtPriceFromOutput",
      "paramNames": [
        "sqrtPX96",
        "liquidity_",
        "amountOut",
        "zeroForOne"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getAmount0DeltaEx",
      "paramNames": [
        "sqrtRatioAX96",
        "sqrtRatioBX96",
        "liquidityDelta",
        "roundUp"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getAmount0Delta",
      "paramNames": [
        "sqrtRatioAX96",
        "sqrtRatioBX96",
        "liquidityDelta"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "I256"
      ]
    },
    {
      "name": "getAmount1DeltaEx",
      "paramNames": [
        "sqrtRatioAX96",
        "sqrtRatioBX96",
        "liquidityDelta",
        "roundUp"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "getAmount1Delta",
      "paramNames": [
        "sqrtRatioAX96",
        "sqrtRatioBX96",
        "liquidityDelta"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "I256"
      ]
    },
    {
      "name": "mulDiv",
      "paramNames": [
        "a",
        "b",
        "denominator"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        true
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "mulDivRoundingUp",
      "paramNames": [
        "a",
        "b",
        "denominator"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "wordPath",
      "paramNames": [
        "compressed"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "getWord",
      "paramNames": [
        "compressed"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "BitmapWord"
      ]
    },
    {
      "name": "getWordOrTemplate",
      "paramNames": [
        "compressed"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "BitmapWord"
      ]
    },
    {
      "name": "flipTick",
      "paramNames": [
        "tick"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    },
    {
      "name": "nextInitializedTickWithinOneWord",
      "paramNames": [
        "tick",
        "zeroForOne"
      ],
      "paramTypes": [
        "I256",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "I256",
        "Bool"
      ]
    },
    {
      "name": "positionPath",
      "paramNames": [
        "o",
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "Address",
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "positionContractId",
      "paramNames": [
        "pool",
        "o",
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "Pool",
        "Address",
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "configPath",
      "paramNames": [
        "configIndex_"
      ],
      "paramTypes": [
        "U256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "poolPath",
      "paramNames": [
        "factory",
        "tokens",
        "configIndex_"
      ],
      "paramTypes": [
        "PoolFactory",
        "ByteVec",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "poolContractId",
      "paramNames": [
        "factory",
        "tokens",
        "configIndex_"
      ],
      "paramTypes": [
        "PoolFactory",
        "ByteVec",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "checkTicks",
      "paramNames": [
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "tickPath",
      "paramNames": [
        "tick"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "ByteVec"
      ]
    },
    {
      "name": "toTick",
      "paramNames": [
        "tick"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "Tick"
      ]
    },
    {
      "name": "getTick",
      "paramNames": [
        "tick"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "Tick",
        "Bool"
      ]
    },
    {
      "name": "toPosition",
      "paramNames": [
        "owner",
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "Address",
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "Position"
      ]
    },
    {
      "name": "getPosition",
      "paramNames": [
        "owner",
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "Address",
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "Position",
        "Bool"
      ]
    },
    {
      "name": "getFeeGrowthInside",
      "paramNames": [
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "Tick",
        "Tick"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "[U256;3]"
      ]
    },
    {
      "name": "updatePosition",
      "paramNames": [
        "position",
        "owner",
        "tickLower",
        "tickUpper",
        "liquidityDelta"
      ],
      "paramTypes": [
        "Position",
        "Address",
        "I256",
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "[U256;3]"
      ]
    },
    {
      "name": "modifyPosition",
      "paramNames": [
        "position",
        "params"
      ],
      "paramTypes": [
        "Position",
        "ModifyPositionParams"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "I256",
        "I256",
        "[U256;3]"
      ]
    },
    {
      "name": "mint",
      "paramNames": [
        "payer",
        "owner",
        "tickLower",
        "tickUpper",
        "amount"
      ],
      "paramTypes": [
        "Address",
        "Address",
        "I256",
        "I256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256",
        "U256"
      ]
    },
    {
      "name": "burn",
      "paramNames": [
        "operator",
        "owner",
        "tickLower",
        "tickUpper",
        "amount"
      ],
      "paramTypes": [
        "Address",
        "Address",
        "I256",
        "I256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "U256",
        "U256"
      ]
    },
    {
      "name": "collect",
      "paramNames": [
        "operator",
        "recipient",
        "owner",
        "tickLower",
        "tickUpper",
        "maxAmounts"
      ],
      "paramTypes": [
        "Address",
        "Address",
        "Address",
        "I256",
        "I256",
        "[U256;3]"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "[U256;3]"
      ]
    },
    {
      "name": "withdraw",
      "paramNames": [
        "recipient",
        "amounts"
      ],
      "paramTypes": [
        "Address",
        "[U256;3]"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "simulateSwap",
      "paramNames": [
        "zeroForOne",
        "amountSpecified",
        "data",
        "maxSteps"
      ],
      "paramTypes": [
        "Bool",
        "I256",
        "ByteVec",
        "U256"
      ],
      "paramIsMutable": [
        false,
        true,
        false,
        true
      ],
      "returnTypes": []
    },
    {
      "name": "swap",
      "paramNames": [
        "payer",
        "recipient",
        "token",
        "zeroForOne",
        "amountSpecified",
        "sqrtPriceLimitX96",
        "data"
      ],
      "paramTypes": [
        "Address",
        "Address",
        "ByteVec",
        "Bool",
        "I256",
        "U256",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "I256",
        "I256"
      ]
    },
    {
      "name": "pop",
      "paramNames": [
        "data",
        "t",
        "exactInput"
      ],
      "paramTypes": [
        "ByteVec",
        "ByteVec",
        "Bool"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": [
        "Bool",
        "U256",
        "Pool",
        "ByteVec"
      ]
    },
    {
      "name": "swapExactOut",
      "paramNames": [
        "p",
        "refRewards"
      ],
      "paramTypes": [
        "SwapParams",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "swapExactIn",
      "paramNames": [
        "p",
        "refRewards"
      ],
      "paramTypes": [
        "SwapParams",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "getSqrtPricesX96",
      "paramNames": [
        "tickLower",
        "tickUpper"
      ],
      "paramTypes": [
        "I256",
        "I256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "U256",
        "U256",
        "U256"
      ]
    },
    {
      "name": "updateReward",
      "paramNames": [
        "index",
        "blockTime"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "updateRewards",
      "paramNames": [
        "blockTime"
      ],
      "paramTypes": [
        "U256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    },
    {
      "name": "extendRewards",
      "paramNames": [
        "payer",
        "index",
        "amount"
      ],
      "paramTypes": [
        "Address",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "setRewardParams",
      "paramNames": [
        "payer",
        "index",
        "openTime",
        "endTime",
        "amount"
      ],
      "paramTypes": [
        "Address",
        "U256",
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "collectProtocolFees",
      "paramNames": [
        "recipient"
      ],
      "paramTypes": [
        "Address"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": []
    },
    {
      "name": "positionInfo",
      "paramNames": [
        "owner",
        "tickLower",
        "tickUpper",
        "acc",
        "iacc0",
        "iacc1",
        "t0",
        "acct0"
      ],
      "paramTypes": [
        "Address",
        "I256",
        "I256",
        "U256",
        "U256",
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "PositionInfo"
      ]
    },
    {
      "name": "getTokenUri",
      "paramNames": [],
      "paramTypes": [],
      "paramIsMutable": [],
      "returnTypes": [
        "ByteVec"
      ]
    }
  ],
  "constants": [
    {
      "name": "MAX_PIPS",
      "value": {
        "type": "U256",
        "value": "1000000"
      }
    }
  ],
  "enums": [
    {
      "name": "TickMathError",
      "fields": [
        {
          "name": "SqrtPriceX96OutOfBounds",
          "value": {
            "type": "U256",
            "value": "201"
          }
        },
        {
          "name": "TickOutOfBounds",
          "value": {
            "type": "U256",
            "value": "202"
          }
        }
      ]
    },
    {
      "name": "SqrtPriceMathError",
      "fields": [
        {
          "name": "SqrtFromAmountOverflow",
          "value": {
            "type": "U256",
            "value": "221"
          }
        },
        {
          "name": "QuotientTooHigh",
          "value": {
            "type": "U256",
            "value": "222"
          }
        },
        {
          "name": "PriceZero",
          "value": {
            "type": "U256",
            "value": "223"
          }
        },
        {
          "name": "NoLiquidity",
          "value": {
            "type": "U256",
            "value": "224"
          }
        },
        {
          "name": "PriceNotFitIn160",
          "value": {
            "type": "U256",
            "value": "225"
          }
        }
      ]
    },
    {
      "name": "FullMathError",
      "fields": [
        {
          "name": "MulDivOverflow",
          "value": {
            "type": "U256",
            "value": "351"
          }
        }
      ]
    },
    {
      "name": "TickBitmapError",
      "fields": [
        {
          "name": "TickNotAligned",
          "value": {
            "type": "U256",
            "value": "301"
          }
        }
      ]
    },
    {
      "name": "PathPrefixes",
      "fields": [
        {
          "name": "Tick",
          "value": {
            "type": "U256",
            "value": "0"
          }
        },
        {
          "name": "Position",
          "value": {
            "type": "U256",
            "value": "1"
          }
        },
        {
          "name": "Word",
          "value": {
            "type": "U256",
            "value": "2"
          }
        }
      ]
    },
    {
      "name": "PoolError",
      "fields": [
        {
          "name": "TLU",
          "value": {
            "type": "U256",
            "value": "102"
          }
        },
        {
          "name": "TLM",
          "value": {
            "type": "U256",
            "value": "103"
          }
        },
        {
          "name": "TUM",
          "value": {
            "type": "U256",
            "value": "104"
          }
        },
        {
          "name": "AS",
          "value": {
            "type": "U256",
            "value": "105"
          }
        },
        {
          "name": "SPL",
          "value": {
            "type": "U256",
            "value": "106"
          }
        },
        {
          "name": "NP",
          "value": {
            "type": "U256",
            "value": "107"
          }
        },
        {
          "name": "UnauthorizedMint",
          "value": {
            "type": "U256",
            "value": "108"
          }
        },
        {
          "name": "NFTNotPartOfCollection",
          "value": {
            "type": "U256",
            "value": "109"
          }
        },
        {
          "name": "NFTByIndexNotSupported",
          "value": {
            "type": "U256",
            "value": "110"
          }
        },
        {
          "name": "UnauthorizedRewardSender",
          "value": {
            "type": "U256",
            "value": "111"
          }
        },
        {
          "name": "InvalidRewardParams",
          "value": {
            "type": "U256",
            "value": "112"
          }
        },
        {
          "name": "DexAccountNotFound",
          "value": {
            "type": "U256",
            "value": "113"
          }
        },
        {
          "name": "InvalidRewardIndex",
          "value": {
            "type": "U256",
            "value": "114"
          }
        },
        {
          "name": "RewardPeriodEnded",
          "value": {
            "type": "U256",
            "value": "115"
          }
        },
        {
          "name": "ZeroRewardAmount",
          "value": {
            "type": "U256",
            "value": "116"
          }
        }
      ]
    }
  ],
  "stdInterfaceId": "0002"
}