> For the complete documentation index, see [llms.txt](https://doc.brink.money/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.brink.money/vault/technical-overview/user-operations.md).

# User Operations

### Deposit Flow

Purpose: Deposit ERC20 assets into the vault to receive BrinkVault shares.

Steps:

1. Check Allowance\
   Ensure the vault has permission to transfer your tokens.&#x20;

```javascript
const allowance = await asset.allowance(userAddress, brinkVaultAddress);
```

2. Approve the Vault (if needed)\
   If allowance is lower than the amount you want to deposit:

```javascript
await asset.approve(brinkVaultAddress, depositAmount);
```

3. Deposit Tokens

&#x20;      Returns the number of shares minted.

```javascript
await brinkVault.deposit(depositAmount, userAddress);
```

4. View Balance

```javascript
const shares = await brinkVault.balanceOf(userAddress);
```

### Withdraw Flow

Purpose: Withdraw ERC20 assets by burning vault shares.

Steps:

```javascript
await brinkVault.withdraw(assetAmount, userAddress, userAddress);
```

or to redeem by shares:<br>

```javascript
await brinkVault.redeem(shareAmount, userAddress, userAddress);
```

### View Functions&#x20;

<table><thead><tr><th width="265" align="center">Function </th><th align="center">Description </th></tr></thead><tbody><tr><td align="center">asset()</td><td align="center">Returns the underlying ERC20 asset address.</td></tr><tr><td align="center">totalAssets()</td><td align="center">Returns total asset amount managed by the vault.</td></tr><tr><td align="center">balanceOf(address)</td><td align="center">Returns the user’s vault share balance.</td></tr><tr><td align="center">convertToShares(assets)</td><td align="center">Converts asset amount to equivalent shares.</td></tr><tr><td align="center">convertToAssets(shares)</td><td align="center">Converts shares back to equivalent asset amount.</td></tr><tr><td align="center">previewDeposit(assets)</td><td align="center">Estimates how many shares will be minted for a deposit.</td></tr><tr><td align="center">previewWithdraw(assets)</td><td align="center">Estimates how many shares will be burned for a withdrawal.</td></tr><tr><td align="center">depositLimit()</td><td align="center">Shows the maximum total assets allowed in the vault.</td></tr><tr><td align="center">getBrinkVaultData()</td><td align="center">Returns all configured strategies and their current weights.</td></tr><tr><td align="center">getWhitelist()</td><td align="center">Returns the current list of whitelisted strategies.</td></tr></tbody></table>
