[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "stockBooster_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "treasury_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "ethUsdFeed_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "nfpm_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "weth_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "boxLocker_",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "launchFeeWei_",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AbortedLaunch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AlreadyArmed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AlreadyBonded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AlreadyGraduated",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BadAnswer",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BadEconomics",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BadLegs",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BadParam",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BuysPresent",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FeeOnTransferToken",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FeePushFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FloorNotSet",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientLaunchFee",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotArmed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotClosed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotCreator",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotEoa",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotGraduatable",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NothingOwed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PoolMispriced",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ReentrancyGuardReentrantCall",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "RescueTooEarly",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "SafeERC20FailedOperation",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SaltNotYours",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SellExceedsCurve",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SellsDisabled",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SlippageExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "StalePrice",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenInUse",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TokenIsQuoteAsset",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UnknownLaunch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VanitySuffix",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "WindowClosed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroTrade",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "minStartMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "maxStartMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "minGradMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "maxGradMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint16",
            "name": "maxStartTaxBps",
            "type": "uint16"
          },
          {
            "internalType": "uint32",
            "name": "minWindowSecs",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "maxWindowSecs",
            "type": "uint32"
          }
        ],
        "indexed": false,
        "internalType": "struct StonkSafeLaunchpad.Bounds",
        "name": "bounds",
        "type": "tuple"
      }
    ],
    "name": "BoundsSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "card",
        "type": "address"
      }
    ],
    "name": "ClockInCardSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "CreatorEthAccrued",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "CreatorEthFlushed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "raisedEth",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "finalPriceWei",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "mcapUsd8",
        "type": "uint256"
      }
    ],
    "name": "CurveClosed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "creatorBps",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "protocolBps",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "lpBps",
        "type": "uint16"
      }
    ],
    "name": "FeeSplitSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "asset",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "perEth",
        "type": "uint256"
      }
    ],
    "name": "FixedFloorPinned",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokensSwept",
        "type": "uint256"
      }
    ],
    "name": "LaunchAborted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "supply",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "vEth0",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "ethUsd8",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "deadline",
        "type": "uint64"
      }
    ],
    "name": "LaunchArmed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "raisedEth",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "burnedTokens",
        "type": "uint256"
      }
    ],
    "name": "LaunchBonded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "creator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "externalToken",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "address[]",
        "name": "legs",
        "type": "address[]"
      }
    ],
    "name": "LaunchCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feeWei",
        "type": "uint256"
      }
    ],
    "name": "LaunchFeeSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "asset",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "pool",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "lockTokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "legEth",
        "type": "uint256"
      }
    ],
    "name": "LegBonded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "bondedWei",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "excessWei",
        "type": "uint256"
      }
    ],
    "name": "LpFeeBonded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "asset",
        "type": "address"
      }
    ],
    "name": "QuoteLegDelisted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "asset",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "router",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "feed",
        "type": "address"
      }
    ],
    "name": "QuoteLegListed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "buyer",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "ethIn",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "taxPaid",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "taxBps",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokensOut",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "mcapUsd8",
        "type": "uint256"
      }
    ],
    "name": "SafeBuy",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "seller",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokensIn",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "taxPaid",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "taxBps",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "ethOut",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "mcapUsd8",
        "type": "uint256"
      }
    ],
    "name": "SafeSell",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "int24",
        "name": "spacing",
        "type": "int24"
      }
    ],
    "name": "TickSpacingSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint160",
        "name": "mask",
        "type": "uint160"
      },
      {
        "indexed": false,
        "internalType": "uint160",
        "name": "value",
        "type": "uint160"
      }
    ],
    "name": "VanitySuffixSet",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "RESCUE_DELAY",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "abort",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "supplyWei",
        "type": "uint256"
      }
    ],
    "name": "arm",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "bond",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "bondEthOnly",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "boughtOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bounds",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "minStartMcapUsd8",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "maxStartMcapUsd8",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "minGradMcapUsd8",
        "type": "uint64"
      },
      {
        "internalType": "uint64",
        "name": "maxGradMcapUsd8",
        "type": "uint64"
      },
      {
        "internalType": "uint16",
        "name": "maxStartTaxBps",
        "type": "uint16"
      },
      {
        "internalType": "uint32",
        "name": "minWindowSecs",
        "type": "uint32"
      },
      {
        "internalType": "uint32",
        "name": "maxWindowSecs",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "boxLocker",
    "outputs": [
      {
        "internalType": "contract ISafeLaunchClLocker",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minTokensOut",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "ref",
        "type": "bytes32"
      }
    ],
    "name": "buy",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokensOut",
        "type": "uint256"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clFactory",
    "outputs": [
      {
        "internalType": "contract IUpClFactoryMinimal",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clTickSpacing",
    "outputs": [
      {
        "internalType": "int24",
        "name": "",
        "type": "int24"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clockInCard",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "closedAt",
    "outputs": [
      {
        "internalType": "uint64",
        "name": "",
        "type": "uint64"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "supply",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "vanitySalt",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "startMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "gradMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint16",
            "name": "startTaxBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "taxDecayPerMinuteBps",
            "type": "uint16"
          },
          {
            "internalType": "bool",
            "name": "sellsEnabled",
            "type": "bool"
          },
          {
            "internalType": "address[]",
            "name": "legs",
            "type": "address[]"
          }
        ],
        "internalType": "struct StonkSafeLaunchpad.CreateParams",
        "name": "p",
        "type": "tuple"
      }
    ],
    "name": "createLaunch",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "creatorEthOwed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "creatorFeeBps",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "currentTaxBps",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "asset",
        "type": "address"
      }
    ],
    "name": "delistQuoteLeg",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ethUsdFeed",
    "outputs": [
      {
        "internalType": "contract IAggregatorV3",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ethUsdView",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "usd8",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "fresh",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "fixedFloorPerEth",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "flushCreatorEth",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "getLaunch",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "creator",
            "type": "address"
          },
          {
            "internalType": "uint64",
            "name": "startMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "gradMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint16",
            "name": "startTaxBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "decayPerMinuteBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "creatorFeeBpsSnap",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "protocolFeeBpsSnap",
            "type": "uint16"
          },
          {
            "internalType": "uint32",
            "name": "windowSecs",
            "type": "uint32"
          },
          {
            "internalType": "uint64",
            "name": "startTime",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "deadline",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "externalToken",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "sellsEnabled",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "armed",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "graduated",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "bonded",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "aborted",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "loadedSupply",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "vEth",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "vToken",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "realEth",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buyCount",
            "type": "uint256"
          }
        ],
        "internalType": "struct StonkSafeLaunchpad.Launch",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "graduate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "launchCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "launchFeeWei",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "launchIdOfToken",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "legsOf",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "asset",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "feed",
        "type": "address"
      }
    ],
    "name": "listQuoteLeg",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "lpEthOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "lpFeeBps",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "lpFeeBpsSnapOf",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "mcapUsd8",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "nfpm",
    "outputs": [
      {
        "internalType": "contract IUpNfpmMinimal",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "onERC721Received",
    "outputs": [
      {
        "internalType": "bytes4",
        "name": "",
        "type": "bytes4"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "poolsOf",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "pools",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "lockIds",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "priceWei",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "protocolFeeBps",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "ethIn",
        "type": "uint256"
      }
    ],
    "name": "quoteBuy",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokensOut",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "taxBps",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "quoteLegs",
    "outputs": [
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "feed",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "listed",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "seller",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokensIn",
        "type": "uint256"
      }
    ],
    "name": "quoteSell",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "ethOut",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "taxBps",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rescueExcessEth",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "asset",
        "type": "address"
      }
    ],
    "name": "rescueQuoteToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "tokensIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minEthOut",
        "type": "uint256"
      },
      {
        "internalType": "bytes32",
        "name": "ref",
        "type": "bytes32"
      }
    ],
    "name": "sell",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "ethOut",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint64",
            "name": "minStartMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "maxStartMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "minGradMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "maxGradMcapUsd8",
            "type": "uint64"
          },
          {
            "internalType": "uint16",
            "name": "maxStartTaxBps",
            "type": "uint16"
          },
          {
            "internalType": "uint32",
            "name": "minWindowSecs",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "maxWindowSecs",
            "type": "uint32"
          }
        ],
        "internalType": "struct StonkSafeLaunchpad.Bounds",
        "name": "b",
        "type": "tuple"
      }
    ],
    "name": "setBounds",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "card",
        "type": "address"
      }
    ],
    "name": "setClockInCard",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "creatorBps_",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "protocolBps_",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "lpBps_",
        "type": "uint16"
      }
    ],
    "name": "setFeeSplit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "asset",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "perEth",
        "type": "uint256"
      }
    ],
    "name": "setFixedFloor",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "feeWei",
        "type": "uint256"
      }
    ],
    "name": "setLaunchFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int24",
        "name": "spacing",
        "type": "int24"
      }
    ],
    "name": "setTickSpacing",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint160",
        "name": "mask",
        "type": "uint160"
      },
      {
        "internalType": "uint160",
        "name": "value",
        "type": "uint160"
      }
    ],
    "name": "setVanitySuffix",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "stockBooster",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "supply_",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "tokenInitCodeHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalEscrowed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalOwed",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "treasury",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "vanityMask",
    "outputs": [
      {
        "internalType": "uint160",
        "name": "",
        "type": "uint160"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "vanityValue",
    "outputs": [
      {
        "internalType": "uint160",
        "name": "",
        "type": "uint160"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "viewLaunch",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "creator",
                "type": "address"
              },
              {
                "internalType": "uint64",
                "name": "startMcapUsd8",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "gradMcapUsd8",
                "type": "uint64"
              },
              {
                "internalType": "uint16",
                "name": "startTaxBps",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "decayPerMinuteBps",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "creatorFeeBpsSnap",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "protocolFeeBpsSnap",
                "type": "uint16"
              },
              {
                "internalType": "uint32",
                "name": "windowSecs",
                "type": "uint32"
              },
              {
                "internalType": "uint64",
                "name": "startTime",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "deadline",
                "type": "uint64"
              },
              {
                "internalType": "bool",
                "name": "externalToken",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "sellsEnabled",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "armed",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "graduated",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "bonded",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "aborted",
                "type": "bool"
              },
              {
                "internalType": "uint256",
                "name": "loadedSupply",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "vEth",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "vToken",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "realEth",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "buyCount",
                "type": "uint256"
              }
            ],
            "internalType": "struct StonkSafeLaunchpad.Launch",
            "name": "core",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "taxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "mcapUsd8Now",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tokensSold",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "oracleFresh",
            "type": "bool"
          },
          {
            "internalType": "address[]",
            "name": "legs",
            "type": "address[]"
          },
          {
            "internalType": "address[]",
            "name": "pools",
            "type": "address[]"
          },
          {
            "internalType": "uint256[]",
            "name": "lockIds",
            "type": "uint256[]"
          },
          {
            "internalType": "uint256",
            "name": "lpEth",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "lpFeeBpsSnap",
            "type": "uint16"
          },
          {
            "internalType": "uint64",
            "name": "closedAtTs",
            "type": "uint64"
          }
        ],
        "internalType": "struct StonkSafeLaunchpad.LaunchView",
        "name": "v",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "startId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "count",
        "type": "uint256"
      }
    ],
    "name": "viewLaunches",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "id",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "creator",
                "type": "address"
              },
              {
                "internalType": "uint64",
                "name": "startMcapUsd8",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "gradMcapUsd8",
                "type": "uint64"
              },
              {
                "internalType": "uint16",
                "name": "startTaxBps",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "decayPerMinuteBps",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "creatorFeeBpsSnap",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "protocolFeeBpsSnap",
                "type": "uint16"
              },
              {
                "internalType": "uint32",
                "name": "windowSecs",
                "type": "uint32"
              },
              {
                "internalType": "uint64",
                "name": "startTime",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "deadline",
                "type": "uint64"
              },
              {
                "internalType": "bool",
                "name": "externalToken",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "sellsEnabled",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "armed",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "graduated",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "bonded",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "aborted",
                "type": "bool"
              },
              {
                "internalType": "uint256",
                "name": "loadedSupply",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "vEth",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "vToken",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "realEth",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "buyCount",
                "type": "uint256"
              }
            ],
            "internalType": "struct StonkSafeLaunchpad.Launch",
            "name": "core",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "taxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "mcapUsd8Now",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tokensSold",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "oracleFresh",
            "type": "bool"
          },
          {
            "internalType": "address[]",
            "name": "legs",
            "type": "address[]"
          },
          {
            "internalType": "address[]",
            "name": "pools",
            "type": "address[]"
          },
          {
            "internalType": "uint256[]",
            "name": "lockIds",
            "type": "uint256[]"
          },
          {
            "internalType": "uint256",
            "name": "lpEth",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "lpFeeBpsSnap",
            "type": "uint16"
          },
          {
            "internalType": "uint64",
            "name": "closedAtTs",
            "type": "uint64"
          }
        ],
        "internalType": "struct StonkSafeLaunchpad.LaunchView[]",
        "name": "out",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "weth",
    "outputs": [
      {
        "internalType": "contract IWETH9Minimal",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]
