* service-mango-health: add a new service that compute health for all mango accounts and persist an history in postgres sql
(cherry picked from commit 6aa8a883f4)
* add RaydiumCLMM oracle type
* add deserializing raydium pool state
* test: consolidate clmm oralce unit tests
* test: add failure check to test_orca_fallback_oracle
* test: add test_raydium_fallback_oracle
* restore get_quote_oracle()
* ensure RaydiumCLMM is a valid fallback type
- apply recurring settle allowance constraint also in
available_settle_limit
- bank constraints on util0, util1
- cleanup
- perp liq: take over oneshot and recurring limits separately
(cherry picked from commit efe4a1ae3d)
- apply recurring settle allowance constraint also in
available_settle_limit
- bank constraints on util0, util1
- cleanup
- perp liq: take over oneshot and recurring limits separately
liquidator: add a way to restrict token accepted by the liquidator
- add allow/forbid list of token for liquidation & conditional token swap triggering
- add allow/forbid list for perp market liquidation
- housekeeping: extract cli args to a dedicated file
- move more hardcoded thing to config and stop using token name (replace with token index)
rust client:
- add serum3 place order to command
- add serum3 create open orders command
- add serum3 close open orders command
- auto create serum3 open orders if needed when placing a new order
- auto close serum3 slot if needed when placing a new order & also close unused token if needed to place a serum3 order
- New permissionless instruction to regularly charge collateral fees
- Bank and group configuration to set rate and interval
- Keeper addition to call the instruction
* perp: auto close perp market account when needing to open a new one with no slot available
* rust_client: do not send health accounts when deactivating a perp position (not needed on program side)
* rust_client: add perp place order command
Previously serum3_place_order would fail when deposit limits were
exhausted on the payer token side. Now the failure only happens when
payer tokens need to be borrowed.
(cherry picked from commit a4cddf3129)