[
 {
  "type": "function",
  "name": "check",
  "inputs": [
   {
    "name": "p",
    "type": "tuple",
    "internalType": "struct LaunchParamsV2",
    "components": [
     {
      "name": "name",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "symbol",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "uri",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "quote",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "poolFeeBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "buyTaxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "sellTaxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "split",
      "type": "tuple",
      "internalType": "struct Split",
      "components": [
       {
        "name": "creator",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "holders",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "liquidity",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "burn",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "floor",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     },
     {
      "name": "sniperStartBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "sniperSeconds",
      "type": "uint32",
      "internalType": "uint32"
     },
     {
      "name": "surplusTo",
      "type": "uint8",
      "internalType": "uint8"
     },
     {
      "name": "creatorPayout",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "firstBuyIn",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "minTokensOut",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "blocks",
      "type": "tuple",
      "internalType": "struct Blocks",
      "components": [
       {
        "name": "sizeFeeBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "sizeThresholdBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "devFeeBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "capBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "capSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "potNth",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "potBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "vestSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "burnCapBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "burnMinInterval",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "gateSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "budgetBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "budgetSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "gateRoot",
        "type": "bytes32",
        "internalType": "bytes32"
       }
      ]
     },
     {
      "name": "legs",
      "type": "tuple[]",
      "internalType": "struct Leg[]",
      "components": [
       {
        "name": "to",
        "type": "address",
        "internalType": "address"
       },
       {
        "name": "bps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     }
    ]
   },
   {
    "name": "quoteEnabled",
    "type": "bool",
    "internalType": "bool"
   },
   {
    "name": "forbidden",
    "type": "address[4]",
    "internalType": "address[4]"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "pure"
 },
 {
  "type": "function",
  "name": "checkBlocks",
  "inputs": [
   {
    "name": "p",
    "type": "tuple",
    "internalType": "struct LaunchParamsV2",
    "components": [
     {
      "name": "name",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "symbol",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "uri",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "quote",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "poolFeeBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "buyTaxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "sellTaxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "split",
      "type": "tuple",
      "internalType": "struct Split",
      "components": [
       {
        "name": "creator",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "holders",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "liquidity",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "burn",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "floor",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     },
     {
      "name": "sniperStartBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "sniperSeconds",
      "type": "uint32",
      "internalType": "uint32"
     },
     {
      "name": "surplusTo",
      "type": "uint8",
      "internalType": "uint8"
     },
     {
      "name": "creatorPayout",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "firstBuyIn",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "minTokensOut",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "blocks",
      "type": "tuple",
      "internalType": "struct Blocks",
      "components": [
       {
        "name": "sizeFeeBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "sizeThresholdBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "devFeeBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "capBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "capSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "potNth",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "potBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "vestSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "burnCapBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "burnMinInterval",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "gateSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "budgetBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "budgetSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "gateRoot",
        "type": "bytes32",
        "internalType": "bytes32"
       }
      ]
     },
     {
      "name": "legs",
      "type": "tuple[]",
      "internalType": "struct Leg[]",
      "components": [
       {
        "name": "to",
        "type": "address",
        "internalType": "address"
       },
       {
        "name": "bps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     }
    ]
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "pure"
 },
 {
  "type": "function",
  "name": "paysHolders",
  "inputs": [
   {
    "name": "p",
    "type": "tuple",
    "internalType": "struct LaunchParamsV2",
    "components": [
     {
      "name": "name",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "symbol",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "uri",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "quote",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "poolFeeBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "buyTaxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "sellTaxBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "split",
      "type": "tuple",
      "internalType": "struct Split",
      "components": [
       {
        "name": "creator",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "holders",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "liquidity",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "burn",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "floor",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     },
     {
      "name": "sniperStartBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "sniperSeconds",
      "type": "uint32",
      "internalType": "uint32"
     },
     {
      "name": "surplusTo",
      "type": "uint8",
      "internalType": "uint8"
     },
     {
      "name": "creatorPayout",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "firstBuyIn",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "minTokensOut",
      "type": "uint256",
      "internalType": "uint256"
     },
     {
      "name": "blocks",
      "type": "tuple",
      "internalType": "struct Blocks",
      "components": [
       {
        "name": "sizeFeeBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "sizeThresholdBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "devFeeBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "capBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "capSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "potNth",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "potBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "vestSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "burnCapBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "burnMinInterval",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "gateSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "budgetBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "budgetSeconds",
        "type": "uint32",
        "internalType": "uint32"
       },
       {
        "name": "gateRoot",
        "type": "bytes32",
        "internalType": "bytes32"
       }
      ]
     },
     {
      "name": "legs",
      "type": "tuple[]",
      "internalType": "struct Leg[]",
      "components": [
       {
        "name": "to",
        "type": "address",
        "internalType": "address"
       },
       {
        "name": "bps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     }
    ]
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "pure"
 }
]
