{
  "network": "elysium-mainnet",
  "chainId": 99901,
  "factoryStartBlock": 701345,
  "explorer": "",
  "generatedBy": "tartarus/backend/ops/scripts/emit-ui-docs.ts",
  "contracts": [
    {
      "name": "TartarusFeeEscrow",
      "kind": "singleton",
      "address": "0x44D1065fD59280cFa26B7BE3dBf13F364314616F",
      "abi": [
        {
          "type": "function",
          "name": "balanceOf",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "balanceOfToken",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "claim",
          "inputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "claim",
          "inputs": [],
          "outputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "claimToken",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "claimToken",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "credit",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "payable"
        },
        {
          "type": "function",
          "name": "creditToken",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "event",
          "name": "Claimed",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "ClaimedToken",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Credited",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "depositor",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "CreditedToken",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "depositor",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "InsufficientBalance",
          "inputs": [
            {
              "name": "requested",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "available",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "NoBalance",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ReentrancyGuardReentrantCall",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SafeERC20FailedOperation",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "TransferFailed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusMemeHook",
      "kind": "singleton",
      "address": "0x00b2Ff65E61aD8c57F957624EDc6C81908Ade044",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "poolManager_",
              "type": "address",
              "internalType": "contract IPoolManager"
            },
            {
              "name": "feeEscrow_",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            },
            {
              "name": "protocolFeeRecipient_",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "initialOwner_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "receive",
          "stateMutability": "payable"
        },
        {
          "type": "function",
          "name": "MAX_TOTAL_FEE_BPS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "acceptOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "afterAddLiquidity",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct ModifyLiquidityParams",
              "components": [
                {
                  "name": "tickLower",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickUpper",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "liquidityDelta",
                  "type": "int256",
                  "internalType": "int256"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "delta",
              "type": "int256",
              "internalType": "BalanceDelta"
            },
            {
              "name": "feesAccrued",
              "type": "int256",
              "internalType": "BalanceDelta"
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            },
            {
              "name": "",
              "type": "int256",
              "internalType": "BalanceDelta"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "afterDonate",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "amount0",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "amount1",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "afterInitialize",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "sqrtPriceX96",
              "type": "uint160",
              "internalType": "uint160"
            },
            {
              "name": "tick",
              "type": "int24",
              "internalType": "int24"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "afterRemoveLiquidity",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct ModifyLiquidityParams",
              "components": [
                {
                  "name": "tickLower",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickUpper",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "liquidityDelta",
                  "type": "int256",
                  "internalType": "int256"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "delta",
              "type": "int256",
              "internalType": "BalanceDelta"
            },
            {
              "name": "feesAccrued",
              "type": "int256",
              "internalType": "BalanceDelta"
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            },
            {
              "name": "",
              "type": "int256",
              "internalType": "BalanceDelta"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "afterSwap",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct SwapParams",
              "components": [
                {
                  "name": "zeroForOne",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "amountSpecified",
                  "type": "int256",
                  "internalType": "int256"
                },
                {
                  "name": "sqrtPriceLimitX96",
                  "type": "uint160",
                  "internalType": "uint160"
                }
              ]
            },
            {
              "name": "delta",
              "type": "int256",
              "internalType": "BalanceDelta"
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            },
            {
              "name": "",
              "type": "int128",
              "internalType": "int128"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "beforeAddLiquidity",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct ModifyLiquidityParams",
              "components": [
                {
                  "name": "tickLower",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickUpper",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "liquidityDelta",
                  "type": "int256",
                  "internalType": "int256"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "beforeDonate",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "amount0",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "amount1",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "beforeInitialize",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "sqrtPriceX96",
              "type": "uint160",
              "internalType": "uint160"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "beforeRemoveLiquidity",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct ModifyLiquidityParams",
              "components": [
                {
                  "name": "tickLower",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickUpper",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "liquidityDelta",
                  "type": "int256",
                  "internalType": "int256"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "beforeSwap",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct SwapParams",
              "components": [
                {
                  "name": "zeroForOne",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "amountSpecified",
                  "type": "int256",
                  "internalType": "int256"
                },
                {
                  "name": "sqrtPriceLimitX96",
                  "type": "uint160",
                  "internalType": "uint160"
                }
              ]
            },
            {
              "name": "hookData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            },
            {
              "name": "",
              "type": "int256",
              "internalType": "BeforeSwapDelta"
            },
            {
              "name": "",
              "type": "uint24",
              "internalType": "uint24"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "currentFeePolicy",
          "inputs": [
            {
              "name": "creatorFeeBps",
              "type": "uint16",
              "internalType": "uint16"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct FeePolicySnapshot",
              "components": [
                {
                  "name": "protocolFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "protocolFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "maxInternalPriceImpactBps",
                  "type": "uint16",
                  "internalType": "uint16"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "factory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "feeEscrow",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "feeSweepOperator",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getHookPermissions",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct Hooks.Permissions",
              "components": [
                {
                  "name": "beforeInitialize",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterInitialize",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "beforeAddLiquidity",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterAddLiquidity",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "beforeRemoveLiquidity",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterRemoveLiquidity",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "beforeSwap",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterSwap",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "beforeDonate",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterDonate",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "beforeSwapReturnDelta",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterSwapReturnDelta",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterAddLiquidityReturnDelta",
                  "type": "bool",
                  "internalType": "bool"
                },
                {
                  "name": "afterRemoveLiquidityReturnDelta",
                  "type": "bool",
                  "internalType": "bool"
                }
              ]
            }
          ],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "launches",
          "inputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "PoolId"
            }
          ],
          "outputs": [
            {
              "name": "registered",
              "type": "bool",
              "internalType": "bool"
            },
            {
              "name": "memecoinIsCurrency0",
              "type": "bool",
              "internalType": "bool"
            },
            {
              "name": "memecoin",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "quoteToken",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "creator",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "protocolFeeRecipient",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "protocolFeeBps",
              "type": "uint16",
              "internalType": "uint16"
            },
            {
              "name": "creatorFeeBps",
              "type": "uint16",
              "internalType": "uint16"
            },
            {
              "name": "maxInternalPriceImpactBps",
              "type": "uint16",
              "internalType": "uint16"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "maxCreatorFeeBps",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "maxInternalPriceImpactBps",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "minCreatorFeeBps",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "owner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingFees",
          "inputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "PoolId"
            },
            {
              "name": "currency",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingOwner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "poolManager",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract IPoolManager"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "protocolFeeBps",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "protocolFeeRecipient",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "registerPool",
          "inputs": [
            {
              "name": "key",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            },
            {
              "name": "memecoin",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "creator",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "policy",
              "type": "tuple",
              "internalType": "struct FeePolicySnapshot",
              "components": [
                {
                  "name": "protocolFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "protocolFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "maxInternalPriceImpactBps",
                  "type": "uint16",
                  "internalType": "uint16"
                }
              ]
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "renounceOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "rescuePoolFees",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "internalType": "PoolId"
            }
          ],
          "outputs": [
            {
              "name": "protocolAmount",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "creatorAmount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setCreatorFeeBounds",
          "inputs": [
            {
              "name": "minBps",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "maxBps",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setCreatorFeeRecipient",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "internalType": "PoolId"
            },
            {
              "name": "newRecipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setFactory",
          "inputs": [
            {
              "name": "factory_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setFeeSweepOperator",
          "inputs": [
            {
              "name": "operator",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setMaxInternalPriceImpactBps",
          "inputs": [
            {
              "name": "bps",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setProtocolFeeBps",
          "inputs": [
            {
              "name": "bps",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setProtocolFeeRecipient",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "sweepPoolFees",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "internalType": "PoolId"
            },
            {
              "name": "minConversionQuoteOut",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "sweepPoolQuoteFees",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "internalType": "PoolId"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "transferOwnership",
          "inputs": [
            {
              "name": "newOwner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "unlockCallback",
          "inputs": [
            {
              "name": "data",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "event",
          "name": "CreatorFeeBoundsUpdated",
          "inputs": [
            {
              "name": "minBps",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "maxBps",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "CreatorFeeRecipientUpdated",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": true,
              "internalType": "PoolId"
            },
            {
              "name": "previousRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "FactorySet",
          "inputs": [
            {
              "name": "factory",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "FeeSweepOperatorUpdated",
          "inputs": [
            {
              "name": "operator",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "HookFeeCollected",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": true,
              "internalType": "PoolId"
            },
            {
              "name": "currency",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "feeAmount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "MaxInternalPriceImpactUpdated",
          "inputs": [
            {
              "name": "bps",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferStarted",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferred",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PoolConversionSkipped",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": true,
              "internalType": "PoolId"
            },
            {
              "name": "retainedMemecoin",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PoolFeesRescued",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": true,
              "internalType": "PoolId"
            },
            {
              "name": "currency",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "protocolAmount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "creatorAmount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PoolFeesSwept",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": true,
              "internalType": "PoolId"
            },
            {
              "name": "protocolAmount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "creatorAmount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PoolRegistered",
          "inputs": [
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": true,
              "internalType": "PoolId"
            },
            {
              "name": "memecoin",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "quoteToken",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "creator",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "ProtocolFeeBpsUpdated",
          "inputs": [
            {
              "name": "bps",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "ProtocolFeeRecipientUpdated",
          "inputs": [
            {
              "name": "recipient",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadyRegistered",
          "inputs": []
        },
        {
          "type": "error",
          "name": "AlreadySet",
          "inputs": []
        },
        {
          "type": "error",
          "name": "CreatorFeeOutOfBounds",
          "inputs": [
            {
              "name": "bps",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "minBps",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "maxBps",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "HookNotImplemented",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InexactQuoteTransfer",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "expected",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "received",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "InternalSwapRequiresOperator",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InvalidBps",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InvalidPoolKey",
          "inputs": []
        },
        {
          "type": "error",
          "name": "MinimumOutputRequired",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotFactory",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotFeeSweepOperator",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotPoolManager",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NothingToRescue",
          "inputs": []
        },
        {
          "type": "error",
          "name": "OwnableInvalidOwner",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnableUnauthorizedAccount",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnershipCannotBeRenounced",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ReentrancyGuardReentrantCall",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SafeCastOverflowedIntToUint",
          "inputs": [
            {
              "name": "value",
              "type": "int256",
              "internalType": "int256"
            }
          ]
        },
        {
          "type": "error",
          "name": "SafeCastOverflowedUintToInt",
          "inputs": [
            {
              "name": "value",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "SafeERC20FailedOperation",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "SlippageExceeded",
          "inputs": [
            {
              "name": "actual",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "minimum",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "UnknownPool",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusLaunchLocker",
      "kind": "singleton",
      "address": "0x8fABb780838c1662235002F70A94a7ef882a9598",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "initialOwner",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "positionManager_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "acceptOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "factory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isLocked",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "lockPosition",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "tokenId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "lockTokenSupply",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "lockedPositions",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "tokenId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "lockedTokenSupply",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "onERC721Received",
          "inputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes4",
              "internalType": "bytes4"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "owner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingOwner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "positionManager",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "renounceOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "setFactory",
          "inputs": [
            {
              "name": "factory_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "transferOwnership",
          "inputs": [
            {
              "name": "newOwner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "event",
          "name": "FactorySet",
          "inputs": [
            {
              "name": "factory",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferStarted",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferred",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PositionLocked",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "tokenId",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "TokenSupplyLocked",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadyInitialized",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotFactory",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotPositionManager",
          "inputs": []
        },
        {
          "type": "error",
          "name": "OwnableInvalidOwner",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnableUnauthorizedAccount",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnershipCannotBeRenounced",
          "inputs": []
        },
        {
          "type": "error",
          "name": "PositionAlreadyLocked",
          "inputs": []
        },
        {
          "type": "error",
          "name": "PositionNotHeld",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SafeERC20FailedOperation",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusLaunchFactory",
      "kind": "singleton",
      "address": "0x765f2ce211050ec8280257d76072cAa480D75A00",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "initialOwner",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "poolManager_",
              "type": "address",
              "internalType": "contract IPoolManager"
            },
            {
              "name": "positionManager_",
              "type": "address",
              "internalType": "contract IPositionManager"
            },
            {
              "name": "permit2_",
              "type": "address",
              "internalType": "contract IAllowanceTransfer"
            },
            {
              "name": "locker_",
              "type": "address",
              "internalType": "contract TartarusLaunchLocker"
            },
            {
              "name": "memeHook_",
              "type": "address",
              "internalType": "contract TartarusMemeHook"
            },
            {
              "name": "feeEscrow_",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "BRIDGE_WALLET_GAS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CREATOR_FEE_RECIPIENT_EXECUTION_WINDOW",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "CREATOR_FEE_RECIPIENT_TIMELOCK",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "HOLDER_REWARDS",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "LAUNCH_FORWARDER_EXECUTION_WINDOW",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "LAUNCH_FORWARDER_TIMELOCK",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "SUPPLY",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "acceptOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "addLaunchConfig",
          "inputs": [
            {
              "name": "config",
              "type": "tuple",
              "internalType": "struct TartarusLaunchFactory.LaunchConfig",
              "components": [
                {
                  "name": "quoteToken",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "startingTick",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "enabled",
                  "type": "bool",
                  "internalType": "bool"
                }
              ]
            }
          ],
          "outputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "approvedQuoteTokens",
          "inputs": [
            {
              "name": "quoteToken",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "approved",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "bridgeWalletFor",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "canLaunch",
          "inputs": [
            {
              "name": "launcher",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "cancelCreatorFeeRecipientChange",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "cancelLaunchForwarderChange",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "disableLaunchForwarder",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "elysiumBridgeFactory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "executeCreatorFeeRecipientChange",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "executeLaunchForwarderChange",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "expectedMirrorFor",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "feeEscrow",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getLaunchConfig",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct TartarusLaunchFactory.LaunchConfig",
              "components": [
                {
                  "name": "quoteToken",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "startingTick",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "enabled",
                  "type": "bool",
                  "internalType": "bool"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getLaunchFeePolicy",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct FeePolicySnapshot",
              "components": [
                {
                  "name": "protocolFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "protocolFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "maxInternalPriceImpactBps",
                  "type": "uint16",
                  "internalType": "uint16"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getLaunchedToken",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct ITartarusLaunchFactory.LaunchedToken",
              "components": [
                {
                  "name": "token",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "deployer",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "creatorFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "quoteToken",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "poolId",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "positionId",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "startingTick",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "exists",
                  "type": "bool",
                  "internalType": "bool"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "holderRewardsDistributorUsed",
          "inputs": [
            {
              "name": "distributor",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isSymbolAvailable",
          "inputs": [
            {
              "name": "symbol",
              "type": "string",
              "internalType": "string"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isSymbolReserved",
          "inputs": [
            {
              "name": "symbol",
              "type": "string",
              "internalType": "string"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchConfigCount",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchDeployer",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract TartarusLaunchDeployer"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchEnabled",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchFee",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchForwarder",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchForwarderInitialized",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchToken",
          "inputs": [
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct TartarusLaunchFactory.TokenParams",
              "components": [
                {
                  "name": "name",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "symbol",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "logo",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "description",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "socials",
                  "type": "tuple",
                  "internalType": "struct TartarusLauncherToken.Socials",
                  "components": [
                    {
                      "name": "twitter",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "telegram",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "discord",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "website",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "farcaster",
                      "type": "string",
                      "internalType": "string"
                    }
                  ]
                },
                {
                  "name": "creatorFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "expectedEconomics",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "launchConfigId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "payable"
        },
        {
          "type": "function",
          "name": "launchTokenFor",
          "inputs": [
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct TartarusLaunchFactory.TokenParams",
              "components": [
                {
                  "name": "name",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "symbol",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "logo",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "description",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "socials",
                  "type": "tuple",
                  "internalType": "struct TartarusLauncherToken.Socials",
                  "components": [
                    {
                      "name": "twitter",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "telegram",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "discord",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "website",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "farcaster",
                      "type": "string",
                      "internalType": "string"
                    }
                  ]
                },
                {
                  "name": "creatorFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "expectedEconomics",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "launchConfigId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "originalDeployer",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "payable"
        },
        {
          "type": "function",
          "name": "locker",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract TartarusLaunchLocker"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "memeHook",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract TartarusMemeHook"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "owner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingCreatorFeeRecipient",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "newRecipient",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "effectiveAt",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "expiresAt",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingLaunchForwarder",
          "inputs": [],
          "outputs": [
            {
              "name": "forwarder",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "effectiveAt",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "expiresAt",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingOwner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "permit2",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract IAllowanceTransfer"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "poolKeyFor",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct PoolKey",
              "components": [
                {
                  "name": "currency0",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "currency1",
                  "type": "address",
                  "internalType": "Currency"
                },
                {
                  "name": "fee",
                  "type": "uint24",
                  "internalType": "uint24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "hooks",
                  "type": "address",
                  "internalType": "contract IHooks"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "poolManager",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract IPoolManager"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "positionManager",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract IPositionManager"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "previewLaunchEconomics",
          "inputs": [
            {
              "name": "launchConfigId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "creatorFeeBps",
              "type": "uint16",
              "internalType": "uint16"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "proposeLaunchForwarder",
          "inputs": [
            {
              "name": "forwarder",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "renounceOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "rewardsDistributorFactory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "setCreatorFeeRecipient",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "newRecipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setElysiumBridgeFactory",
          "inputs": [
            {
              "name": "bridgeFactory",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setLaunchDeployer",
          "inputs": [
            {
              "name": "deployer",
              "type": "address",
              "internalType": "contract TartarusLaunchDeployer"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setLaunchEnabled",
          "inputs": [
            {
              "name": "enabled",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setLaunchFee",
          "inputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setLaunchForwarder",
          "inputs": [
            {
              "name": "forwarder",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setQuoteTokenApproved",
          "inputs": [
            {
              "name": "quoteToken",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "approved",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setReservedSymbol",
          "inputs": [
            {
              "name": "symbol",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "reserved",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setRewardsDistributorFactory",
          "inputs": [
            {
              "name": "rewardsFactory",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setWhitelistedLauncher",
          "inputs": [
            {
              "name": "launcher",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "enabled",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "tokenBySymbol",
          "inputs": [
            {
              "name": "symbolHash",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "transferCreatorFeeRecipient",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "newRecipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "transferOwnership",
          "inputs": [
            {
              "name": "newOwner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "updateLaunchConfig",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "config",
              "type": "tuple",
              "internalType": "struct TartarusLaunchFactory.LaunchConfig",
              "components": [
                {
                  "name": "quoteToken",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "startingTick",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "tickSpacing",
                  "type": "int24",
                  "internalType": "int24"
                },
                {
                  "name": "enabled",
                  "type": "bool",
                  "internalType": "bool"
                }
              ]
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "whitelistedLaunchers",
          "inputs": [
            {
              "name": "launcher",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "enabled",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "event",
          "name": "BridgeWalletCreated",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "wallet",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "BridgeWalletSkipped",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "CreatorFeeRecipientChangeCancelled",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "proposedRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "CreatorFeeRecipientChangeProposed",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "currentRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "proposedRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "effectiveAt",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "expiresAt",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "CreatorFeeRecipientUpdated",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "previousRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "ElysiumBridgeFactorySet",
          "inputs": [
            {
              "name": "bridgeFactory",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchConfigAdded",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchConfigUpdated",
          "inputs": [
            {
              "name": "id",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchDeployerSet",
          "inputs": [
            {
              "name": "deployer",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchEnabledUpdated",
          "inputs": [
            {
              "name": "enabled",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchFeeUpdated",
          "inputs": [
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchForwarderChangeCancelled",
          "inputs": [
            {
              "name": "proposedForwarder",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchForwarderChangeProposed",
          "inputs": [
            {
              "name": "currentForwarder",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "proposedForwarder",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "effectiveAt",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "expiresAt",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchForwarderSet",
          "inputs": [
            {
              "name": "forwarder",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "LaunchSalt",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "salt",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferStarted",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferred",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "PoolSeeded",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "positionId",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "liquidity",
              "type": "uint128",
              "indexed": false,
              "internalType": "uint128"
            },
            {
              "name": "tokenAmount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "dustLocked",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "QuoteTokenApprovalUpdated",
          "inputs": [
            {
              "name": "quoteToken",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "approved",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "ReservedSymbolUpdated",
          "inputs": [
            {
              "name": "symbol",
              "type": "string",
              "indexed": false,
              "internalType": "string"
            },
            {
              "name": "reserved",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "RewardsDistributorFactorySet",
          "inputs": [
            {
              "name": "rewardsDistributorFactory",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "TokenLaunched",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "deployer",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "creatorFeeRecipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "launchConfigId",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "poolId",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            },
            {
              "name": "positionId",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "quoteToken",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "startingTick",
              "type": "int24",
              "indexed": false,
              "internalType": "int24"
            },
            {
              "name": "protocolFeeBps",
              "type": "uint16",
              "indexed": false,
              "internalType": "uint16"
            },
            {
              "name": "creatorFeeBps",
              "type": "uint16",
              "indexed": false,
              "internalType": "uint16"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "WhitelistedLauncherUpdated",
          "inputs": [
            {
              "name": "launcher",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "enabled",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadySet",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BridgeFactoryNotSet",
          "inputs": []
        },
        {
          "type": "error",
          "name": "BridgeWalletOutOfGas",
          "inputs": []
        },
        {
          "type": "error",
          "name": "HolderRewardsDistributorTaken",
          "inputs": [
            {
              "name": "distributor",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "IncorrectLaunchFee",
          "inputs": [
            {
              "name": "sent",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "required",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "InvalidLaunchConfigId",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InvalidStartingTick",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InvalidSymbol",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InvalidTickSpacing",
          "inputs": []
        },
        {
          "type": "error",
          "name": "LaunchConfigDisabled",
          "inputs": []
        },
        {
          "type": "error",
          "name": "LaunchDependenciesNotWired",
          "inputs": []
        },
        {
          "type": "error",
          "name": "LaunchDeployerNotSet",
          "inputs": []
        },
        {
          "type": "error",
          "name": "LaunchEconomicsMismatch",
          "inputs": [
            {
              "name": "expected",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "actual",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ]
        },
        {
          "type": "error",
          "name": "NoPendingChange",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotAContract",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotCreatorFeeRecipient",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotLaunchForwarder",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotWhitelisted",
          "inputs": []
        },
        {
          "type": "error",
          "name": "OwnableInvalidOwner",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnableUnauthorizedAccount",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnershipCannotBeRenounced",
          "inputs": []
        },
        {
          "type": "error",
          "name": "QuoteTokenNotApproved",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ReentrancyGuardReentrantCall",
          "inputs": []
        },
        {
          "type": "error",
          "name": "RewardsFactoryNotSet",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SafeERC20FailedOperation",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "SeedNotViable",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SymbolReserved",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SymbolTaken",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "TimelockExpired",
          "inputs": [
            {
              "name": "expiresAt",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "TimelockNotElapsed",
          "inputs": [
            {
              "name": "effectiveAt",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "TokenNotFound",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusLaunchDeployer",
      "kind": "singleton",
      "address": "0x94b7ed8968bF4323c03DE97395801D487771C44E",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "factory_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "deployLaunch",
          "inputs": [
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct LaunchDeployment",
              "components": [
                {
                  "name": "originalDeployer",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "supplyRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "creatorFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "launchConfigId",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "name",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "symbol",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "logo",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "description",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "socials",
                  "type": "tuple",
                  "internalType": "struct TartarusLauncherToken.Socials",
                  "components": [
                    {
                      "name": "twitter",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "telegram",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "discord",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "website",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "farcaster",
                      "type": "string",
                      "internalType": "string"
                    }
                  ]
                }
              ]
            }
          ],
          "outputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "factory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isValidName",
          "inputs": [
            {
              "name": "name",
              "type": "string",
              "internalType": "string"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "isValidSymbol",
          "inputs": [
            {
              "name": "symbol",
              "type": "string",
              "internalType": "string"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "predictLaunchAddress",
          "inputs": [
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct LaunchDeployment",
              "components": [
                {
                  "name": "originalDeployer",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "supplyRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "creatorFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "launchConfigId",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "name",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "symbol",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "logo",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "description",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "socials",
                  "type": "tuple",
                  "internalType": "struct TartarusLauncherToken.Socials",
                  "components": [
                    {
                      "name": "twitter",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "telegram",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "discord",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "website",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "farcaster",
                      "type": "string",
                      "internalType": "string"
                    }
                  ]
                }
              ]
            }
          ],
          "outputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "error",
          "name": "Create2EmptyBytecode",
          "inputs": []
        },
        {
          "type": "error",
          "name": "FailedDeployment",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InsufficientBalance",
          "inputs": [
            {
              "name": "balance",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "needed",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "InvalidName",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InvalidSymbol",
          "inputs": []
        },
        {
          "type": "error",
          "name": "MetadataTooLong",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotFactory",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusLaunchAndBuy",
      "kind": "singleton",
      "address": "0x044a835456057915028DDdFfa161DeA9d4d40615",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "factory_",
              "type": "address",
              "internalType": "contract TartarusLaunchFactory"
            },
            {
              "name": "owner_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "acceptOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "factory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract TartarusLaunchFactory"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchAndBuy",
          "inputs": [
            {
              "name": "params",
              "type": "tuple",
              "internalType": "struct TartarusLaunchFactory.TokenParams",
              "components": [
                {
                  "name": "name",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "symbol",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "logo",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "description",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "socials",
                  "type": "tuple",
                  "internalType": "struct TartarusLauncherToken.Socials",
                  "components": [
                    {
                      "name": "twitter",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "telegram",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "discord",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "website",
                      "type": "string",
                      "internalType": "string"
                    },
                    {
                      "name": "farcaster",
                      "type": "string",
                      "internalType": "string"
                    }
                  ]
                },
                {
                  "name": "creatorFeeRecipient",
                  "type": "address",
                  "internalType": "address"
                },
                {
                  "name": "creatorFeeBps",
                  "type": "uint16",
                  "internalType": "uint16"
                },
                {
                  "name": "expectedEconomics",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "salt",
                  "type": "bytes32",
                  "internalType": "bytes32"
                }
              ]
            },
            {
              "name": "launchConfigId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "quoteIn",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "minTokensOut",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "tokensOut",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "payable"
        },
        {
          "type": "function",
          "name": "msgSender",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "owner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingOwner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "poolManager",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract IPoolManager"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "renounceOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "rescue",
          "inputs": [
            {
              "name": "asset",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "recipient",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "transferOwnership",
          "inputs": [
            {
              "name": "newOwner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "unlockCallback",
          "inputs": [
            {
              "name": "rawData",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes",
              "internalType": "bytes"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "event",
          "name": "Launched",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "launcher",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "quoteSpent",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "tokensReceived",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferStarted",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferred",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Rescued",
          "inputs": [
            {
              "name": "asset",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "recipient",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "BuyTooLarge",
          "inputs": [
            {
              "name": "quoteIn",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "NotApprovedLauncher",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NotPoolManager",
          "inputs": []
        },
        {
          "type": "error",
          "name": "OwnableInvalidOwner",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnableUnauthorizedAccount",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "ReentrancyGuardReentrantCall",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SafeERC20FailedOperation",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "SlippageExceeded",
          "inputs": [
            {
              "name": "actual",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "minimum",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "TransferFailed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "WrongValue",
          "inputs": [
            {
              "name": "sent",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "expected",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroBuy",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusLauncherToken",
      "kind": "perLaunch",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "name_",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "symbol_",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "logo_",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "description_",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "socials_",
              "type": "tuple",
              "internalType": "struct TartarusLauncherToken.Socials",
              "components": [
                {
                  "name": "twitter",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "telegram",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "discord",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "website",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "farcaster",
                  "type": "string",
                  "internalType": "string"
                }
              ]
            },
            {
              "name": "deployer_",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "launchFactory_",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "supplyRecipient_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "SUPPLY",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "allowance",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "spender",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "approve",
          "inputs": [
            {
              "name": "spender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "value",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "balanceOf",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "decimals",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint8",
              "internalType": "uint8"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "deployer",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "description",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string",
              "internalType": "string"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getTokenInfo",
          "inputs": [],
          "outputs": [
            {
              "name": "tokenDeployer",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "tokenLogo",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "tokenDescription",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "tokenSocials",
              "type": "tuple",
              "internalType": "struct TartarusLauncherToken.Socials",
              "components": [
                {
                  "name": "twitter",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "telegram",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "discord",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "website",
                  "type": "string",
                  "internalType": "string"
                },
                {
                  "name": "farcaster",
                  "type": "string",
                  "internalType": "string"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchFactory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "logo",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string",
              "internalType": "string"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "name",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string",
              "internalType": "string"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "socials",
          "inputs": [],
          "outputs": [
            {
              "name": "twitter",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "telegram",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "discord",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "website",
              "type": "string",
              "internalType": "string"
            },
            {
              "name": "farcaster",
              "type": "string",
              "internalType": "string"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "symbol",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "string",
              "internalType": "string"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "totalSupply",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "transfer",
          "inputs": [
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "value",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "transferFrom",
          "inputs": [
            {
              "name": "from",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "to",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "value",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "event",
          "name": "Approval",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "spender",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Transfer",
          "inputs": [
            {
              "name": "from",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "to",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "value",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "ERC20InsufficientAllowance",
          "inputs": [
            {
              "name": "spender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "allowance",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "needed",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "ERC20InsufficientBalance",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "balance",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "needed",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "ERC20InvalidApprover",
          "inputs": [
            {
              "name": "approver",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "ERC20InvalidReceiver",
          "inputs": [
            {
              "name": "receiver",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "ERC20InvalidSender",
          "inputs": [
            {
              "name": "sender",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "ERC20InvalidSpender",
          "inputs": [
            {
              "name": "spender",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusRewardsDistributorFactory",
      "kind": "singleton",
      "address": "0x3c8E2F5924629e629C5c4bFc56FddC4B2794E4F9",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "escrow_",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            },
            {
              "name": "launchFactory_",
              "type": "address",
              "internalType": "contract ITartarusLaunchFactory"
            },
            {
              "name": "distributorOwner_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "deploy",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "salt",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "outputs": [
            {
              "name": "distributor",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "distributorOf",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "distributorOwner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "escrow",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "initCodeHash",
          "inputs": [
            {
              "name": "quoteToken",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "launchFactory",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract ITartarusLaunchFactory"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "predict",
          "inputs": [
            {
              "name": "creator",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "salt",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "quoteToken",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "tokenOf",
          "inputs": [
            {
              "name": "distributor",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "event",
          "name": "DistributorDeployed",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "distributor",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "creator",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "quoteToken",
              "type": "address",
              "indexed": false,
              "internalType": "address"
            },
            {
              "name": "salt",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadyRegistered",
          "inputs": []
        },
        {
          "type": "error",
          "name": "Create2EmptyBytecode",
          "inputs": []
        },
        {
          "type": "error",
          "name": "FailedDeployment",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InsufficientBalance",
          "inputs": [
            {
              "name": "balance",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "needed",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "NotCreatorFeeRecipient",
          "inputs": [
            {
              "name": "expected",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "actual",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "TokenNotFound",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        }
      ]
    },
    {
      "name": "TartarusRewardsDistributor",
      "kind": "perLaunch",
      "abi": [
        {
          "type": "constructor",
          "inputs": [
            {
              "name": "quoteToken_",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "escrow_",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            },
            {
              "name": "owner_",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "receive",
          "stateMutability": "payable"
        },
        {
          "type": "function",
          "name": "CLAIM_WINDOW",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint64",
              "internalType": "uint64"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "acceptOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "batchClaim",
          "inputs": [
            {
              "name": "epochIds",
              "type": "uint256[]",
              "internalType": "uint256[]"
            },
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amounts",
              "type": "uint256[]",
              "internalType": "uint256[]"
            },
            {
              "name": "indexes",
              "type": "uint256[]",
              "internalType": "uint256[]"
            },
            {
              "name": "proofs",
              "type": "bytes32[][]",
              "internalType": "bytes32[][]"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "claim",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "index",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "proof",
              "type": "bytes32[]",
              "internalType": "bytes32[]"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "epochCount",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "escrow",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "contract ITartarusFeeEscrow"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "getEpoch",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "tuple",
              "internalType": "struct TartarusRewardsDistributor.Epoch",
              "components": [
                {
                  "name": "merkleRoot",
                  "type": "bytes32",
                  "internalType": "bytes32"
                },
                {
                  "name": "total",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "claimed",
                  "type": "uint256",
                  "internalType": "uint256"
                },
                {
                  "name": "publishedAt",
                  "type": "uint64",
                  "internalType": "uint64"
                },
                {
                  "name": "rolledOver",
                  "type": "bool",
                  "internalType": "bool"
                }
              ]
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "harvest",
          "inputs": [],
          "outputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "hasClaimed",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "isExcluded",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "leafFor",
          "inputs": [
            {
              "name": "index",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "bytes32",
              "internalType": "bytes32"
            }
          ],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "outstanding",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "owner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "pendingOwner",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "publishEpoch",
          "inputs": [
            {
              "name": "merkleRoot",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "total",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "quoteToken",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "address",
              "internalType": "address"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "function",
          "name": "renounceOwnership",
          "inputs": [],
          "outputs": [],
          "stateMutability": "pure"
        },
        {
          "type": "function",
          "name": "rollOver",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "outputs": [
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setExcluded",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "excluded",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "setExcludedBatch",
          "inputs": [
            {
              "name": "accounts",
              "type": "address[]",
              "internalType": "address[]"
            },
            {
              "name": "excluded",
              "type": "bool",
              "internalType": "bool"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "transferOwnership",
          "inputs": [
            {
              "name": "newOwner",
              "type": "address",
              "internalType": "address"
            }
          ],
          "outputs": [],
          "stateMutability": "nonpayable"
        },
        {
          "type": "function",
          "name": "unallocated",
          "inputs": [],
          "outputs": [
            {
              "name": "",
              "type": "uint256",
              "internalType": "uint256"
            }
          ],
          "stateMutability": "view"
        },
        {
          "type": "event",
          "name": "Claimed",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "account",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "EpochPublished",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "merkleRoot",
              "type": "bytes32",
              "indexed": false,
              "internalType": "bytes32"
            },
            {
              "name": "total",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "expiresAt",
              "type": "uint64",
              "indexed": false,
              "internalType": "uint64"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "ExclusionUpdated",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "excluded",
              "type": "bool",
              "indexed": false,
              "internalType": "bool"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "Harvested",
          "inputs": [
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            },
            {
              "name": "unallocated",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferStarted",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "OwnershipTransferred",
          "inputs": [
            {
              "name": "previousOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            },
            {
              "name": "newOwner",
              "type": "address",
              "indexed": true,
              "internalType": "address"
            }
          ],
          "anonymous": false
        },
        {
          "type": "event",
          "name": "RolledOver",
          "inputs": [
            {
              "name": "epochId",
              "type": "uint256",
              "indexed": true,
              "internalType": "uint256"
            },
            {
              "name": "amount",
              "type": "uint256",
              "indexed": false,
              "internalType": "uint256"
            }
          ],
          "anonymous": false
        },
        {
          "type": "error",
          "name": "AlreadyClaimed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "AlreadyRolledOver",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ClaimWindowClosed",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ClaimWindowOpen",
          "inputs": []
        },
        {
          "type": "error",
          "name": "EpochOverdrawn",
          "inputs": [
            {
              "name": "total",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "claimed",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "ExcludedAccount",
          "inputs": []
        },
        {
          "type": "error",
          "name": "InsufficientUnallocated",
          "inputs": [
            {
              "name": "requested",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "available",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "InvalidProof",
          "inputs": []
        },
        {
          "type": "error",
          "name": "LengthMismatch",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NoEpoch",
          "inputs": []
        },
        {
          "type": "error",
          "name": "NothingToHarvest",
          "inputs": []
        },
        {
          "type": "error",
          "name": "OwnableInvalidOwner",
          "inputs": [
            {
              "name": "owner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnableUnauthorizedAccount",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "OwnershipCannotBeRenounced",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ReentrancyGuardReentrantCall",
          "inputs": []
        },
        {
          "type": "error",
          "name": "SafeERC20FailedOperation",
          "inputs": [
            {
              "name": "token",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "type": "error",
          "name": "TransferFailed",
          "inputs": [
            {
              "name": "account",
              "type": "address",
              "internalType": "address"
            },
            {
              "name": "amount",
              "type": "uint256",
              "internalType": "uint256"
            }
          ]
        },
        {
          "type": "error",
          "name": "UnexpectedNativeTransfer",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroAddress",
          "inputs": []
        },
        {
          "type": "error",
          "name": "ZeroAmount",
          "inputs": []
        }
      ]
    }
  ],
  "externals": [
    {
      "key": "poolManager",
      "address": "0xE2e105d3F7209A9DA11f83cCf3E7398a753823F1",
      "note": "Uniswap V4 PoolManager"
    },
    {
      "key": "positionManager",
      "address": "0x1d1C51b9d07fD27d36412A2b66CC23D19Eb3E518",
      "note": "Uniswap V4 PositionManager (holds the locker's seed positions)"
    },
    {
      "key": "universalRouter",
      "address": "0x1bd4d69bfb8927a045f20518a08390cee3913b0d",
      "note": "Uniswap UniversalRouter — pool swaps (V4_SWAP)"
    },
    {
      "key": "v4Quoter",
      "address": "0x379f556c5a748bd7cc9baf0f7a344094ac1814f5",
      "note": "Uniswap V4 Quoter — swap estimates through the real hook"
    },
    {
      "key": "stateView",
      "address": "0x27ed73ae0652fdcf71d6793412a7525f32be9dfe",
      "note": "Uniswap V4 StateView — pool state reads"
    },
    {
      "key": "permit2",
      "address": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
      "note": "Permit2 — required for UniversalRouter"
    }
  ]
}
