[
  {
    "type": "constructor",
    "inputs": [
      {
        "name": "mintImpl",
        "type": "address",
        "internalType": "contract PartyPoolMintImpl"
      },
      {
        "name": "swapImpl_",
        "type": "address",
        "internalType": "contract PartyPoolSwapImpl"
      }
    ],
    "stateMutability": "nonpayable"
  },
  {
    "type": "function",
    "name": "burnAmounts",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "lpTokenAmount",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "withdrawAmounts",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "burnSwapAmounts",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "lpAmount",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "outputTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "amountOut",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "outFee",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "flashFee",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "",
        "type": "address",
        "internalType": "address"
      },
      {
        "name": "amount",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "fee",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "maxFlashLoan",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "token",
        "type": "address",
        "internalType": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "mintAmounts",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "lpTokenAmount",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "depositAmounts",
        "type": "uint256[]",
        "internalType": "uint256[]"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "poolPrice",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "quoteTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "int128",
        "internalType": "int128"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "price",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "baseTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "quoteTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "swapMintAmounts",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "inputTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "maxAmountIn",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "amountInUsed",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "lpMinted",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "inFee",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "swapToLimitAmounts",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      },
      {
        "name": "inputTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "outputTokenIndex",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "limitPrice",
        "type": "int128",
        "internalType": "int128"
      }
    ],
    "outputs": [
      {
        "name": "amountIn",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "amountOut",
        "type": "uint256",
        "internalType": "uint256"
      },
      {
        "name": "inFee",
        "type": "uint256",
        "internalType": "uint256"
      }
    ],
    "stateMutability": "view"
  },
  {
    "type": "function",
    "name": "working",
    "inputs": [
      {
        "name": "pool",
        "type": "address",
        "internalType": "contract IPartyPool"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool",
        "internalType": "bool"
      }
    ],
    "stateMutability": "view"
  }
]
