wildcard-sdk
Version:
Node.js SDK for interacting with the Wildcard Deployer contract
1 lines • 408 kB
Source Map (JSON)
{"version":3,"sources":["../../src/abis/v2/deployer-abi.ts","../../src/abis/v2/statemanager-abi.ts","../../src/abis/v2/lp-locker-abi.ts","../../src/abis/v3/deployer-abi.ts","../../src/abis/v3/lp-locker-abi.ts","../../src/abis/v3/statemanager-abi.ts","../../src/abis/index.ts","../../src/config.ts","../../src/clients/ethers/ether-deployer-sdk-read.ts","../../src/utils/helper.ts","../../src/utils/validators.ts","../../src/clients/ethers/ether-deployer-sdk-write.ts","../../src/clients/ethers/index.ts","../../src/clients/viem/viem-deployer-read.ts","../../src/clients/viem/viem-deployer-write.ts","../../src/clients/viem/index.ts","../../src/react/useDeployerSDK.ts","../../src/deployer-sdk.ts","../../src/react/TradingViewChart.tsx","../../src/react/Swap.tsx","../../src/react/Utils.ts","../../src/react/components/Avatar.tsx","../../src/react/store/swap-store.ts"],"sourcesContent":["export const DEPLOYER_ABI = [\n {\n inputs: [\n { internalType: \"address\", name: \"_stateView\", type: \"address\" },\n { internalType: \"address\", name: \"_lplocker\", type: \"address\" },\n { internalType: \"address\", name: \"_universalRouter\", type: \"address\" },\n { internalType: \"address\", name: \"_permit2\", type: \"address\" },\n { internalType: \"address\", name: \"_poolManager\", type: \"address\" },\n { internalType: \"address\", name: \"_quoter\", type: \"address\" },\n { internalType: \"address\", name: \"_owner\", type: \"address\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"BothTokensLaunched\", type: \"error\" },\n { inputs: [], name: \"ETHBalanceTooLowForSwap\", type: \"error\" },\n { inputs: [], name: \"ETHTransferFailed\", type: \"error\" },\n { inputs: [], name: \"FailedToPullTokens\", type: \"error\" },\n { inputs: [], name: \"FailedToTransferTokens\", type: \"error\" },\n { inputs: [], name: \"IncorrectETHAmount\", type: \"error\" },\n { inputs: [], name: \"InsufficientOutputAmount\", type: \"error\" },\n { inputs: [], name: \"InvalidBaseToken\", type: \"error\" },\n { inputs: [], name: \"InvalidCaller\", type: \"error\" },\n { inputs: [], name: \"InvalidCurveParameters\", type: \"error\" },\n { inputs: [], name: \"InvalidTokenDetails\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }],\n name: \"OwnableInvalidOwner\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"OwnableUnauthorizedAccount\",\n type: \"error\",\n },\n {\n inputs: [\n { internalType: \"uint256\", name: \"amountOut\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"effectiveAmountIn\", type: \"uint256\" },\n ],\n name: \"QuoteAmount\",\n type: \"error\",\n },\n { inputs: [], name: \"QuoteNotImplemented\", type: \"error\" },\n { inputs: [], name: \"Reentrancy\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"SafeERC20FailedOperation\",\n type: \"error\",\n },\n { inputs: [], name: \"TokenAlreadyLaunched\", type: \"error\" },\n { inputs: [], name: \"TokenNotLaunched\", type: \"error\" },\n { inputs: [], name: \"TokenStateNotSet\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"bool\",\n name: \"whitelisted\",\n type: \"bool\",\n },\n ],\n name: \"BaseTokenWhitelisted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferStarted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"MAX_FEE_RECEIVER_COUNT\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"MIN_VESTING_START_TIME\",\n outputs: [{ internalType: \"uint64\", name: \"\", type: \"uint64\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"address\", name: \"baseToken\", type: \"address\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"symbol\", type: \"string\" },\n { internalType: \"string\", name: \"image\", type: \"string\" },\n { internalType: \"string\", name: \"appIdentifier\", type: \"string\" },\n { internalType: \"uint256\", name: \"teamSupply\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"vestingStartTime\", type: \"uint64\" },\n { internalType: \"uint64\", name: \"vestingDuration\", type: \"uint64\" },\n { internalType: \"address\", name: \"vestingWallet\", type: \"address\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"liquidityPoolSupply\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveBuyFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSellFee\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"bondingCurveFeeSplits\",\n type: \"tuple[]\",\n },\n {\n components: [\n { internalType: \"uint256[]\", name: \"prices\", type: \"uint256[]\" },\n { internalType: \"uint256\", name: \"numSteps\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"stepSize\", type: \"uint256\" },\n ],\n internalType: \"struct PriceCurve\",\n name: \"bondingCurveParams\",\n type: \"tuple\",\n },\n { internalType: \"bool\", name: \"allowForcedGraduation\", type: \"bool\" },\n { internalType: \"bool\", name: \"allowAutoGraduation\", type: \"bool\" },\n {\n internalType: \"uint256\",\n name: \"graduationFeeBps\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"graduationFeeSplits\",\n type: \"tuple[]\",\n },\n { internalType: \"uint24\", name: \"poolFees\", type: \"uint24\" },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"poolFeeSplits\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeStartingTime\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeDuration\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxSurgeFeeBps\", type: \"uint256\" },\n ],\n internalType: \"struct StateManager.TokenDeploymentConfig\",\n name: \"tokenDeploymentConfig\",\n type: \"tuple\",\n },\n ],\n name: \"_validateTokenDeploymentConfig\",\n outputs: [],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"appIdentifiers\",\n outputs: [{ internalType: \"string\", name: \"\", type: \"string\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n ],\n name: \"buyQuote\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"buyToken\",\n outputs: [],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"claimFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getTokenPrice\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"bool\", name: \"allowPreGraduation\", type: \"bool\" },\n ],\n name: \"graduateToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"isBaseTokenWhitelisted\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"address\", name: \"baseToken\", type: \"address\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"symbol\", type: \"string\" },\n { internalType: \"string\", name: \"image\", type: \"string\" },\n { internalType: \"string\", name: \"appIdentifier\", type: \"string\" },\n { internalType: \"uint256\", name: \"teamSupply\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"vestingStartTime\", type: \"uint64\" },\n { internalType: \"uint64\", name: \"vestingDuration\", type: \"uint64\" },\n { internalType: \"address\", name: \"vestingWallet\", type: \"address\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"liquidityPoolSupply\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveBuyFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSellFee\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"bondingCurveFeeSplits\",\n type: \"tuple[]\",\n },\n {\n components: [\n { internalType: \"uint256[]\", name: \"prices\", type: \"uint256[]\" },\n { internalType: \"uint256\", name: \"numSteps\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"stepSize\", type: \"uint256\" },\n ],\n internalType: \"struct PriceCurve\",\n name: \"bondingCurveParams\",\n type: \"tuple\",\n },\n { internalType: \"bool\", name: \"allowForcedGraduation\", type: \"bool\" },\n { internalType: \"bool\", name: \"allowAutoGraduation\", type: \"bool\" },\n {\n internalType: \"uint256\",\n name: \"graduationFeeBps\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"graduationFeeSplits\",\n type: \"tuple[]\",\n },\n { internalType: \"uint24\", name: \"poolFees\", type: \"uint24\" },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"poolFeeSplits\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeStartingTime\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeDuration\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxSurgeFeeBps\", type: \"uint256\" },\n ],\n internalType: \"struct StateManager.TokenDeploymentConfig\",\n name: \"tokenDeploymentConfig\",\n type: \"tuple\",\n },\n { internalType: \"bytes32\", name: \"salt\", type: \"bytes32\" },\n ],\n name: \"launchToken\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"int24\", name: \"tickSpacing\", type: \"int24\" },\n { internalType: \"int24\", name: \"startingTick\", type: \"int24\" },\n { internalType: \"int24\", name: \"endingTick\", type: \"int24\" },\n { internalType: \"int24\", name: \"targetTick\", type: \"int24\" },\n { internalType: \"bool\", name: \"allowPreGraduation\", type: \"bool\" },\n ],\n name: \"launchV4Pool\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"lplocker\",\n outputs: [\n {\n internalType: \"contract ILpLockerWithOwnable\",\n name: \"\",\n type: \"address\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pendingOwner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"permit2\",\n outputs: [{ internalType: \"contract IPermit2\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"poolManager\",\n outputs: [\n { internalType: \"contract IPoolManager\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"owner\", type: \"address\" },\n { internalType: \"bytes32\", name: \"salt\", type: \"bytes32\" },\n ],\n name: \"predictTokenAddress\",\n outputs: [\n { internalType: \"address\", name: \"addr\", type: \"address\" },\n { internalType: \"bool\", name: \"exists\", type: \"bool\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"quoter\",\n outputs: [\n { internalType: \"contract IV4Quoter\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"relinquishStateManager\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n ],\n name: \"sellQuote\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"sellToken\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"string\", name: \"appIdentifier\", type: \"string\" },\n ],\n name: \"setAppIdentifier\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"bool\", name: \"whitelisted\", type: \"bool\" },\n ],\n name: \"setBaseTokenWhitelist\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_protocolFeeRecipient\",\n type: \"address\",\n },\n ],\n name: \"setProtocolFeeRecipient\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"stateManager\",\n outputs: [\n { internalType: \"contract StateManager\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"newOwner\", type: \"address\" }],\n name: \"transferOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"universalRouter\",\n outputs: [\n { internalType: \"contract IUniversalRouter\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"whitelistedBaseTokens\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"destination\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n ],\n name: \"withdrawFunds\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n { stateMutability: \"payable\", type: \"receive\" },\n] as const;\n","export const STATEMANAGER_ABI = [\n {\n inputs: [\n { internalType: \"address\", name: \"initialOwner\", type: \"address\" },\n { internalType: \"address\", name: \"permit2Address\", type: \"address\" },\n { internalType: \"address\", name: \"_positionManager\", type: \"address\" },\n { internalType: \"address\", name: \"_stateView\", type: \"address\" },\n {\n internalType: \"address\",\n name: \"_protocolFeeRecipient\",\n type: \"address\",\n },\n { internalType: \"address\", name: \"_tokenIdRecipient\", type: \"address\" },\n ],\n stateMutability: \"nonpayable\",\n type: \"constructor\",\n },\n { inputs: [], name: \"CurveSupplyExhausted\", type: \"error\" },\n { inputs: [], name: \"FailedToPullTokens\", type: \"error\" },\n { inputs: [], name: \"FailedToTransferTokens\", type: \"error\" },\n { inputs: [], name: \"InsufficientETHSent\", type: \"error\" },\n { inputs: [], name: \"InsufficientInputAmount\", type: \"error\" },\n { inputs: [], name: \"InsufficientTokenBalanceInBondingCurve\", type: \"error\" },\n { inputs: [], name: \"InvalidBondingCurveSupply\", type: \"error\" },\n { inputs: [], name: \"InvalidFeeSplits\", type: \"error\" },\n { inputs: [], name: \"InvalidPriceX96\", type: \"error\" },\n { inputs: [], name: \"InvalidToken0Amount\", type: \"error\" },\n { inputs: [], name: \"InvalidTokenBalance\", type: \"error\" },\n { inputs: [], name: \"InvalidTokenSupply\", type: \"error\" },\n { inputs: [], name: \"NoFeeToClaim\", type: \"error\" },\n { inputs: [], name: \"NotEnoughTokensToSell\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"owner\", type: \"address\" }],\n name: \"OwnableInvalidOwner\",\n type: \"error\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"account\", type: \"address\" }],\n name: \"OwnableUnauthorizedAccount\",\n type: \"error\",\n },\n { inputs: [], name: \"PriceCurveOutOfBounds\", type: \"error\" },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"SafeERC20FailedOperation\",\n type: \"error\",\n },\n { inputs: [], name: \"SlippageExceeded\", type: \"error\" },\n { inputs: [], name: \"StartTickTooLarge\", type: \"error\" },\n {\n inputs: [\n { internalType: \"uint256\", name: \"subBy\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"sqrtTargetPrice\", type: \"uint256\" },\n ],\n name: \"SubByTooLarge\",\n type: \"error\",\n },\n { inputs: [], name: \"TickNotMultipleOfSpacing\", type: \"error\" },\n { inputs: [], name: \"TickTooLarge\", type: \"error\" },\n { inputs: [], name: \"TickTooSmall\", type: \"error\" },\n { inputs: [], name: \"TokenAlreadyDeployed\", type: \"error\" },\n { inputs: [], name: \"TokenAlreadyGraduated\", type: \"error\" },\n { inputs: [], name: \"TokenInGraduationProcess\", type: \"error\" },\n { inputs: [], name: \"TokenNotReadyForGraduation\", type: \"error\" },\n { inputs: [], name: \"UnexpectedCrash\", type: \"error\" },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n { indexed: true, internalType: \"bool\", name: \"isBuy\", type: \"bool\" },\n { indexed: true, internalType: \"address\", name: \"to\", type: \"address\" },\n {\n indexed: false,\n internalType: \"address\",\n name: \"from\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountIn\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"amountOut\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"feeAmount\",\n type: \"uint256\",\n },\n ],\n name: \"BondingCurveSwap\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferStarted\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"previousOwner\",\n type: \"address\",\n },\n {\n indexed: true,\n internalType: \"address\",\n name: \"newOwner\",\n type: \"address\",\n },\n ],\n name: \"OwnershipTransferred\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"token0\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"address\",\n name: \"token1\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"uniswapTokenId\",\n type: \"uint256\",\n },\n ],\n name: \"PoolLaunched\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"mintedBondingCurveTokens\",\n type: \"uint256\",\n },\n {\n indexed: false,\n internalType: \"uint256\",\n name: \"collectedBaseTokens\",\n type: \"uint256\",\n },\n ],\n name: \"TokenGraduated\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n {\n components: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"address\", name: \"baseToken\", type: \"address\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"symbol\", type: \"string\" },\n { internalType: \"string\", name: \"image\", type: \"string\" },\n { internalType: \"string\", name: \"appIdentifier\", type: \"string\" },\n { internalType: \"uint256\", name: \"teamSupply\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"vestingStartTime\", type: \"uint64\" },\n { internalType: \"uint64\", name: \"vestingDuration\", type: \"uint64\" },\n { internalType: \"address\", name: \"vestingWallet\", type: \"address\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"liquidityPoolSupply\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveBuyFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSellFee\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"bondingCurveFeeSplits\",\n type: \"tuple[]\",\n },\n {\n components: [\n { internalType: \"uint256[]\", name: \"prices\", type: \"uint256[]\" },\n { internalType: \"uint256\", name: \"numSteps\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"stepSize\", type: \"uint256\" },\n ],\n internalType: \"struct PriceCurve\",\n name: \"bondingCurveParams\",\n type: \"tuple\",\n },\n { internalType: \"bool\", name: \"allowForcedGraduation\", type: \"bool\" },\n { internalType: \"bool\", name: \"allowAutoGraduation\", type: \"bool\" },\n {\n internalType: \"uint256\",\n name: \"graduationFeeBps\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"graduationFeeSplits\",\n type: \"tuple[]\",\n },\n { internalType: \"uint24\", name: \"poolFees\", type: \"uint24\" },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"poolFeeSplits\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeStartingTime\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeDuration\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxSurgeFeeBps\", type: \"uint256\" },\n ],\n indexed: false,\n internalType: \"struct StateManager.TokenDeploymentConfig\",\n name: \"config\",\n type: \"tuple\",\n },\n ],\n name: \"TokenLaunched\",\n type: \"event\",\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: \"address\",\n name: \"token\",\n type: \"address\",\n },\n ],\n name: \"TokenReadyForGraduation\",\n type: \"event\",\n },\n {\n inputs: [],\n name: \"PROTOCOL_FEE_SHARE\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"acceptOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"bondingCurveFeeAccumulated\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"buyer\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"buyToken\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"bool\", name: \"\", type: \"bool\" },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"claimFee\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getAutoGraduationParams\",\n outputs: [\n { internalType: \"int24\", name: \"tickSpacing\", type: \"int24\" },\n { internalType: \"int24\", name: \"startingTick\", type: \"int24\" },\n { internalType: \"int24\", name: \"endTick\", type: \"int24\" },\n { internalType: \"int24\", name: \"targetTick\", type: \"int24\" },\n { internalType: \"uint24\", name: \"poolFee\", type: \"uint24\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getBaseToken\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n ],\n name: \"getBuyQuote\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getPoolKey\",\n outputs: [\n {\n components: [\n { internalType: \"Currency\", name: \"currency0\", type: \"address\" },\n { internalType: \"Currency\", name: \"currency1\", type: \"address\" },\n { internalType: \"uint24\", name: \"fee\", type: \"uint24\" },\n { internalType: \"int24\", name: \"tickSpacing\", type: \"int24\" },\n { internalType: \"contract IHooks\", name: \"hooks\", type: \"address\" },\n ],\n internalType: \"struct PoolKey\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n ],\n name: \"getSellQuote\",\n outputs: [\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"address\", name: \"baseToken\", type: \"address\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"symbol\", type: \"string\" },\n { internalType: \"string\", name: \"image\", type: \"string\" },\n { internalType: \"string\", name: \"appIdentifier\", type: \"string\" },\n { internalType: \"uint256\", name: \"teamSupply\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"vestingStartTime\", type: \"uint64\" },\n { internalType: \"uint64\", name: \"vestingDuration\", type: \"uint64\" },\n { internalType: \"address\", name: \"vestingWallet\", type: \"address\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"liquidityPoolSupply\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveBuyFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSellFee\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"bondingCurveFeeSplits\",\n type: \"tuple[]\",\n },\n {\n components: [\n { internalType: \"uint256[]\", name: \"prices\", type: \"uint256[]\" },\n { internalType: \"uint256\", name: \"numSteps\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"stepSize\", type: \"uint256\" },\n ],\n internalType: \"struct PriceCurve\",\n name: \"bondingCurveParams\",\n type: \"tuple\",\n },\n { internalType: \"bool\", name: \"allowForcedGraduation\", type: \"bool\" },\n { internalType: \"bool\", name: \"allowAutoGraduation\", type: \"bool\" },\n {\n internalType: \"uint256\",\n name: \"graduationFeeBps\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"graduationFeeSplits\",\n type: \"tuple[]\",\n },\n { internalType: \"uint24\", name: \"poolFees\", type: \"uint24\" },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"poolFeeSplits\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeStartingTime\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeDuration\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxSurgeFeeBps\", type: \"uint256\" },\n ],\n internalType: \"struct StateManager.TokenDeploymentConfig\",\n name: \"config\",\n type: \"tuple\",\n },\n ],\n name: \"getSurgeFee\",\n outputs: [{ internalType: \"uint256\", name: \"fee\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getTokenDeploymentConfig\",\n outputs: [\n {\n components: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"address\", name: \"baseToken\", type: \"address\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"symbol\", type: \"string\" },\n { internalType: \"string\", name: \"image\", type: \"string\" },\n { internalType: \"string\", name: \"appIdentifier\", type: \"string\" },\n { internalType: \"uint256\", name: \"teamSupply\", type: \"uint256\" },\n { internalType: \"uint64\", name: \"vestingStartTime\", type: \"uint64\" },\n { internalType: \"uint64\", name: \"vestingDuration\", type: \"uint64\" },\n { internalType: \"address\", name: \"vestingWallet\", type: \"address\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSupply\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"liquidityPoolSupply\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"totalSupply\", type: \"uint256\" },\n {\n internalType: \"uint256\",\n name: \"bondingCurveBuyFee\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"bondingCurveSellFee\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"bondingCurveFeeSplits\",\n type: \"tuple[]\",\n },\n {\n components: [\n { internalType: \"uint256[]\", name: \"prices\", type: \"uint256[]\" },\n { internalType: \"uint256\", name: \"numSteps\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"stepSize\", type: \"uint256\" },\n ],\n internalType: \"struct PriceCurve\",\n name: \"bondingCurveParams\",\n type: \"tuple\",\n },\n { internalType: \"bool\", name: \"allowForcedGraduation\", type: \"bool\" },\n { internalType: \"bool\", name: \"allowAutoGraduation\", type: \"bool\" },\n {\n internalType: \"uint256\",\n name: \"graduationFeeBps\",\n type: \"uint256\",\n },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"graduationFeeSplits\",\n type: \"tuple[]\",\n },\n { internalType: \"uint24\", name: \"poolFees\", type: \"uint24\" },\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"poolFeeSplits\",\n type: \"tuple[]\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeStartingTime\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"surgeFeeDuration\",\n type: \"uint256\",\n },\n { internalType: \"uint256\", name: \"maxSurgeFeeBps\", type: \"uint256\" },\n ],\n internalType: \"struct StateManager.TokenDeploymentConfig\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getTokenPrice\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getTokenState\",\n outputs: [\n {\n components: [\n { internalType: \"bool\", name: \"isGraduated\", type: \"bool\" },\n {\n internalType: \"uint256\",\n name: \"tokensInBondingCurve\",\n type: \"uint256\",\n },\n {\n internalType: \"uint256\",\n name: \"baseTokensInBondingCurve\",\n type: \"uint256\",\n },\n { internalType: \"address\", name: \"poolAddress\", type: \"address\" },\n { internalType: \"uint256\", name: \"uniswapTokenId\", type: \"uint256\" },\n ],\n internalType: \"struct StateManager.TokenState\",\n name: \"\",\n type: \"tuple\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"getTokenSupply\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"bool\", name: \"allowPreGraduation\", type: \"bool\" },\n ],\n name: \"graduateToken\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"isGraduated\",\n outputs: [{ internalType: \"bool\", name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"int24\", name: \"tickSpacing\", type: \"int24\" },\n { internalType: \"int24\", name: \"startingTick\", type: \"int24\" },\n { internalType: \"int24\", name: \"endingTick\", type: \"int24\" },\n { internalType: \"int24\", name: \"targetTick\", type: \"int24\" },\n { internalType: \"bool\", name: \"allowPreGraduation\", type: \"bool\" },\n ],\n name: \"launchV4Pool\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"owner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"pendingOwner\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"permit2\",\n outputs: [{ internalType: \"contract IPermit2\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"token\", type: \"address\" }],\n name: \"poolFeeSplits\",\n outputs: [\n {\n components: [\n { internalType: \"address\", name: \"recipient\", type: \"address\" },\n { internalType: \"uint256\", name: \"bps\", type: \"uint256\" },\n ],\n internalType: \"struct FeeSplit[]\",\n name: \"\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n name: \"poolKeys\",\n outputs: [\n { internalType: \"Currency\", name: \"currency0\", type: \"address\" },\n { internalType: \"Currency\", name: \"currency1\", type: \"address\" },\n { internalType: \"uint24\", name: \"fee\", type: \"uint24\" },\n { internalType: \"int24\", name: \"tickSpacing\", type: \"int24\" },\n { internalType: \"contract IHooks\", name: \"hooks\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"positionManager\",\n outputs: [\n { internalType: \"contract IPositionManager\", name: \"\", type: \"address\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"protocolFeeRecipient\",\n outputs: [{ internalType: \"address\", name: \"\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"renounceOwnership\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"buyer\", type: \"address\" },\n { internalType: \"address\", name: \"token\", type: \"address\" },\n { internalType: \"uint256\", name: \"amountIn\", type: \"uint256\" },\n { internalType: \"uint256\", name: \"amountOutMin\", type: \"uint256\" },\n { internalType: \"address\", name: \"to\", type: \"address\" },\n ],\n name: \"sellToken\",\n outputs: [{ internalType: \"uint256\", name: \"\", type: \"uint256\" }],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n internalType: \"address\",\n name: \"_protocolFeeRecipient\",\n type: \"address\",\n },\n ],\n name: \"setProtocolFeeRecipient\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"address\", name: \"token\", type: \"address\" },\n {\n components: [\n { internalType: \"address\", name: \"creator\", type: \"address\" },\n { internalType: \"address\", name: \"baseToken\", type: \"address\" },\n { internalType: \"string\", name: \"name\", type: \"string\" },\n { internalType: \"string\", name: \"symbol\", type: \"string\" },\n { internalType: \"string\", name: \"image\", type: \"string\" },\n { inte