# GET Method Interfaces

## Pool

`var get_pool_full_data()` - returns full Pool Jetton data (note, method depends on network configs and may not work via Liteserver)

* `state` - `uint8` - internal state of the pool. Normal ones is `0`.
* `halted` - `bool` - whether the operation of the pool is stopped. `0` means the pool is working normally
* `total_balance` - `uint` - a sum of all TON accounted by Pool
* `supply` - `uint` - number of issued Pool Jettons
* `interest_rate` - `uint` - interest rate **per round** encoded as 24-bit number. In other words, after borrowing X TON validator need to return `X*(` 2\*\*24`+ interest_rate) /` 2\*\*24`TON`
* `optimistic_deposit_withdrawals` - `bool` - whether the optimistic (instantaneous) mode of deposit/withdrawals is on or is off
* `deposits_open?` - `bool` - whether deposits are open
* `saved_validator_set_hash` - `uint` - last accounted validator set hash
* `prev_round_borrowers` - `[cell, int, int, int, int, int, int]` - data of previous lending round
* `borrowers_dict` - `dict{controller_address_hash -> (Coins, Coins)}` - list of Controllers that borrowed funds, body of credit and interest payment
* `round_id` - `int`
* `active_borrowers` - `int` - number of active borrowers
* `borrowed` - `int` - the total amount of TON borrowed in round
* `expected` - `int` - the total amount of TON expected to be returned in the round end
* `returned` - `int` - the total amount of TON already returned in round
* `profit` - `int` - total profit already received in round
* `current_round_borrowers` - `[cell, int, int, int, int, int, int]` - data of current lending round
* `min_loan_per_validator` - `int` - minimal amount of TON that can be borrowed by a Controller
* `max_loan_per_validator` - `int` - maximal amount of TON that can be borrowed by a Controller
* `governance_fee` - `int` - Share of pool profit which is sent to governance encoded as 24-bit number
* `jetton_minter` - `slice` - address of Pool Jetton root
* `supply` - `int` - the amount of issues Pool Jettons
* `deposit_payout` - `slice | null` - address of deployed Deposit Payout (collection or minter) of current round (`null` if not deployed)
* `requested_for_deposit` - `int` - amount of TON requested for postponed (till the end of the round) deposit in this round
* `withdrawal_payout` - `slice | null` - address of deployed Withdrawal Payout (collection or minter) of current round (`null` if not deployed)
* `requested_for_withdrawal` - `int` - the amount of Pool Jettons requested for postponed (till the end of the round) deposit in this round
* `sudoer` - `slice | addr_none` - address of sudoer role (`addr_none` by default)
* `sudoer_set_at` - `int` - timestamp when sudoer was set (quarantine is counted from this date)
* `governor` - `slice` - address of Governor role
* `governance_update_after` - `int` - timestamp after which Governor can be updated
* `interest_manager` - `slice` - address of interest manager role
* `halter` - `slice` - address of Halter role
* `approver` - `slice` - address of Approver role
* `controller_code` - `cell` - code of Controller
* `pool_jetton_wallet_code` - `cell` - code of Pool Jetton wallet
* `payout_minter_code` - `cell` - code of Payout
* `projected_total_balance` - `int` - the amount of TON expected to be accounted by the Pool at the end of the round
* `projected_supply` - `int` - number of expected issued pool jettons at the end of the round

The current pool jetton/TON ratio is equal to `total_balance/supply`. This ratio is used for immediate withdrawals in *optimistic* mode.

The projected pool jetton/TON ratio is equal to `projected_total_balance/projected_supply`. This ratio is used for immediate deposits in *optimistic* mode.

***

`(slice) get_controller_address(int controller_id, slice validator)` - returns address of the validator controller with the given id and validator address. Note controller maybe not yet deployed.

***

`(int, int) get_controller_address_legacy(int controller_id, int wc, int addr_hash)` - the same as previous but accepts parsed validator address and returns parsed controller address

***

`(int, int) get_loan(int controller_id, slice validator_address, int prev?)` - return loan body and load interest for a given controller

***

`(int, int) get_controller_loan_position(int controller_addr_hash, int prev?)` - We order all loans by controller address hash, put them in line and find a position of median of the given controller loan. This data can be used for deterministic voting: if stakers decide to vote in some proportion, we can check that controllers voted in the same proportion. Returns numerator and denominator.

## Controller

`var get_validator_controller_data()` - return full TON data

* `state` - `uint8` - internal state of the controller: `0` - REST, `1` - SENT\_BORROWING\_REQUEST, `2` - SENT\_STAKE\_REQUEST, `3` - FUNDS\_STAKEN, `4` - SENT\_RECOVER\_REQUEST, `5` - INSOLVENT
* `halted` - `bool` - whether the operation of the controller is stopped or not. `0` means the pool is working normally
* `approved` - `bool` - whether controller is approved and can send loan requests
* `stake_amount_sent` - `int` - the volume of last sent stake to the Elector
* `stake_at` - `int` - time of last sent stake to the Elector
* `saved_validator_set_hash` - `int` - latest known validator hash
* `validator_set_changes_count` - `int` - number of validators set updates since stake was sent
* `validator_set_change_time` - `int` - time of the last validator set updates
* `stake_held_for` - `int` - period of stake unlock after the round end
* `borrowed_amount` - `int` - the amount of TON that should be returned to Pool
* `borrowed_time` - `int` - timestamp of when funds were borrowed
* `validator` - `slice` - address of validator wallet
* `pool` - `slice` - address of pool wallet
* `sudoer` - `slice` - address of the sudoer wallet


---

# 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://ton-ls-protocol.gitbook.io/ton-liquid-staking-protocol/protocol-components/get-method-interfaces.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.
