interface MyInterface {
function setData(uint _data) external;
function getData() external view returns (uint);
}
contract MyContract is MyInterface {
uint private data;
function setData(uint _data) external override {
data = _data;
}
function getData() external view override returns (uint) {
return data;
}
}
Libraries are similar to contracts but are meant to hold reusable code. They cannot hold state.