[
 {
  "type": "constructor",
  "inputs": [
   {
    "name": "pm",
    "type": "address",
    "internalType": "contract IPoolManager"
   },
   {
    "name": "hook_",
    "type": "address",
    "internalType": "contract SignalV4HookV4"
   },
   {
    "name": "router_",
    "type": "address",
    "internalType": "contract SignalV4RouterV2"
   },
   {
    "name": "wnative_",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "owner_",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "quotes_",
    "type": "tuple[]",
    "internalType": "struct SignalV4FactoryV42.QuoteInit[]",
    "components": [
     {
      "name": "quote",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "startTp",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "bands",
      "type": "tuple[]",
      "internalType": "struct Band[]",
      "components": [
       {
        "name": "lo",
        "type": "int24",
        "internalType": "int24"
       },
       {
        "name": "hi",
        "type": "int24",
        "internalType": "int24"
       },
       {
        "name": "bps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     }
    ]
   },
   {
    "name": "rules_",
    "type": "address",
    "internalType": "contract SignalV4RulesV2"
   },
   {
    "name": "tokens_",
    "type": "address",
    "internalType": "contract SignalV4TokensV42"
   }
  ],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "acceptOwnership",
  "inputs": [],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "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"
       }
      ]
     }
    ]
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "checkModule",
  "inputs": [
   {
    "name": "p",
    "type": "tuple",
    "internalType": "struct LaunchParamsV3",
    "components": [
     {
      "name": "base",
      "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": "module",
      "type": "tuple",
      "internalType": "struct Module",
      "components": [
       {
        "name": "impl",
        "type": "address",
        "internalType": "address"
       },
       {
        "name": "floorBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "ceilingBps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     },
     {
      "name": "moduleData",
      "type": "bytes",
      "internalType": "bytes"
     },
     {
      "name": "liqBatchQuote",
      "type": "uint128",
      "internalType": "uint128"
     }
    ]
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "string",
    "internalType": "string"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "describe",
  "inputs": [],
  "outputs": [
   {
    "name": "d",
    "type": "tuple",
    "internalType": "struct ISignalLane.Description",
    "components": [
     {
      "name": "kind",
      "type": "uint8",
      "internalType": "uint8"
     },
     {
      "name": "dialect",
      "type": "uint8",
      "internalType": "uint8"
     },
     {
      "name": "venue",
      "type": "string",
      "internalType": "string"
     },
     {
      "name": "launcher",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "locker",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "treasury",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "holdersFactory",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "router",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "factory",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "whype",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "holderBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "version",
      "type": "uint256",
      "internalType": "uint256"
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "hook",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "contract SignalV4HookV4"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "isSignalToken",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "launch",
  "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": "token",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "id",
    "type": "bytes32",
    "internalType": "PoolId"
   }
  ],
  "stateMutability": "payable"
 },
 {
  "type": "function",
  "name": "launchCount",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "launchWith",
  "inputs": [
   {
    "name": "p",
    "type": "tuple",
    "internalType": "struct LaunchParamsV3",
    "components": [
     {
      "name": "base",
      "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": "module",
      "type": "tuple",
      "internalType": "struct Module",
      "components": [
       {
        "name": "impl",
        "type": "address",
        "internalType": "address"
       },
       {
        "name": "floorBps",
        "type": "uint16",
        "internalType": "uint16"
       },
       {
        "name": "ceilingBps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     },
     {
      "name": "moduleData",
      "type": "bytes",
      "internalType": "bytes"
     },
     {
      "name": "liqBatchQuote",
      "type": "uint128",
      "internalType": "uint128"
     }
    ]
   }
  ],
  "outputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "id",
    "type": "bytes32",
    "internalType": "PoolId"
   }
  ],
  "stateMutability": "payable"
 },
 {
  "type": "function",
  "name": "launches",
  "inputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bytes32",
    "internalType": "PoolId"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "owner",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "pairEnabled",
  "inputs": [
   {
    "name": "asset",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "pairOf",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "quote",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "pool",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "venueWord",
    "type": "int24",
    "internalType": "int24"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "paused",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "stateMutability": "view"
 },
 {
  "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": "view"
 },
 {
  "type": "function",
  "name": "pendingOwner",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "poolKeyOf",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "tuple",
    "internalType": "struct PoolKey",
    "components": [
     {
      "name": "currency0",
      "type": "address",
      "internalType": "Currency"
     },
     {
      "name": "currency1",
      "type": "address",
      "internalType": "Currency"
     },
     {
      "name": "fee",
      "type": "uint24",
      "internalType": "uint24"
     },
     {
      "name": "tickSpacing",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "hooks",
      "type": "address",
      "internalType": "contract IHooks"
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "poolManager",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "contract IPoolManager"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "poolOf",
  "inputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bytes32",
    "internalType": "PoolId"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "protocolBps",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint16",
    "internalType": "uint16"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "quoteList",
  "inputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "quoteTerms",
  "inputs": [
   {
    "name": "quote",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "tuple",
    "internalType": "struct SignalV4FactoryV42.QuoteTerms",
    "components": [
     {
      "name": "enabled",
      "type": "bool",
      "internalType": "bool"
     },
     {
      "name": "decimals",
      "type": "uint8",
      "internalType": "uint8"
     },
     {
      "name": "startTp",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "bands",
      "type": "tuple[]",
      "internalType": "struct Band[]",
      "components": [
       {
        "name": "lo",
        "type": "int24",
        "internalType": "int24"
       },
       {
        "name": "hi",
        "type": "int24",
        "internalType": "int24"
       },
       {
        "name": "bps",
        "type": "uint16",
        "internalType": "uint16"
       }
      ]
     }
    ]
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "quotes",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address[]",
    "internalType": "address[]"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "router",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "contract SignalV4RouterV2"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "rules",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "contract SignalV4RulesV2"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "setPaused",
  "inputs": [
   {
    "name": "p",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setProtocolBps",
  "inputs": [
   {
    "name": "bps",
    "type": "uint16",
    "internalType": "uint16"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setProver",
  "inputs": [
   {
    "name": "p",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setQuote",
  "inputs": [
   {
    "name": "quote",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "enabled",
    "type": "bool",
    "internalType": "bool"
   },
   {
    "name": "startTp",
    "type": "int24",
    "internalType": "int24"
   },
   {
    "name": "bands_",
    "type": "tuple[]",
    "internalType": "struct Band[]",
    "components": [
     {
      "name": "lo",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "hi",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "bps",
      "type": "uint16",
      "internalType": "uint16"
     }
    ]
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "setRouter",
  "inputs": [
   {
    "name": "r",
    "type": "address",
    "internalType": "address"
   },
   {
    "name": "ok",
    "type": "bool",
    "internalType": "bool"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "tokens",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "contract SignalV4TokensV42"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "function",
  "name": "transferOwnership",
  "inputs": [
   {
    "name": "o",
    "type": "address",
    "internalType": "address"
   }
  ],
  "outputs": [],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "unlockCallback",
  "inputs": [
   {
    "name": "data",
    "type": "bytes",
    "internalType": "bytes"
   }
  ],
  "outputs": [
   {
    "name": "",
    "type": "bytes",
    "internalType": "bytes"
   }
  ],
  "stateMutability": "nonpayable"
 },
 {
  "type": "function",
  "name": "version",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "uint256",
    "internalType": "uint256"
   }
  ],
  "stateMutability": "pure"
 },
 {
  "type": "function",
  "name": "wnative",
  "inputs": [],
  "outputs": [
   {
    "name": "",
    "type": "address",
    "internalType": "address"
   }
  ],
  "stateMutability": "view"
 },
 {
  "type": "event",
  "name": "Details",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "metaHash",
    "type": "bytes32",
    "indexed": false,
    "internalType": "bytes32"
   },
   {
    "name": "uri",
    "type": "string",
    "indexed": false,
    "internalType": "string"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "Launched",
  "inputs": [
   {
    "name": "id",
    "type": "bytes32",
    "indexed": true,
    "internalType": "PoolId"
   },
   {
    "name": "token",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "creator",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "quote",
    "type": "address",
    "indexed": false,
    "internalType": "address"
   },
   {
    "name": "rewards",
    "type": "bool",
    "indexed": false,
    "internalType": "bool"
   },
   {
    "name": "poolFeeBps",
    "type": "uint16",
    "indexed": false,
    "internalType": "uint16"
   },
   {
    "name": "buyTaxBps",
    "type": "uint16",
    "indexed": false,
    "internalType": "uint16"
   },
   {
    "name": "sellTaxBps",
    "type": "uint16",
    "indexed": false,
    "internalType": "uint16"
   },
   {
    "name": "protocolBps",
    "type": "uint16",
    "indexed": false,
    "internalType": "uint16"
   },
   {
    "name": "split",
    "type": "tuple",
    "indexed": false,
    "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": "firstBuyTokens",
    "type": "uint256",
    "indexed": false,
    "internalType": "uint256"
   },
   {
    "name": "blocks",
    "type": "tuple",
    "indexed": false,
    "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[]",
    "indexed": false,
    "internalType": "struct Leg[]",
    "components": [
     {
      "name": "to",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "bps",
      "type": "uint16",
      "internalType": "uint16"
     }
    ]
   },
   {
    "name": "module",
    "type": "tuple",
    "indexed": false,
    "internalType": "struct Module",
    "components": [
     {
      "name": "impl",
      "type": "address",
      "internalType": "address"
     },
     {
      "name": "floorBps",
      "type": "uint16",
      "internalType": "uint16"
     },
     {
      "name": "ceilingBps",
      "type": "uint16",
      "internalType": "uint16"
     }
    ]
   },
   {
    "name": "liqBatchQuote",
    "type": "uint128",
    "indexed": false,
    "internalType": "uint128"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "OwnerProposed",
  "inputs": [
   {
    "name": "owner",
    "type": "address",
    "indexed": false,
    "internalType": "address"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "OwnerSet",
  "inputs": [
   {
    "name": "owner",
    "type": "address",
    "indexed": false,
    "internalType": "address"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "PausedSet",
  "inputs": [
   {
    "name": "paused",
    "type": "bool",
    "indexed": false,
    "internalType": "bool"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "ProtocolBpsSet",
  "inputs": [
   {
    "name": "bps",
    "type": "uint16",
    "indexed": false,
    "internalType": "uint16"
   }
  ],
  "anonymous": false
 },
 {
  "type": "event",
  "name": "QuoteSet",
  "inputs": [
   {
    "name": "quote",
    "type": "address",
    "indexed": true,
    "internalType": "address"
   },
   {
    "name": "enabled",
    "type": "bool",
    "indexed": false,
    "internalType": "bool"
   },
   {
    "name": "decimals",
    "type": "uint8",
    "indexed": false,
    "internalType": "uint8"
   },
   {
    "name": "startTp",
    "type": "int24",
    "indexed": false,
    "internalType": "int24"
   },
   {
    "name": "bands",
    "type": "tuple[]",
    "indexed": false,
    "internalType": "struct Band[]",
    "components": [
     {
      "name": "lo",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "hi",
      "type": "int24",
      "internalType": "int24"
     },
     {
      "name": "bps",
      "type": "uint16",
      "internalType": "uint16"
     }
    ]
   }
  ],
  "anonymous": false
 },
 {
  "type": "error",
  "name": "ApproveFailed",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "type": "error",
  "name": "BadTerms",
  "inputs": [
   {
    "name": "why",
    "type": "string",
    "internalType": "string"
   }
  ]
 },
 {
  "type": "error",
  "name": "IsPaused",
  "inputs": []
 },
 {
  "type": "error",
  "name": "NotOwner",
  "inputs": []
 },
 {
  "type": "error",
  "name": "NotPoolManager",
  "inputs": []
 },
 {
  "type": "error",
  "name": "Seed",
  "inputs": []
 },
 {
  "type": "error",
  "name": "TransferFailed",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   }
  ]
 },
 {
  "type": "error",
  "name": "TransferFromFailed",
  "inputs": [
   {
    "name": "token",
    "type": "address",
    "internalType": "address"
   }
  ]
 }
]
