# Common Functionalities

The following functionalities are shared between Instrument Escrow and Issuance Escrow.

![](/files/-LoaAqEgQI1frT1jXTFC)

The following functions are implemented in both Instrument Escrow and Issuance Escrow and can be invoked by any account:

* getBalance(address account)
  * Get ETH balance of individual user
* getTokenBalance(address account, IERC20 token)
  * Get ERC20 token balance of individual user
* getDepositTokens(address account)
  * Get the list of ERC20 tokens deposited of individual user

This means any account can view the balance information of any other account in both Instrument Escrows and Issuance Escrows.

The following functions are implemented in both Instrument Escrow and Issuance Escrow and can be only invoked by owner(i.e. Instrument Manager):

* depositByAdmin(address account)
  * ETH is transferred from owner to the escrow
  * The deposited ETH is added to the account's balance
* withdrawByAdmin(address account, uint256 amount)
  * ETH is transferred from the escrow to owner
  * The withdrawn ETH is reduced from the account's balance
* depositTokenByAdmin(address account, address token, uint256 amount)
  * ERC20 token is transferred from owner to the escrow
  * The deposited token is added to the account's balance
* withdrawTokenByAdmin(address account, address token, uint256 amount)
  * ERC20 token is transferred from the escrow to owner
  * The deposited token is reduced from the account's balance

Instrument Manager can deposit/withdraw assets for any account so that it could implement the following functionalities:

* Transfer assets from Instrument Escrow to Issuance Escrow
* Transfer assets from Issuance Escrow to Instrument Escrow
* Transfer assets between Issuance Escrows, e.g in issuance renewal


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nuts.finance/master/implementation/escrow/common-functionalities.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
