{
  "version": "v4.3.0",
  "name": "PoolFactory",
  "bytecode": "08090a1f403540a040ed41ce41f5422b424500000101010316004002000003040109160016020000cc17031601160344020000030401091600160116020001170316001603cc020000010401403a12bff276187a7a16003a7a05294b033a224a023a90160021170112800d89e87a7a16003a7a05294b033a904a023a22160021170216021601207a7a16003a7a05294b033a904a023a223d0d2a170313ccffffffffffffffffffffffffffffffff16032d0201000307014028d31c03e050b4ce00451341937b16001601160213036413006417041703a0001705a000000017061606ce0516031604c118a0000d2aa1000516055e07160116001605601605020100054020014079d3530365c2160071160171311342bd7b16020000cb17050c0f1605010017081707170616060003170916030d0dce010105170a1603160a0c170d170c170b0c0c0c0c0c0c0c0c0c171a171917181717171617151714171317120c0c0c171d171c171b0c0c171f171eb1ce02ce06ce03ce0416021600160116041607160616091406414c50480002130d640c160b160c160d0c16121613161416151616161716181619161a161b161c161d161e161f131364170f170eb116001601441602000117101610ce01160e160fc1171106161116001601160261161102010004050012d32d2d48cdb4ce00451342bf7bb1160216034416010002170416000d0c160401330103090a001ad3132dd93db4ce00451342be7bb11601160244160000021709160316041608a316031605160616071608110c1609013201000303000ad3333a48b8b4ce00451341937b160016011602bb",
  "codeHash": "4f2990418f84360134e2fe3c2732c0ad191b52d772a8406ae9afe6e87c427bf3",
  "fieldsSig": {
    "names": [
      "owner",
      "poolTemplate",
      "positionTemplate",
      "tickTemplate",
      "wordTemplate",
      "poolConfigTemplate",
      "dexAccountTemplate",
      "nextConfigIndex"
    ],
    "types": [
      "Address",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "ByteVec",
      "U256"
    ],
    "isMutable": [
      false,
      false,
      false,
      false,
      false,
      false,
      false,
      true
    ]
  },
  "eventsSig": [
    {
      "name": "ConfigCreated",
      "fieldNames": [
        "index"
      ],
      "fieldTypes": [
        "U256"
      ]
    },
    {
      "name": "PoolCreated",
      "fieldNames": [
        "id",
        "token0",
        "token1",
        "configIndex"
      ],
      "fieldTypes": [
        "ByteVec",
        "ByteVec",
        "ByteVec",
        "U256"
      ]
    },
    {
      "name": "FeeTierEnabled",
      "fieldNames": [
        "fee",
        "tickSpacing",
        "index"
      ],
      "fieldTypes": [
        "U256",
        "I256",
        "U256"
      ]
    }
  ],
  "functions": [
    {
      "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": "tickSpacingToMaxLiquidityPerTick",
      "paramNames": [
        "tickSpacing"
      ],
      "paramTypes": [
        "I256"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "createConfig",
      "paramNames": [
        "config"
      ],
      "paramTypes": [
        "Config"
      ],
      "paramIsMutable": [
        false
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "create",
      "paramNames": [
        "token0",
        "token1",
        "configIndex",
        "sqrtPriceX96",
        "rewardToken"
      ],
      "paramTypes": [
        "ByteVec",
        "ByteVec",
        "U256",
        "U256",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": [
        "Pool"
      ]
    },
    {
      "name": "collectProtocolFees",
      "paramNames": [
        "recipient",
        "configIndex",
        "token0",
        "token1"
      ],
      "paramTypes": [
        "Address",
        "U256",
        "ByteVec",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "setRewardParams",
      "paramNames": [
        "configIndex",
        "token0",
        "token1",
        "payer",
        "tokenId",
        "index",
        "openTime",
        "endTime",
        "amount"
      ],
      "paramTypes": [
        "U256",
        "ByteVec",
        "ByteVec",
        "Address",
        "ByteVec",
        "U256",
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        false,
        false,
        false,
        false,
        false,
        false,
        false
      ],
      "returnTypes": []
    },
    {
      "name": "upgrate",
      "paramNames": [
        "newBytecode",
        "newEncodedImmFields",
        "newEncodedMutFields"
      ],
      "paramTypes": [
        "ByteVec",
        "ByteVec",
        "ByteVec"
      ],
      "paramIsMutable": [
        false,
        false,
        false
      ],
      "returnTypes": []
    }
  ],
  "constants": [],
  "enums": [
    {
      "name": "FactoryError",
      "fields": [
        {
          "name": "InvalidTokenOrder",
          "value": {
            "type": "U256",
            "value": "701"
          }
        },
        {
          "name": "UnauthorizedRewardSender",
          "value": {
            "type": "U256",
            "value": "702"
          }
        },
        {
          "name": "UnauthorizedFeeCollector",
          "value": {
            "type": "U256",
            "value": "703"
          }
        }
      ]
    }
  ]
}