The purpose of the vault ADO is to provide central funds for an app. This means, it will allow the app to deposit funds to the vault, and these funds can be proxied to various yield strategies.
Since the Terra crash, no yield strategies are currently available.
Funds can be deposited to the vault and a record of the deposited funds is stored. Then strategies can be added by the contract owner at any point by calling UpdateStrategy.
Deposits can be made to yield strategies in partial fashion, sending part of what you would like to deposit and taking the rest from what the vault is currently holding. For example, a wallet could have 10 JUNO held within the vault, they wish to deposit 50 JUNO to a yield strategy, in this case they can send 40 JUNO with a deposit message and 10 JUNO will be removed from their deposits and sent to the yield strategy contract.
Withdrawals are done in similar fashion using our Withdrawal struct. Withdrawals can be made from the vault itself or from its according yield strategies.
Deposits funds to the vault/strategy by sending them to the contract.
The AndromedaMsg needs to be of type receive to deposit funds to the vault. It will then execute a Deposit with the recipient being the sender, the amount is the amount of funds sent. The funds are deposited to the central vault.
If the AndromedaMsg is not of type receive, then it is used to execute one of the default AndrReceive messages.
Allocates funds from the vault to the specified strategy for the specified recipient. If the recipient is not specified, then it will default to the sender.