# ISwap

## Functions:

* [`getA()`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`getAllowlist()`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`getToken(uint8 index)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`getTokenIndex(address tokenAddress)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`getTokenBalance(uint8 index)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`getVirtualPrice()`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`isGuarded()`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`calculateSwap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`calculateTokenAmount(uint256[] amounts, bool deposit)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`calculateRemoveLiquidity(uint256 amount)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`calculateRemoveLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`swap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx, uint256 minDy, uint256 deadline)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`addLiquidity(uint256[] amounts, uint256 minToMint, uint256 deadline, bytes32[] merkleProof)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`removeLiquidity(uint256 amount, uint256[] minAmounts, uint256 deadline)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`removeLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex, uint256 minAmount, uint256 deadline)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`removeLiquidityImbalance(uint256[] amounts, uint256 maxBurnAmount, uint256 deadline)`](https://docs.mune.finance/solidity-docs/broken-reference)
* [`updateUserWithdrawFee(address recipient, uint256 transferAmount)`](https://docs.mune.finance/solidity-docs/broken-reference)

## Function `getA() → uint256`

No description

## Function `getAllowlist() → contract IAllowlist`

No description

## Function `getToken(uint8 index) → contract IERC20`

No description

## Function `getTokenIndex(address tokenAddress) → uint8`

No description

## Function `getTokenBalance(uint8 index) → uint256`

No description

## Function `getVirtualPrice() → uint256`

No description

## Function `isGuarded() → bool`

No description

## Function `calculateSwap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx) → uint256`

No description

## Function `calculateTokenAmount(uint256[] amounts, bool deposit) → uint256`

No description

## Function `calculateRemoveLiquidity(uint256 amount) → uint256[]`

No description

## Function `calculateRemoveLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex) → uint256 availableTokenAmount`

No description

## Function `swap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx, uint256 minDy, uint256 deadline) → uint256`

No description

## Function `addLiquidity(uint256[] amounts, uint256 minToMint, uint256 deadline, bytes32[] merkleProof) → uint256`

No description

## Function `removeLiquidity(uint256 amount, uint256[] minAmounts, uint256 deadline) → uint256[]`

No description

## Function `removeLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex, uint256 minAmount, uint256 deadline) → uint256`

No description

## Function `removeLiquidityImbalance(uint256[] amounts, uint256 maxBurnAmount, uint256 deadline) → uint256`

No description

## Function `updateUserWithdrawFee(address recipient, uint256 transferAmount)`

No description
