For integration and development, some updates are needed for external developers to integrate the Velvet codebase. The following checklist outlines the necessary improvements:
[ ] Establish a repeatable testing and development environment
[ ] Enable continuous integration using Github Actions
[ ] Install the package using npm
[ ] Build smart contracts
[ ] Run tests
[ ] Perform a test deployment on Anvil/Hardhat
[ ] Print out the list of deployed contracts and their addresses
[ ] Create an overview of smart contracts
[ ] Develop a UML diagram showing contract interactions
[ ] Improve smart contract documentation
[ ] Add source code comments to contracts explaining:
What the contract is
What it does
How it does it
Which other parts of the system it interacts with
[ ] Provide example code snippets in developer documentation
[ ] How to read the status of one vault
[ ] Current assets and weights
[ ] How to read all available vaults
[ ] How to perform a rebalance
[ ] Options to do trades
[ ] How to do offline signing and other methods
[ ] How to configure vaults and what settings are available
Repeatable, so that you can play around with different parameters for testing (i.e. not mainnet fork)
Uniswap v2 integration test, so there is starting point how to make trades, deposit and redeem on the behalf of users
Example test case: Create vault, deposit from two investors w/different amounts, make a ETH/USD trade on a vault, check fees were correctly included, read the value back for two investors that should now have claim over ETH position
Must be narrative i.e. well commented - nobody wants to reverse engineer uncommented JavaScript
Read all deployed vaults
Read/write vault parameters
Owner
Fees
Get vault depositors
Get vault deposit and redeem events (e.g. since block X)
Velvet Integration Checklist
For integration and development, some updates are needed for external developers to integrate the Velvet codebase. The following checklist outlines the necessary improvements:
[ ] Establish a repeatable testing and development environment
[ ] Create an overview of smart contracts
[ ] Improve smart contract documentation
[ ] Provide example code snippets in developer documentation