pragma solidity ^0.7.0; import { TokenInterface } from "../../common/interfaces.sol"; interface ManagerLike { function cdpCan(address, uint, address) external view returns (uint); function ilks(uint) external view returns (bytes32); function last(address) external view returns (uint); function count(address) external view returns (uint); function owns(uint) external view returns (address); function urns(uint) external view returns (address); function vat() external view returns (address); function open(bytes32, address) external returns (uint); function give(uint, address) external; function frob(uint, int, int) external; function flux(uint, address, uint) external; function move(uint, address, uint) external; } interface VatLike { function can(address, address) external view returns (uint); function ilks(bytes32) external view returns (uint, uint, uint, uint, uint); function dai(address) external view returns (uint); function urns(bytes32, address) external view returns (uint, uint); function frob( bytes32, address, address, address, int, int ) external; function hope(address) external; function move(address, address, uint) external; function gem(bytes32, address) external view returns (uint); } interface TokenJoinInterface { function dec() external returns (uint); function gem() external returns (TokenInterface); function join(address, uint) external payable; function exit(address, uint) external; } interface DaiJoinInterface { function vat() external returns (VatLike); function dai() external returns (TokenInterface); function join(address, uint) external payable; function exit(address, uint) external; } interface JugLike { function drip(bytes32) external returns (uint); } interface PotLike { function pie(address) external view returns (uint); function drip() external returns (uint); function join(uint) external; function exit(uint) external; }