var map[Token]string {
WETH: "WETH",
USDC: "USDC",
...
//do not include Stable and Native
}
func (t Token) Elements() (elements []string) {
for i := 0; i < 32; i++ {
bit := 1<<i
if name, ok := map[bit]; ok && t & bit != 0 {
elements = append(elements, name)
}
}
}
func (v ...) CheckOrder(token0, token1 Token) bool {
return checkToken(v.Token0, token0) || checkToken(v.Token1, token1)
}
func checkToken(token string, mask Token) bool {
elements := mask.Elements()
return token in elements
}