{
    "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner_",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint16",
              "name": "swapFee",
              "type": "uint16"
            },
            {
              "indexed": false,
              "internalType": "int16",
              "name": "tickSpacing",
              "type": "int16"
            },
            {
              "indexed": false,
              "internalType": "uint16",
              "name": "poolTypeId",
              "type": "uint16"
            }
          ],
          "name": "LimitPoolCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "indexed": false,
              "internalType": "int24",
              "name": "tickSpacing",
              "type": "int24"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pool",
              "type": "address"
            }
          ],
          "name": "PoolCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "internalType": "uint160",
                  "name": "startPrice",
                  "type": "uint160"
                },
                {
                  "internalType": "uint16",
                  "name": "swapFee",
                  "type": "uint16"
                },
                {
                  "internalType": "uint16",
                  "name": "poolTypeId",
                  "type": "uint16"
                }
              ],
              "internalType": "struct PoolsharkStructs.LimitPoolParams",
              "name": "params",
              "type": "tuple"
            }
          ],
          "name": "createLimitPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolToken",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "swapFee",
              "type": "uint16"
            },
            {
              "internalType": "uint16",
              "name": "poolTypeId",
              "type": "uint16"
            }
          ],
          "name": "getLimitPool",
          "outputs": [
            {
              "internalType": "address",
              "name": "pool",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "poolToken",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "original",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "owner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "name": "pools",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ]
}