// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@yield-protocol/utils-v2/src/token/IERC20.sol"; interface IJoin { /// @dev asset managed by this contract function asset() external view returns (address); /// @dev amount of assets held by this contract function storedBalance() external view returns (uint256); /// @dev Add tokens to this contract. function join(address user, uint128 wad) external returns (uint128); /// @dev Remove tokens to this contract. function exit(address user, uint128 wad) external returns (uint128); /// @dev Retrieve any tokens other than the `asset`. Useful for airdropped tokens. function retrieve(IERC20 token, address to) external; }