[
  {
    "type": "function",
    "name": "launch",
    "inputs": [
      {
        "name": "params",
        "type": "tuple",
        "components": [
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "tokenUri",
            "type": "string"
          },
          {
            "name": "creator",
            "type": "address"
          },
          {
            "name": "premineAmount",
            "type": "uint256"
          },
          {
            "name": "swapFee",
            "type": "uint24"
          },
          {
            "name": "creatorShare",
            "type": "uint16"
          },
          {
            "name": "buybackShare",
            "type": "uint16"
          },
          {
            "name": "holderShare",
            "type": "uint16"
          },
          {
            "name": "startFee",
            "type": "uint24"
          },
          {
            "name": "antiSnipeDuration",
            "type": "uint32"
          },
          {
            "name": "opensAt",
            "type": "uint64"
          },
          {
            "name": "quote",
            "type": "address"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "memecoin",
        "type": "address"
      }
    ],
    "stateMutability": "payable"
  },
  {
    "type": "function",
    "name": "poolKey",
    "inputs": [
      {
        "name": "token",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "components": [
          {
            "name": "currency0",
            "type": "address"
          },
          {
            "name": "currency1",
            "type": "address"
          },
          {
            "name": "fee",
            "type": "uint24"
          },
          {
            "name": "tickSpacing",
            "type": "int24"
          },
          {
            "name": "hooks",
            "type": "address"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "currentSwapFee",
    "inputs": [
      {
        "name": "poolId",
        "type": "bytes32"
      },
      {
        "name": "isBuy",
        "type": "bool"
      }
    ],
    "outputs": [
      {
        "name": "feeBps",
        "type": "uint24"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "launchFee",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "creatorNft",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "startingMarketCap",
    "inputs": [
      {
        "name": "quote",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "PoolCreated",
    "inputs": [
      {
        "name": "poolId",
        "type": "bytes32",
        "indexed": true
      },
      {
        "name": "_memecoin",
        "type": "address",
        "indexed": true
      },
      {
        "name": "_creator",
        "type": "address",
        "indexed": true
      },
      {
        "name": "_quote",
        "type": "address"
      },
      {
        "name": "_treasury",
        "type": "address"
      },
      {
        "name": "_swapFee",
        "type": "uint256"
      },
      {
        "name": "_opensAt",
        "type": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PoolSwap",
    "inputs": [
      {
        "name": "poolId",
        "type": "bytes32",
        "indexed": true
      },
      {
        "name": "trader",
        "type": "address",
        "indexed": true
      },
      {
        "name": "isBuy",
        "type": "bool"
      },
      {
        "name": "quoteAmount",
        "type": "uint256"
      },
      {
        "name": "tokenAmount",
        "type": "uint256"
      },
      {
        "name": "feeAmount",
        "type": "uint256"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "PoolScheduled",
    "inputs": [
      {
        "name": "poolId",
        "type": "bytes32",
        "indexed": true
      },
      {
        "name": "opensAt",
        "type": "uint64"
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "NotOpenYet",
    "inputs": [
      {
        "name": "opensAt",
        "type": "uint64"
      }
    ]
  },
  {
    "type": "error",
    "name": "SplitMustSumToTen000",
    "inputs": []
  },
  {
    "type": "error",
    "name": "AntiSnipeOutOfRange",
    "inputs": []
  },
  {
    "type": "error",
    "name": "DevBuyTooSmall",
    "inputs": [
      {
        "name": "minimum",
        "type": "uint256"
      }
    ]
  }
]
