[
  {
    "type": "constructor",
    "inputs": [
      {
        "name": "controller_",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "quoteToken_",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "bootstrap",
    "inputs": [
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortBootstrapConfig",
        "components": [
          {
            "name": "tokenDeployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "tokenDeployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "engineDeployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "engineDeployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "engineImplementationCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "curve",
            "type": "tuple",
            "internalType": "struct BigShortCurveConfig",
            "components": [
              {
                "name": "curveTokenSupply",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "initialRealTokenReserves",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "initialVirtualTokenReserves",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "initialVirtualNativeReserves",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "migrationTokenReserves",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "idealMigrationQuoteReserve",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "idealMigrationMarketCap",
                "type": "uint256",
                "internalType": "uint256"
              },
              {
                "name": "protocolFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "registered",
                "type": "bool",
                "internalType": "bool"
              }
            ]
          },
          {
            "name": "venue",
            "type": "tuple",
            "internalType": "struct BigShortVenueConfig",
            "components": [
              {
                "name": "factory",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "router",
                "type": "address",
                "internalType": "address"
              },
              {
                "name": "factoryCodeHash",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "routerCodeHash",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "pairRuntimeCodeHash",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "pairInitCodeHash",
                "type": "bytes32",
                "internalType": "bytes32"
              },
              {
                "name": "swapFeeBps",
                "type": "uint16",
                "internalType": "uint16"
              },
              {
                "name": "registered",
                "type": "bool",
                "internalType": "bool"
              }
            ]
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "profile",
        "type": "tuple",
        "internalType": "struct BigShortLaunchProfile",
        "components": [
          {
            "name": "tokenVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "curveVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "engineVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "venueVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "controller",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "curveConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortCurveConfig",
        "components": [
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialRealTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualNativeReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "protocolFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "curveConfigHash",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "engineConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortEngineConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "implementation",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "implementationCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "configHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "lendingReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "engineParameters",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct BigShortEngineParameters",
        "components": [
          {
            "name": "shortRiskStartPriceDropBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortRiskEndPriceDropBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortRiskTargetMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "shortMarginStartBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortMarginEndBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortMarginTargetMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "shortSafeMarginBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortOpenFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "fundingCurveAPpmPerDay",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "fundingCurveBPpmPerDay",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "fundingStartUtilizationBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "fundingEndUtilizationBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "lendingReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "twapMinimumWindowSeconds",
            "type": "uint32",
            "internalType": "uint32"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "latestCurveVersion",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "latestEngineVersion",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "latestLaunchProfile",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "latestTokenVersion",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "latestVenueVersion",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "launchProfile",
    "inputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "profile",
        "type": "tuple",
        "internalType": "struct BigShortLaunchProfile",
        "components": [
          {
            "name": "tokenVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "curveVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "engineVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "venueVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "launchProfileHash",
    "inputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "pairFor",
    "inputs": [
      {
        "name": "venueVersion",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "token",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "predicted",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "quoteToken",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rawCurveConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct BigShortCurveConfig",
        "components": [
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialRealTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualNativeReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "protocolFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rawEngineConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct BigShortEngineConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "implementation",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "implementationCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "configHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "lendingReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rawLaunchProfile",
    "inputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct BigShortLaunchProfile",
        "components": [
          {
            "name": "tokenVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "curveVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "engineVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "venueVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rawTokenConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct BigShortTokenConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "rawVenueConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "tuple",
        "internalType": "struct BigShortVenueConfig",
        "components": [
          {
            "name": "factory",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "router",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "factoryCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "routerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairRuntimeCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairInitCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "registerCurveConfig",
    "inputs": [
      {
        "name": "proposed",
        "type": "tuple",
        "internalType": "struct BigShortCurveConfig",
        "components": [
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialRealTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualNativeReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "protocolFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortCurveConfig",
        "components": [
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialRealTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualNativeReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "protocolFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "registerEngineConfig",
    "inputs": [
      {
        "name": "engineDeployer",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "expectedDeployerCodeHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "expectedImplementationCodeHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortEngineConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "implementation",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "implementationCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "configHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "lendingReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "registerLaunchProfile",
    "inputs": [
      {
        "name": "tokenVersion",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "curveVersion",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "engineVersion",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "venueVersion",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "profileHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "profile",
        "type": "tuple",
        "internalType": "struct BigShortLaunchProfile",
        "components": [
          {
            "name": "tokenVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "curveVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "engineVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "venueVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      },
      {
        "name": "engineConfigHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "registerTokenConfig",
    "inputs": [
      {
        "name": "deployer",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "expectedCodeHash",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "outputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortTokenConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "registerVenueConfig",
    "inputs": [
      {
        "name": "proposed",
        "type": "tuple",
        "internalType": "struct BigShortVenueConfig",
        "components": [
          {
            "name": "factory",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "router",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "factoryCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "routerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairRuntimeCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairInitCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "internalType": "bytes32"
      },
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortVenueConfig",
        "components": [
          {
            "name": "factory",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "router",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "factoryCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "routerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairRuntimeCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairInitCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "tokenConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortTokenConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "validatePair",
    "inputs": [
      {
        "name": "venueVersion",
        "type": "uint32",
        "internalType": "uint32"
      },
      {
        "name": "token",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "pair",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "validatedLaunchProfile",
    "inputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "profile",
        "type": "tuple",
        "internalType": "struct BigShortLaunchProfile",
        "components": [
          {
            "name": "tokenVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "curveVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "engineVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "venueVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "venueConfig",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "config",
        "type": "tuple",
        "internalType": "struct BigShortVenueConfig",
        "components": [
          {
            "name": "factory",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "router",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "factoryCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "routerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairRuntimeCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairInitCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "venueConfigHash",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "internalType": "uint32"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bytes32",
        "internalType": "bytes32"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "event",
    "name": "CurveConfigSnapshotted",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "config",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct BigShortCurveConfig",
        "components": [
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialRealTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "initialVirtualNativeReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "protocolFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "EngineConfigSnapshotted",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "config",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct BigShortEngineConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "implementation",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "implementationCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "configHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "lendingReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      },
      {
        "name": "parameters",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct BigShortEngineParameters",
        "components": [
          {
            "name": "shortRiskStartPriceDropBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortRiskEndPriceDropBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortRiskTargetMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "shortMarginStartBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortMarginEndBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortMarginTargetMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "shortSafeMarginBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "shortOpenFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "fundingCurveAPpmPerDay",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "fundingCurveBPpmPerDay",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "fundingStartUtilizationBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "fundingEndUtilizationBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "curveTokenSupply",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "migrationTokenReserves",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationQuoteReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "idealMigrationMarketCap",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "lendingReserve",
            "type": "uint256",
            "internalType": "uint256"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "twapMinimumWindowSeconds",
            "type": "uint32",
            "internalType": "uint32"
          }
        ]
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "LaunchProfileSnapshotted",
    "inputs": [
      {
        "name": "profileId",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "profileHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "engineConfigHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "profile",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct BigShortLaunchProfile",
        "components": [
          {
            "name": "tokenVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "curveVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "engineVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "venueVersion",
            "type": "uint32",
            "internalType": "uint32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "RegistryEntryAppended",
    "inputs": [
      {
        "name": "kind",
        "type": "uint8",
        "indexed": true,
        "internalType": "uint8"
      },
      {
        "name": "id",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "TokenConfigSnapshotted",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "config",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct BigShortTokenConfig",
        "components": [
          {
            "name": "deployer",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "deployerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "anonymous": false
  },
  {
    "type": "event",
    "name": "VenueConfigSnapshotted",
    "inputs": [
      {
        "name": "version",
        "type": "uint32",
        "indexed": true,
        "internalType": "uint32"
      },
      {
        "name": "configHash",
        "type": "bytes32",
        "indexed": true,
        "internalType": "bytes32"
      },
      {
        "name": "config",
        "type": "tuple",
        "indexed": false,
        "internalType": "struct BigShortVenueConfig",
        "components": [
          {
            "name": "factory",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "router",
            "type": "address",
            "internalType": "address"
          },
          {
            "name": "factoryCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "routerCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairRuntimeCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "pairInitCodeHash",
            "type": "bytes32",
            "internalType": "bytes32"
          },
          {
            "name": "swapFeeBps",
            "type": "uint16",
            "internalType": "uint16"
          },
          {
            "name": "registered",
            "type": "bool",
            "internalType": "bool"
          }
        ]
      }
    ],
    "anonymous": false
  },
  {
    "type": "error",
    "name": "DuplicateConfiguration",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidAddress",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidCurveConfiguration",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidEngineConfiguration",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidLaunchProfile",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidTokenConfiguration",
    "inputs": []
  },
  {
    "type": "error",
    "name": "InvalidVenueConfiguration",
    "inputs": []
  },
  {
    "type": "error",
    "name": "NotController",
    "inputs": []
  }
]
