[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "BinManager__InvalidShares",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BinManager__ReserveOverflow",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "BitMath__ZeroInput",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidInitialization",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__BinReserveOverflow",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__CannotChangeBaseFactor",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__FlashLoanCallbackFailed",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__FlashLoanCallbackReturnMismatch",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__FlashLoanInProgress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__InsufficientAmountOut",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__InsufficientLiquidity",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__InsufficientLiquidityForSwap",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__InvalidInput",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__NoFeesToClaim",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__NoFeesToCompound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__Paused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__Unauthorized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__ZeroAmount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBPair__ZeroAmountFlashLoan",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBToken__InvalidLength",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBToken__MintToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "LBToken__SelfApproval",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "LBToken__SpenderNotApproved",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "LBToken__TransferExceedsBalance",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LBToken__TransferToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotInitializing",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ReentrancyGuardReentrantCall",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "SafeCast__Overflow",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint24",
        "name": "oldActiveId",
        "type": "uint24"
      },
      {
        "indexed": true,
        "internalType": "uint24",
        "name": "newActiveId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "ActiveBinChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "baseFactor",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "filterPeriod",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "decayPeriod",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "reductionFactor",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "variableFeeControl",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "maxVolatilityAccumulator",
        "type": "uint24"
      }
    ],
    "name": "FeeParametersUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      }
    ],
    "name": "FeesCollected",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "borrower",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feeX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feeY",
        "type": "uint256"
      }
    ],
    "name": "FlashLoan",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "version",
        "type": "uint64"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint24",
        "name": "binId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      }
    ],
    "name": "LPFeesClaimed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint24",
        "name": "binId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "lpTokensMinted",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      }
    ],
    "name": "LPFeesCompounded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "liquidityMinted",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalAmountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalAmountY",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "activeId",
        "type": "uint24"
      }
    ],
    "name": "LiquidityAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalAmountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalAmountY",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feeX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "feeY",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "activeId",
        "type": "uint24"
      }
    ],
    "name": "LiquidityRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "activeId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint40",
        "name": "timestamp",
        "type": "uint40"
      }
    ],
    "name": "OracleUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      }
    ],
    "name": "ProtocolFeesCollected",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "reserveX",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "reserveY",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "ReservesUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint24",
        "name": "binId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "residualX",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "residualY",
        "type": "uint128"
      }
    ],
    "name": "ResidualFeeAccumulated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountOut",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "activeId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "swapForY",
        "type": "bool"
      }
    ],
    "name": "Swap",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountIn",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountOut",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "startBinId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint24",
        "name": "endBinId",
        "type": "uint24"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "binsTraversed",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "totalFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "protocolFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "lpFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "swapForY",
        "type": "bool"
      }
    ],
    "name": "SwapDetailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "TransferBatch",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "TransferSingle",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint128",
        "name": "volatility",
        "type": "uint128"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "VolatilityUpdated",
    "type": "event"
  },
  {
    "stateMutability": "nonpayable",
    "type": "fallback"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "balanceOfBatch",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "batchBalances",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "binStep",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "burn",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "feeX",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "feeY",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint24",
        "name": "binId",
        "type": "uint24"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "claimLPFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "uint24",
        "name": "binId",
        "type": "uint24"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "claimLPFeesFor",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "amountX",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amountY",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "collectProtocolFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "wordIndex",
        "type": "uint256"
      }
    ],
    "name": "getActiveBinsBitmapWord",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getActiveBinsList",
    "outputs": [
      {
        "internalType": "uint24[]",
        "name": "",
        "type": "uint24[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getActiveId",
    "outputs": [
      {
        "internalType": "uint24",
        "name": "",
        "type": "uint24"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint24",
        "name": "id",
        "type": "uint24"
      }
    ],
    "name": "getBin",
    "outputs": [
      {
        "internalType": "uint128",
        "name": "reserveX",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "reserveY",
        "type": "uint128"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint24",
        "name": "id",
        "type": "uint24"
      }
    ],
    "name": "getBinNormalized",
    "outputs": [
      {
        "internalType": "uint128",
        "name": "reserveX",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "reserveY",
        "type": "uint128"
      },
      {
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "uint24",
        "name": "binId",
        "type": "uint24"
      }
    ],
    "name": "getClaimableFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "claimableX",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "claimableY",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDecimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "decimalsX",
        "type": "uint8"
      },
      {
        "internalType": "uint8",
        "name": "decimalsY",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getOracleParameters",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "activeSize",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "oracleLength",
        "type": "uint16"
      },
      {
        "internalType": "uint40",
        "name": "lastUpdate",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPairStatistics",
    "outputs": [
      {
        "internalType": "uint24",
        "name": "activeId",
        "type": "uint24"
      },
      {
        "internalType": "uint128",
        "name": "totalReservesX",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "totalReservesY",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "protocolFeesX",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "protocolFeesY",
        "type": "uint128"
      },
      {
        "internalType": "uint128",
        "name": "volatility",
        "type": "uint128"
      },
      {
        "internalType": "uint40",
        "name": "lastUpdate",
        "type": "uint40"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getQuoteState",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint16",
            "name": "baseFactor",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "filterPeriod",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "decayPeriod",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "reductionFactor",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "variableFeeControl",
            "type": "uint16"
          },
          {
            "internalType": "uint24",
            "name": "maxVolatilityAccumulator",
            "type": "uint24"
          },
          {
            "internalType": "uint16",
            "name": "minSwapBps",
            "type": "uint16"
          }
        ],
        "internalType": "struct FeeHelper.FeeParameters",
        "name": "feeParams",
        "type": "tuple"
      },
      {
        "internalType": "uint128",
        "name": "volatilityAccumulator",
        "type": "uint128"
      },
      {
        "internalType": "uint24",
        "name": "volatilityReference",
        "type": "uint24"
      },
      {
        "internalType": "uint40",
        "name": "lastVolatilityUpdate",
        "type": "uint40"
      },
      {
        "internalType": "uint256",
        "name": "scaleX",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "scaleY",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "factory",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenX_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "tokenY_",
        "type": "address"
      },
      {
        "internalType": "uint16",
        "name": "binStep_",
        "type": "uint16"
      },
      {
        "internalType": "uint24",
        "name": "activeId_",
        "type": "uint24"
      },
      {
        "internalType": "uint16",
        "name": "baseFactor_",
        "type": "uint16"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "mint",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "liquidityMinted",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "safeBatchTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "ext",
        "type": "address"
      }
    ],
    "name": "setExtension",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint16",
            "name": "baseFactor",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "filterPeriod",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "decayPeriod",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "reductionFactor",
            "type": "uint16"
          },
          {
            "internalType": "uint16",
            "name": "variableFeeControl",
            "type": "uint16"
          },
          {
            "internalType": "uint24",
            "name": "maxVolatilityAccumulator",
            "type": "uint24"
          },
          {
            "internalType": "uint16",
            "name": "minSwapBps",
            "type": "uint16"
          }
        ],
        "internalType": "struct FeeHelper.FeeParameters",
        "name": "params",
        "type": "tuple"
      }
    ],
    "name": "setFeeParameters",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "swapForY",
        "type": "bool"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "swap",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "amountOut",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokenX",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokenY",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
