Compatibility considerations when implementing the token contract that will work with your governance.
address indexed delegate,
address indexed delegator,
address indexed fromDelegate,
address indexed toDelegate
address indexed from,
address indexed to,
Your token contract should implement these functions, if you are using an ERC20 token, you can use the ERC20Votes or the ERC20VotesComp extensions from the OpenZeppelin library to add these to your contract.
If you're using an ERC71 you will need a custom implementation that uses the events signatures mentioned above and these functions signatures or do something similar to what Nouns DAO did with their ERC721Checkpointable contract.
function delegate(address delegatee)
function getVotes(address account) public view returns (uint256)