## Superfest Missions Assistant
### User stories
1. User types `/help` on the Superfest Discord (user can DM @Superagent if they've used it before)
2. User gets a DM from @SuperAgent with an initial prompt, similar to:
`Hey! I'm SuperAgent, here to help you navigate SuperFest and complete missions at record speed. Provide me with your wallet address to start`
3. User provides wallet address
4. @Superagent analyzes different wallet parameters, and presents a list of missions for the user to select
5. User chooses mission(s)
6. @Superagent guides the user through a conversation to form mission arguments
7. @Superagent prepares the necessary mission transactions for the user and provides a "checkout" link
8. User clicks on the checkout link and gets taken to a dedicated UI that displays a list of pre-populated mission transaction forms
9. User can tweak parameters, and sign and send the prepared transactions
## Missions
<!-- - Lido: Deposit ETH on wstETH Market (Shared with Silo)
- Contract to interact with: https://optimistic.etherscan.io/address/0xc66d2a90c37c873872281a05445ec0e9e82c76a9
- Example of a transaction: https://optimistic.etherscan.io/tx/0x5e11be58a7d4c76805277048a5ec5d91ec4a8bfe76bf79de16a4999bef4f4fa0

** Couldn't find SDK for silo so we might need to interact with contracts directly -->
### Base TODO's
<!-- - [Aerodrome](https://jumper.exchange/es/superfest/rewards-from-aerodrome-on-base/): [DONE]
- Once you have `AERO` you can just lock those in their contract
- [Example transaction](https://basescan.org/tx/0xf62e75a7b769a492ac397a06876fd60f70cf006fa5f728b67fe46cb13afdd0b4)
 -->
- [Beefy](https://jumper.exchange/es/superfest/rewards-from-beefy-on-mode-base-op/)
- Base mission is [Aerodrome <-> USDC Vault](https://app.beefy.com/vault/aerodrome-usdc-aero)
- User may deposit USDC or AERO. We will need to use their SDK or API; haven't found yet how to get the arguments to call their contract (The example they gave is through their UI)
- https://github.com/beefyfinance
- https://docs.beefy.finance/faq/how-to-guides/how-to-deposit-in-a-vault
- [USDC Deposit worked as expected](https://basescan.org/tx/0xe21740fcea7af40d8d9fdeb2d3f41962895e2ad25888b9805e078fc0314fdbba)
- [AERO Deposit fails in UI](https://basescan.org/tx/0xbb06975ec9cfd21e2cdd94cf15eb3c938c1e3651dd4639f63b208da8063ec85f)
- [Contango](https://jumper.exchange/es/superfest/rewards-from-contango-on-base/)
- [Example transaction creating a position for wstETH on MorphoBlue using ETH](https://basescan.org/tx/0xc6f65828ae40c8218bcf50e973511a0461dc3a5d482ff710573907e2dbef40bd)
- [Example transaction creating a position for wstETH on Aave using USDC](https://basescan.org/tx/0x54b5fb43935630168f18f1452bab70c5a6c0cd2985bc83b1877008275c0b19b2)
- Uses multicall under the hood; we need to manually prepare this calldata, haven't found the SDK https://docs.contango.xyz/
- [Lyra](https://jumper.exchange/es/superfest/rewards-from-lyra-on-base/)
- It creates a session key and then sends a signature through their API
- https://lyra.finance/u/developers
- [Example transaction](https://basescan.org/tx/0xb278c5f878ed0300c426529a08b96d545f90c4cd301a5ea5f2b59ba1b2ecfad7)
- [Aave](https://jumper.exchange/es/superfest/rewards-from-aave-on-base/)
- Supply weETH & Borrow USDC/ETH/weETH
- Supply weETH might not work because has achieved max supply
- In order to borrow we want to check if user has collateral & risk of it (Which is different across different assets)
- [Kelp](https://jumper.exchange/es/superfest/rewards-from-kelp-on-base-op/)
- [Add ETH and rsETH](https://aerodrome.finance/deposit?token0=0x4200000000000000000000000000000000000006&token1=0xEDfa23602D0EC14714057867A78d01e94176BEA0&type=-1) to aerodrome
- [Renzo (ezETH Rewards)](https://jumper.exchange/es/superfest/rewards-from-renzo-on-op-base-mode-fraxtal/)
- Couldn't find any mission in base even tho it says is in base?
- [Ether.fi (weETH Rewards)](https://jumper.exchange/es/superfest/rewards-from-etherfi-on-base/)
- Shares borrow/supply weETH w/Aave
- [Deposit ETH/weETH in Aerodrome](https://aerodrome.finance/deposit?token0=0x04C0599Ae5A44757c0af6F9eC3b93da8976c150A&token1=0x4200000000000000000000000000000000000006&type=-1)
- [Uniswap](https://jumper.exchange/es/superfest/rewards-from-uniswap-on-base/)
- Need to add liquidity to ETH <-> wETH Pool. Probably doing this through SDK will be the easiest
<!--
- [Extrafi](https://jumper.exchange/es/superfest/rewards-from-extrafi-on-base/) [DONE]
- [Example transaction lending ETH](https://basescan.org/tx/0x960edb85bf842150aa2447cfc2f40daf39c6ece43f292bce3a602d614cdea9a8)
- [Toros](https://jumper.exchange/es/superfest/rewards-from-toros-on-base/) [DONE]
- [Example transaction buying sUSCDy](https://basescan.org/tx/0xc79b49c0faef298f35b1f98917f2e8df932f72ea07da76c9df33564c7131f7cb)
- We need to calculate the "expectedLiquidityArgument" -->