-
IDiamondCut.sol
- Define cut structs and interfaces
- Facet cut actions (Add, Replace, Remove)
-
DiamondStorage.sol
- Diamond storage structure
- Slot management
- Storage layout documentation
-
DiamondBase.sol
- Core diamond functionality
- Delegation logic
- Error handling
ISnackState.sol
- Core interfacesSnackStateStorage.sol
- State storage layoutSnackStateFacet.sol
- Implementation- Global state management
- Pet state transitions
- Emergency controls
ISnackPet.sol
- Pet interfacesSnackPetStorage.sol
- Pet data structureSnackPetFacet.sol
- Implementation- Pet initialization
- Emotion tracking
- State updates
ISnackSavings.sol
- Savings interfacesSnackSavingsStorage.sol
- Financial storageSnackSavingsFacet.sol
- Implementation- Deposit handling
- Progress tracking
- Safe integration
ISnackYield.sol
- Yield interfacesSnackYieldStorage.sol
- Strategy storageSnackYieldFacet.sol
- Implementation- Protocol integrations (Kiln, Lido, etc)
- Yield strategies
- Rebalancing logic
-
SnackFactory.sol
- Diamond deployment
- Initial facet setup
- Access control
-
SnackInit.sol
- Initialization logic
- Configuration setup
- Initial state
-
Safe Protocol
interface ISafe { function execTransaction(...) external; function isOwner(address) external view returns (bool); }
-
Kiln Integration
interface IKiln { function stake() external payable; function withdraw(uint256) external; }
-
External Protocols (COW, Lido)
interface IProtocolIntegration { function deposit(uint256) external payable; function getYield() external view returns (uint256); }
-
Unit Tests
- Individual facet functionality
- Storage layout tests
- State transitions
-
Integration Tests
- Cross-facet interactions
- Protocol integrations
- Full user flows
-
Deployment Tests
- Factory deployment
- Initialization
- Upgrades
- Storage collision prevention
- Access control granularity
- Safe integration validation
- Rate limiting
- Emergency stops
- Deploy core diamond
- Deploy state facet
- Deploy pet facet
- Deploy savings facet
- Deploy yield facet
- Initialize protocol
- Configure external integrations