# Variables

The following are the most important variables used in the contract:

* `_NOT_ENTERED`: a constant that indicates that the lock is not entered
* `_ENTERED`: a constant that indicates that the lock is entered
* `_NO_ID`: a constant that indicates that there is no position ID
* `_NO_ADDRESS`: a constant that indicates that there is no address
* `_GENERAL_LOCK`: a variable that is used as a lock to prevent reentrancy attacks
* `_IN_EXEC_LOCK`: a variable that is used as a lock to avoid potential race conditions
* `POSITION_ID`: a variable that indicates the position ID currently under execution
* `SPELL`: a variable that indicates the spell currently under execution
* `config`: an instance of `IProtocolConfig` that stores the protocol configuration
* `oracle`: an instance of `ICoreOracle` that stores the address of the oracle contract
* `feeManager`: an instance of `IFeeManager` that stores the address of the fee manager contract
* `nextPositionId`: a variable that stores the next available position ID, starting from 1
* `bankStatus`: a variable that stores the status of the bank, each bit stores a certain bank status, e.g. borrow allowed, repay allowed
* `allBanks`: an array that stores the list of all listed banks
* `banks`: a mapping from token to bank data
* `bTokenInBank`: a mapping from bToken to its existence in bank
* `positions`: a mapping from position ID to position data
* `allowContractCalls`: a boolean variable that determines whether to allow calls from contracts or not
* `whitelistedTokens`: a mapping from token to whitelist status
* `whitelistedSpells`: a mapping from spell to whitelist status
* `whitelistedContracts`: a mapping from user to whitelist status


---

# 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://v1.docs.blueberry.garden/developer-guides/contracts/blueberry-bank/blueberry-bank-contract/variables.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.
