# ISwapGuarded

## Functions:

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

## Function `getA() → uint256` <a href="#iswapguarded-geta" id="iswapguarded-geta"></a>

No description

## Function `getAllowlist() → contract IAllowlist` <a href="#iswapguarded-getallowlist" id="iswapguarded-getallowlist"></a>

No description

## Function `getToken(uint8 index) → contract IERC20` <a href="#iswapguarded-gettoken-uint8" id="iswapguarded-gettoken-uint8"></a>

No description

## Function `getTokenIndex(address tokenAddress) → uint8` <a href="#iswapguarded-gettokenindex-address" id="iswapguarded-gettokenindex-address"></a>

No description

## Function `getTokenBalance(uint8 index) → uint256` <a href="#iswapguarded-gettokenbalance-uint8" id="iswapguarded-gettokenbalance-uint8"></a>

No description

## Function `getVirtualPrice() → uint256` <a href="#iswapguarded-getvirtualprice" id="iswapguarded-getvirtualprice"></a>

No description

## Function `isGuarded() → bool` <a href="#iswapguarded-isguarded" id="iswapguarded-isguarded"></a>

No description

## Function `calculateSwap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx) → uint256` <a href="#iswapguarded-calculateswap-uint8-uint8-uint256" id="iswapguarded-calculateswap-uint8-uint8-uint256"></a>

No description

## Function `calculateTokenAmount(uint256[] amounts, bool deposit) → uint256` <a href="#iswapguarded-calculatetokenamount-uint256-bool" id="iswapguarded-calculatetokenamount-uint256-bool"></a>

No description

## Function `calculateRemoveLiquidity(uint256 amount) → uint256[]` <a href="#iswapguarded-calculateremoveliquidity-uint256" id="iswapguarded-calculateremoveliquidity-uint256"></a>

No description

## Function `calculateRemoveLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex) → uint256 availableTokenAmount` <a href="#iswapguarded-calculateremoveliquidityonetoken-uint256-uint8" id="iswapguarded-calculateremoveliquidityonetoken-uint256-uint8"></a>

No description

## Function `swap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx, uint256 minDy, uint256 deadline) → uint256` <a href="#iswapguarded-swap-uint8-uint8-uint256-uint256-uint256" id="iswapguarded-swap-uint8-uint8-uint256-uint256-uint256"></a>

No description

## Function `addLiquidity(uint256[] amounts, uint256 minToMint, uint256 deadline, bytes32[] merkleProof) → uint256` <a href="#iswapguarded-addliquidity-uint256-uint256-uint256-bytes32" id="iswapguarded-addliquidity-uint256-uint256-uint256-bytes32"></a>

No description

## Function `removeLiquidity(uint256 amount, uint256[] minAmounts, uint256 deadline) → uint256[]` <a href="#iswapguarded-removeliquidity-uint256-uint256-uint256" id="iswapguarded-removeliquidity-uint256-uint256-uint256"></a>

No description

## Function `removeLiquidityOneToken(uint256 tokenAmount, uint8 tokenIndex, uint256 minAmount, uint256 deadline) → uint256` <a href="#iswapguarded-removeliquidityonetoken-uint256-uint8-uint256-uint256" id="iswapguarded-removeliquidityonetoken-uint256-uint8-uint256-uint256"></a>

No description

## Function `removeLiquidityImbalance(uint256[] amounts, uint256 maxBurnAmount, uint256 deadline) → uint256` <a href="#iswapguarded-removeliquidityimbalance-uint256-uint256-uint256" id="iswapguarded-removeliquidityimbalance-uint256-uint256-uint256"></a>

No description

## Function `updateUserWithdrawFee(address recipient, uint256 transferAmount)` <a href="#iswapguarded-updateuserwithdrawfee-address-uint256" id="iswapguarded-updateuserwithdrawfee-address-uint256"></a>

No description
