[
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "_functionSelector",
        "type": "bytes4"
      }
    ],
    "name": "facetAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "facetAddress_",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "facetAddresses",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "facetAddresses_",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_facet",
        "type": "address"
      }
    ],
    "name": "facetFunctionSelectors",
    "outputs": [
      {
        "internalType": "bytes4[]",
        "name": "_facetFunctionSelectors",
        "type": "bytes4[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "facets",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "facetAddress",
            "type": "address"
          },
          {
            "internalType": "bytes4[]",
            "name": "functionSelectors",
            "type": "bytes4[]"
          }
        ],
        "internalType": "struct IDiamondLoupe.Facet[]",
        "name": "facets_",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "_interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "reason",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "BondingCurveAutoFinalizeFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "BondingCurveFinalized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "BondingCurvePoolCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "BondingCurvePoolUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "BondingCurveSoldOut",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isBuy",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "quoteAmount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "baseAmount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "reserveBase",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "reserveQuote",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "BondingCurveTraded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "Cancelled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "claimed",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalPurchased",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "Claimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "Contributed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "EmergencyWithdrawContribution",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "enum PausableEntity",
        "name": "entity",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "EntityPaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "enum PausableEntity",
        "name": "entity",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "EntityUnpaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "ExcessiveRefunded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "Finalized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleCancelled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "claimed",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleClaimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleContributed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "configId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleEmergencyWithdraw",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleFinalized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "MicroSaleWithdraw",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "PoolCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "PoolUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "root",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "WhitelistRootUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "WithdrawContribution",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "cancel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "withdrawCancelledTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "cancelMicroSale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "claim",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "purchased",
        "type": "uint256"
      },
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      }
    ],
    "name": "claimAndRefundWithProof",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      }
    ],
    "name": "claimWithProof",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "claimableVestingTokens",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "startIndex",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endIndex",
        "type": "uint256"
      }
    ],
    "name": "distributeTokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "purchased",
        "type": "uint256"
      }
    ],
    "name": "excessiveCommitment",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "purchased",
        "type": "uint256"
      },
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      }
    ],
    "name": "refundExcessiveWithProof",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "claimMicroSale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "anchor",
        "type": "address"
      }
    ],
    "name": "getAnchorConfig",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "minLpAmount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "quoteTarget",
            "type": "uint256"
          }
        ],
        "internalType": "struct AnchorConfig",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      }
    ],
    "name": "getBondingCurveConfig",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "active",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "initialBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialQuote",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingBase",
            "type": "uint256"
          }
        ],
        "internalType": "struct BondingCurveConfig",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getStandardBaseCurve",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "initialBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingBase",
            "type": "uint256"
          }
        ],
        "internalType": "struct StandardBaseCurve",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint8",
        "name": "tokenKind",
        "type": "uint8"
      }
    ],
    "name": "computeTokenAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getAllowedCurrencies",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getAntiFarmerDexes",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCheeseTokenHelper",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      }
    ],
    "name": "getDex",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "v2PairInitCodeHash",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "v3Factory",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "v3PoolInitCodeHash",
        "type": "bytes32"
      },
      {
        "internalType": "uint24[]",
        "name": "v3FeeTiers",
        "type": "uint24[]"
      },
      {
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      },
      {
        "internalType": "address[]",
        "name": "extraQuoteTokens",
        "type": "address[]"
      },
      {
        "internalType": "address",
        "name": "v2Factory",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      }
    ],
    "name": "getDexSwapConfig",
    "outputs": [
      {
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      },
      {
        "internalType": "address",
        "name": "staticQuoter",
        "type": "address"
      },
      {
        "internalType": "uint32",
        "name": "quoterGasLimit",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getGiftRelayerSigner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getHopTokens",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getMasterConfig",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "feeTo",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "locker",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "affiliateProgram",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "buybackManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "verificationWallet",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "creationFee",
            "type": "uint256"
          },
          {
            "internalType": "uint128",
            "name": "nativeFeePercent",
            "type": "uint128"
          },
          {
            "internalType": "uint256",
            "name": "maxAffiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "fairLaunchMaxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalParticipants",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "cheeseTokenHelper",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "platformRole",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "giftRelayerSigner",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "microSaleCreationFee",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "swapRouter",
            "type": "address"
          },
          {
            "internalType": "uint16",
            "name": "platformCutPreBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "platformCutPostBps",
            "type": "uint16"
          }
        ],
        "internalType": "struct LaunchpadMasterConfig",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getOperators",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPlatformCutBps",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "preBps",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "postBps",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPlatformRole",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPreListingGuardedVenues",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getSupportedRouters",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getSwapDexes",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getSwapRouter",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "tokenKind",
        "type": "uint8"
      }
    ],
    "name": "getTokenBlueprint",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getV4Config",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "poolManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "quoter",
            "type": "address"
          },
          {
            "internalType": "uint32",
            "name": "quoterGasLimit",
            "type": "uint32"
          },
          {
            "internalType": "bool",
            "name": "enabled",
            "type": "bool"
          }
        ],
        "internalType": "struct V4Config",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenA",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "tokenB",
        "type": "address"
      }
    ],
    "name": "getV4Pool",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint24",
            "name": "fee",
            "type": "uint24"
          },
          {
            "internalType": "int24",
            "name": "tickSpacing",
            "type": "int24"
          },
          {
            "internalType": "address",
            "name": "hooks",
            "type": "address"
          },
          {
            "internalType": "bool",
            "name": "enabled",
            "type": "bool"
          }
        ],
        "internalType": "struct V4PoolParams",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "implementator",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "tokenKind",
        "type": "uint8"
      }
    ],
    "name": "tokenBlueprintCodeHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getAllowedQuoteTokens",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "configId",
        "type": "uint256"
      }
    ],
    "name": "getMicroSaleConfigQuoteToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "isQuoteTokenAllowed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "SafeERC20FailedOperation",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "allocation",
        "type": "uint256"
      },
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "address",
        "name": "referrer",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "contribute",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "allocation",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      },
      {
        "internalType": "address",
        "name": "referrer",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "contributeCustomCurrency",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "contributeFromProxy",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "contributeMicroSale",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "contributeMicroSaleQuote",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DeployFailed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "poolDetails",
        "type": "string"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "initialBuyQuote",
        "type": "uint256"
      }
    ],
    "name": "createBondingCurveNoTaxToken",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "poolDetails",
        "type": "string"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "initialBuyQuote",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      }
    ],
    "name": "createBondingCurveNoTaxTokenQuote",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getBondingCurvePool",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "quoteToken",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "initialBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialQuote",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveQuote",
            "type": "uint256"
          },
          {
            "internalType": "enum CurveState",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint8",
            "name": "tokenType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          }
        ],
        "internalType": "struct BondingCurvePool",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minDispatch",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenFacet.CreateTaxParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createBondingCurveTaxToken",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minDispatch",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenFacet.CreateTaxParams",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      }
    ],
    "name": "createBondingCurveTaxTokenQuote",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "InsufficientQuoteLiquidity",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "UnsupportedAnchor",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VenueDexNotEnabled",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VenueDexUnconfigured",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroRaise",
    "type": "error"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "antiFarmerDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenV2Facet.CreateTaxParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "quote",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "enum LibQuoteCurve.QuoteDexVersion",
            "name": "version",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "dexKey",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "pairingAsset",
            "type": "address"
          },
          {
            "internalType": "uint24",
            "name": "v3Fee",
            "type": "uint24"
          }
        ],
        "internalType": "struct LibQuoteCurve.CustomQuoteVenue",
        "name": "venue",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "vaultFactory",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "vaultData",
        "type": "bytes"
      }
    ],
    "name": "createBondingCurveTaxTokenV2CustomQuote",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "antiFarmerDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenV2Facet.CreateTaxParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "dexKey",
        "type": "address"
      }
    ],
    "name": "createBondingCurveTaxTokenV2",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "antiFarmerDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenV2Facet.CreateTaxParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "dexKey",
        "type": "address"
      }
    ],
    "name": "createBondingCurveTaxTokenV2Quote",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minDispatch",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenWithVaultFacet.CreateTaxVaultParams",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "vaultFactory",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "vaultData",
        "type": "bytes"
      }
    ],
    "name": "createBondingCurveTaxTokenWithVault",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "antiFarmerDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenWithVaultV2Facet.CreateTaxVaultParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "vaultFactory",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "vaultData",
        "type": "bytes"
      },
      {
        "internalType": "address",
        "name": "dexKey",
        "type": "address"
      }
    ],
    "name": "createBondingCurveTaxTokenWithVaultV2",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startTime",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "duration",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "WhitelistTierAdded",
    "type": "event"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "isManualListing",
            "type": "bool"
          }
        ],
        "internalType": "struct CreateFairLaunchFacet.CreateFairLaunchParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "calculateFairLaunchTotalTokens",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "isManualListing",
            "type": "bool"
          }
        ],
        "internalType": "struct CreateFairLaunchFacet.CreateFairLaunchParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createFairLaunch",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateMicroSaleNoTaxTokenFacet.CreateParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createMicroSaleNoTaxToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "taxBps",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "uint16",
                    "name": "feeReceiver",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "holders",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "burn",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "liquidity",
                    "type": "uint16"
                  }
                ],
                "internalType": "struct CheeseTaxToken2.TaxAllocation",
                "name": "allocation",
                "type": "tuple"
              },
              {
                "internalType": "address",
                "name": "feeReceiver",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "quoteToken",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "minDispatch",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "minHolderShare",
                "type": "uint256"
              }
            ],
            "internalType": "struct CheeseTaxToken2.TaxConfig",
            "name": "taxConfig",
            "type": "tuple"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateMicroSaleTaxToken2Facet.CreateParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createMicroSaleTaxToken2",
    "outputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "buyTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "sellTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "taxDuration",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "uint16",
                    "name": "feeReceiver",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "holders",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "burn",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "liquidity",
                    "type": "uint16"
                  }
                ],
                "internalType": "struct CheeseTaxToken.TaxAllocation",
                "name": "allocation",
                "type": "tuple"
              },
              {
                "internalType": "address",
                "name": "feeReceiver",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "quoteToken",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "minDispatch",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "minHolderShare",
                "type": "uint256"
              }
            ],
            "internalType": "struct CheeseTaxToken.TaxConfig",
            "name": "taxConfig",
            "type": "tuple"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateMicroSaleTaxTokenFacet.CreateParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createMicroSaleTaxToken",
    "outputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "buyTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "sellTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "taxDuration",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "antiFarmerDuration",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "uint16",
                    "name": "feeReceiver",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "holders",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "burn",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "liquidity",
                    "type": "uint16"
                  }
                ],
                "internalType": "struct CheeseTaxTokenV2.TaxAllocation",
                "name": "allocation",
                "type": "tuple"
              },
              {
                "internalType": "address",
                "name": "feeReceiver",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "quoteToken",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "minHolderShare",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "v3Factory",
                "type": "address"
              },
              {
                "internalType": "bytes32",
                "name": "v2PairInitCodeHash",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "v3PoolInitCodeHash",
                "type": "bytes32"
              },
              {
                "internalType": "uint24[]",
                "name": "v3FeeTiers",
                "type": "uint24[]"
              }
            ],
            "internalType": "struct CheeseTaxTokenV2.TaxConfig",
            "name": "taxConfig",
            "type": "tuple"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateMicroSaleTaxTokenV2Facet.CreateParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "dexKey",
        "type": "address"
      }
    ],
    "name": "createMicroSaleTaxTokenV2",
    "outputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "buyTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "sellTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "taxDuration",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "uint16",
                    "name": "feeReceiver",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "holders",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "burn",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "liquidity",
                    "type": "uint16"
                  }
                ],
                "internalType": "struct CheeseTaxToken.TaxAllocation",
                "name": "allocation",
                "type": "tuple"
              },
              {
                "internalType": "address",
                "name": "feeReceiver",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "quoteToken",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "minDispatch",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "minHolderShare",
                "type": "uint256"
              }
            ],
            "internalType": "struct CheeseTaxToken.TaxConfig",
            "name": "taxConfig",
            "type": "tuple"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateMicroSaleTaxTokenWithVaultFacet.CreateParams",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "vaultFactory",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "vaultData",
        "type": "bytes"
      }
    ],
    "name": "createMicroSaleTaxTokenWithVault",
    "outputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint256",
                "name": "buyTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "sellTaxBps",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "taxDuration",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "antiFarmerDuration",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "uint16",
                    "name": "feeReceiver",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "holders",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "burn",
                    "type": "uint16"
                  },
                  {
                    "internalType": "uint16",
                    "name": "liquidity",
                    "type": "uint16"
                  }
                ],
                "internalType": "struct CheeseTaxTokenV2.TaxAllocation",
                "name": "allocation",
                "type": "tuple"
              },
              {
                "internalType": "address",
                "name": "feeReceiver",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "quoteToken",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "minHolderShare",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "v3Factory",
                "type": "address"
              },
              {
                "internalType": "bytes32",
                "name": "v2PairInitCodeHash",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "v3PoolInitCodeHash",
                "type": "bytes32"
              },
              {
                "internalType": "uint24[]",
                "name": "v3FeeTiers",
                "type": "uint24[]"
              }
            ],
            "internalType": "struct CheeseTaxTokenV2.TaxConfig",
            "name": "taxConfig",
            "type": "tuple"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateMicroSaleTaxTokenWithVaultV2Facet.CreateParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "vaultFactory",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "vaultData",
        "type": "bytes"
      },
      {
        "internalType": "address",
        "name": "dexKey",
        "type": "address"
      }
    ],
    "name": "createMicroSaleTaxTokenWithVaultV2",
    "outputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateNoTaxCurvePoolFacet.CreateNoTaxParams",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "quote",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "enum LibQuoteCurve.QuoteDexVersion",
            "name": "version",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "dexKey",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "pairingAsset",
            "type": "address"
          },
          {
            "internalType": "uint24",
            "name": "v3Fee",
            "type": "uint24"
          }
        ],
        "internalType": "struct LibQuoteCurve.CustomQuoteVenue",
        "name": "venue",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "raiseQuote",
        "type": "uint256"
      }
    ],
    "name": "createNoTaxCurvePool",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "isManualListing",
            "type": "bool"
          }
        ],
        "internalType": "struct CreatePresaleFacet.CreatePresaleParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "calculatePresaleTotalTokens",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "isManualListing",
            "type": "bool"
          }
        ],
        "internalType": "struct CreatePresaleFacet.CreatePresaleParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createPresale",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCapTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCapTokensPerUser",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          }
        ],
        "internalType": "struct CreateSubscriptionFacet.CreateSubscriptionParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "calculateSubscriptionTotalTokens",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "total",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCapTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCapTokensPerUser",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          }
        ],
        "internalType": "struct CreateSubscriptionFacet.CreateSubscriptionParams",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "createSubscription",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "symbol",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "salt",
            "type": "bytes32"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "antiFarmerDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint16",
            "name": "feeReceiverBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "holdersBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "burnBps",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "liquidityBps",
            "type": "uint16"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialBuyQuote",
            "type": "uint256"
          }
        ],
        "internalType": "struct CreateBondingCurveTaxTokenV2Facet.CreateTaxParamsV2",
        "name": "params",
        "type": "tuple"
      },
      {
        "internalType": "address",
        "name": "quote",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "enum LibQuoteCurve.QuoteDexVersion",
            "name": "version",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "dexKey",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "pairingAsset",
            "type": "address"
          },
          {
            "internalType": "uint24",
            "name": "v3Fee",
            "type": "uint24"
          }
        ],
        "internalType": "struct LibQuoteCurve.CustomQuoteVenue",
        "name": "venue",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "raiseQuote",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "vaultFactory",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "vaultData",
        "type": "bytes"
      }
    ],
    "name": "createTaxCurvePool",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "FailedCall",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isBuy",
        "type": "bool"
      }
    ],
    "name": "effectiveTaxBps",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenIn",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "via",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "dexMask",
        "type": "uint8"
      }
    ],
    "name": "quoteSwap",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "netOut",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "grossOut",
        "type": "uint256"
      },
      {
        "internalType": "uint16",
        "name": "inTaxBps",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "outTaxBps",
        "type": "uint16"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "toVia",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop",
        "name": "viaLeg",
        "type": "tuple"
      },
      {
        "internalType": "uint256[]",
        "name": "amountsOut",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "via",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "nativeIn",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "dexMask",
        "type": "uint8"
      }
    ],
    "name": "quoteSwapFromNative",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "netOut",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "grossOut",
        "type": "uint256"
      },
      {
        "internalType": "uint16",
        "name": "buyTaxBps",
        "type": "uint16"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "toVia",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop",
        "name": "viaLeg",
        "type": "tuple"
      },
      {
        "internalType": "uint256[]",
        "name": "amountsOut",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenIn",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "via",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "dexMask",
        "type": "uint8"
      }
    ],
    "name": "quoteSwapToNative",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "nativeOut",
        "type": "uint256"
      },
      {
        "internalType": "uint16",
        "name": "sellTaxBps",
        "type": "uint16"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop",
        "name": "viaLeg",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "fromVia",
        "type": "tuple[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amountsOut",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenIn",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "toVia",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop",
        "name": "viaLeg",
        "type": "tuple"
      }
    ],
    "name": "swap",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "minTokenOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "toVia",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop",
        "name": "viaLeg",
        "type": "tuple"
      }
    ],
    "name": "swapFromNative",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenIn",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minNativeOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop",
        "name": "viaLeg",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "fromVia",
        "type": "tuple[]"
      }
    ],
    "name": "swapToNative",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "emergencyWithdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "emergencyWithdrawMicroSale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pool",
        "type": "address"
      }
    ],
    "name": "isPoolGenerated",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "SelfOnly",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "finalizeBondingCurve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "finalizeBondingCurveSelf",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "flushCurveTax",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "finalizeFairLaunch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "finalizeMicroSale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "finalizePresale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "finalizeSubscription",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "quoteIn",
        "type": "uint256"
      }
    ],
    "name": "quoteBuyBondingCurve",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "baseIn",
        "type": "uint256"
      }
    ],
    "name": "quoteSellBondingCurve",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "minBaseOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "paths",
        "type": "tuple[]"
      }
    ],
    "name": "buyBondingCurveWithNative",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int256",
        "name": "amount0Delta",
        "type": "int256"
      },
      {
        "internalType": "int256",
        "name": "amount1Delta",
        "type": "int256"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "pancakeV3SwapCallback",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "nativeIn",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "dexMask",
        "type": "uint8"
      }
    ],
    "name": "quoteBuyWithNative",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "baseOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "paths",
        "type": "tuple[]"
      },
      {
        "internalType": "uint256",
        "name": "quoteIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "amountsOut",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "baseIn",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "dexMask",
        "type": "uint8"
      }
    ],
    "name": "quoteSellToNative",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "nativeOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "paths",
        "type": "tuple[]"
      },
      {
        "internalType": "uint256",
        "name": "quoteOut",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "amountsOut",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "baseIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minNativeOut",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "enum DexType",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "tokenOut",
            "type": "address"
          }
        ],
        "internalType": "struct SwapHop[]",
        "name": "paths",
        "type": "tuple[]"
      }
    ],
    "name": "sellBondingCurveToNative",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "int256",
        "name": "amount0Delta",
        "type": "int256"
      },
      {
        "internalType": "int256",
        "name": "amount1Delta",
        "type": "int256"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "uniswapV3SwapCallback",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "unlockCallback",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "enum PausableEntity",
        "name": "entity",
        "type": "uint8"
      }
    ],
    "name": "isEntityPaused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "isPaused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "poolIndex",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "AllocationApproved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "AllocationRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "poolIndex",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "allocationRoot",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalVolumePurchased",
        "type": "uint256"
      }
    ],
    "name": "AllocationSubmitted",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getSubscriptionCalculationStage",
    "outputs": [
      {
        "internalType": "enum SubscriptionCalculationStage",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "minHolderShare",
        "type": "uint256"
      }
    ],
    "name": "deployDividendTracker",
    "outputs": [
      {
        "internalType": "address",
        "name": "tracker",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "helper",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "weth",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "dividendTracker",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "feeReceiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "feeReceiverBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "holdersBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "burnBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "liquidityBps",
        "type": "uint256"
      }
    ],
    "name": "deployTaxProcessor",
    "outputs": [
      {
        "internalType": "address",
        "name": "processor",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "minHolderShare",
        "type": "uint256"
      }
    ],
    "name": "deployDividendTrackerV2",
    "outputs": [
      {
        "internalType": "address",
        "name": "tracker",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "swapRouter",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "quoteToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "weth",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "dividendTracker",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "feeReceiver",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "feeReceiverBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "holdersBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "burnBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "liquidityBps",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "liqExpectedOutputAmount",
        "type": "uint256"
      }
    ],
    "name": "deployTaxProcessorV2",
    "outputs": [
      {
        "internalType": "address",
        "name": "processor",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "router",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "helper",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "taxBps",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "uint16",
                "name": "feeReceiver",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "holders",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "burn",
                "type": "uint16"
              },
              {
                "internalType": "uint16",
                "name": "liquidity",
                "type": "uint16"
              }
            ],
            "internalType": "struct CheeseTaxToken2.TaxAllocation",
            "name": "allocation",
            "type": "tuple"
          },
          {
            "internalType": "address",
            "name": "feeReceiver",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "quoteToken",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "minDispatch",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minHolderShare",
            "type": "uint256"
          }
        ],
        "internalType": "struct CheeseTaxToken2.TaxConfig",
        "name": "taxConfig",
        "type": "tuple"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      }
    ],
    "name": "deployTaxToken2",
    "outputs": [
      {
        "internalType": "contract CheeseTaxToken2",
        "name": "token",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCheeseTaxToken2CreationCode",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "AutoFinalizeAborted",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minTokensOut",
        "type": "uint256"
      }
    ],
    "name": "buyBondingCurve",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minTokensOut",
        "type": "uint256"
      }
    ],
    "name": "buyBondingCurveAndGraduate",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minTokensOut",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "buyer",
        "type": "address"
      }
    ],
    "name": "buyBondingCurveFor",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "quoteAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minTokensOut",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      }
    ],
    "name": "buyBondingCurveFromHeldQuote",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "baseIn",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minQuoteOut",
        "type": "uint256"
      }
    ],
    "name": "sellBondingCurve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "baseIn",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "seller",
        "type": "address"
      }
    ],
    "name": "sellBondingCurveToHeldQuote",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "net",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "poolDetails",
        "type": "string"
      }
    ],
    "name": "updateBondingCurvePoolDetails",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "maxContribution",
        "type": "uint256"
      }
    ],
    "name": "setMicroSaleMaxContribution",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "poolDetails",
        "type": "string"
      }
    ],
    "name": "updateMicroSaleDetails",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "startTime",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "duration",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "WhitelistTierUpdated",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "affiliateBps",
        "type": "uint256"
      }
    ],
    "name": "setAffiliateBps",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "claimTime",
        "type": "uint256"
      }
    ],
    "name": "setClaimTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "endTime",
        "type": "uint256"
      }
    ],
    "name": "setEndTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "maxContribution",
        "type": "uint256"
      }
    ],
    "name": "setMaxContribution",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "publicSaleStartTime",
        "type": "uint256"
      }
    ],
    "name": "setPublicSaleStartTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "publicSaleStartTime",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "duration",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "description",
            "type": "string"
          }
        ],
        "internalType": "struct WhitelistTierParams[]",
        "name": "tierInfos",
        "type": "tuple[]"
      }
    ],
    "name": "setPublicSaleStartTimeAndWhitelistTiers",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "requireContributorValidation",
        "type": "bool"
      }
    ],
    "name": "setRequireContributorValidation",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "startTime",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endTime",
        "type": "uint256"
      }
    ],
    "name": "setTime",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "root",
        "type": "bytes32"
      }
    ],
    "name": "setWhitelistRoot",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "duration",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "description",
            "type": "string"
          }
        ],
        "internalType": "struct WhitelistTierParams[]",
        "name": "tierInfos",
        "type": "tuple[]"
      }
    ],
    "name": "setWhitelistTiers",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "poolDetails",
        "type": "string"
      }
    ],
    "name": "updatePoolDetails",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "bondingCurveGraduationQuote",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "bondingCurveProgressBps",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "bondingCurveTaxAccrued",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getBondingCurvePoolByFundManager",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "quoteToken",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "initialBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialQuote",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveQuote",
            "type": "uint256"
          },
          {
            "internalType": "enum CurveState",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint8",
            "name": "tokenType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          }
        ],
        "internalType": "struct BondingCurvePool",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "getBondingCurvePoolByToken",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "quoteToken",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "initialBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "initialQuote",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveBase",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveQuote",
            "type": "uint256"
          },
          {
            "internalType": "enum CurveState",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint8",
            "name": "tokenType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          }
        ],
        "internalType": "struct BondingCurvePool",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getBondingCurvePoolsCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "isBondingCurveSoldOut",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "getContributionInfo",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "contribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "purchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimed",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "excessiveRefunded",
            "type": "uint256"
          }
        ],
        "internalType": "struct ContributionInfo",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "startIndex",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endIndex",
        "type": "uint256"
      }
    ],
    "name": "getContributionInfosByFundManager",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "user",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "contribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "purchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimed",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "excessiveRefunded",
            "type": "uint256"
          }
        ],
        "internalType": "struct ContributionInfoResponse[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getContributorCountByFundManager",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getContributorCountByPoolIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getPoolByFundManager",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum PoolTypeIndex",
            "name": "poolType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "whitelistTierCount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCapTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCapTokensPerUser",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buybackPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalCommitted",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "whitelistRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "allocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "noAllocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "requireContributorValidation",
            "type": "bool"
          }
        ],
        "internalType": "struct Pool",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getPoolByIndex",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum PoolTypeIndex",
            "name": "poolType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "whitelistTierCount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCapTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCapTokensPerUser",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buybackPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalCommitted",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "whitelistRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "allocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "noAllocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "requireContributorValidation",
            "type": "bool"
          }
        ],
        "internalType": "struct Pool",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPoolCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "fundManagers",
        "type": "address[]"
      }
    ],
    "name": "getPoolsByFundManagers",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum PoolTypeIndex",
            "name": "poolType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "whitelistTierCount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCapTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCapTokensPerUser",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buybackPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalCommitted",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "whitelistRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "allocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "noAllocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "requireContributorValidation",
            "type": "bool"
          }
        ],
        "internalType": "struct Pool[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "indexes",
        "type": "uint256[]"
      }
    ],
    "name": "getPoolsByIndexes",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum PoolTypeIndex",
            "name": "poolType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "publicSaleStartTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "whitelistTierCount",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "minContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "softCapTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCapTokensPerUser",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buybackPercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "affiliateBps",
            "type": "uint256"
          },
          {
            "internalType": "enum RefundType",
            "name": "refundType",
            "type": "uint8"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalCommitted",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "bytes32",
            "name": "whitelistRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "allocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "noAllocationRoot",
            "type": "bytes32"
          },
          {
            "internalType": "uint256",
            "name": "tgePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cyclePercent",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "cycle",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "requireContributorValidation",
            "type": "bool"
          }
        ],
        "internalType": "struct Pool[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getWhitelistTiers",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "tier",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "duration",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "description",
            "type": "string"
          }
        ],
        "internalType": "struct WhitelistTier[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      }
    ],
    "name": "getWhitelistedUserCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tier",
        "type": "uint256"
      }
    ],
    "name": "getWhitelistedUsers",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getActiveMicroSaleConfigIds",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getActiveMicroSaleConfigs",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "presaleTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lpTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "duration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "active",
            "type": "bool"
          }
        ],
        "internalType": "struct MicroSaleConfig[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getMicroSale",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum MicroSaleTypeIndex",
            "name": "microSaleType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "filledAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          }
        ],
        "internalType": "struct MicroSale",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getMicroSaleByFundManager",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum MicroSaleTypeIndex",
            "name": "microSaleType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "filledAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          }
        ],
        "internalType": "struct MicroSale",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "getMicroSaleByToken",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum MicroSaleTypeIndex",
            "name": "microSaleType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "filledAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          }
        ],
        "internalType": "struct MicroSale",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "vault",
        "type": "address"
      }
    ],
    "name": "getMicroSaleByVault",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "index",
            "type": "uint256"
          },
          {
            "internalType": "enum MicroSaleTypeIndex",
            "name": "microSaleType",
            "type": "uint8"
          },
          {
            "internalType": "address",
            "name": "owner",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "currency",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "fundManager",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "router",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "startTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "endTime",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalSellingTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listingRate",
            "type": "uint256"
          },
          {
            "internalType": "enum State",
            "name": "state",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "filledAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "listedAt",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalRaised",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "totalVolumePurchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "string",
            "name": "poolDetails",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "kycDetails",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "maxContribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lockDuration",
            "type": "uint256"
          },
          {
            "internalType": "int256",
            "name": "lockId",
            "type": "int256"
          },
          {
            "internalType": "address",
            "name": "vault",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "vaultFactory",
            "type": "address"
          }
        ],
        "internalType": "struct MicroSale",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "configId",
        "type": "uint256"
      }
    ],
    "name": "getMicroSaleConfig",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "configId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "presaleTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "lpTokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "hardCap",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "duration",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "buyTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "sellTaxBps",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "taxDuration",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "active",
            "type": "bool"
          }
        ],
        "internalType": "struct MicroSaleConfig",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getMicroSaleConfigsCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "getMicroSaleContribution",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "contribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "purchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimed",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "excessiveRefunded",
            "type": "uint256"
          }
        ],
        "internalType": "struct ContributionInfo",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "startIndex",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endIndex",
        "type": "uint256"
      }
    ],
    "name": "getMicroSaleContributionInfos",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "user",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "contribution",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "purchased",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "claimed",
            "type": "uint256"
          }
        ],
        "internalType": "struct MicroSaleContributionInfoResponse[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "getMicroSaleContributorCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getMicroSalesCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "startIndex",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "endIndex",
        "type": "uint256"
      }
    ],
    "name": "distributeRefund",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      },
      {
        "internalType": "bytes32[]",
        "name": "proof",
        "type": "bytes32[]"
      }
    ],
    "name": "withdrawWithProof",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "fundManager",
        "type": "address"
      }
    ],
    "name": "withdrawMicroSale",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
