package binancex import ( "strings" "me.thuanle/bbot/internal/configs/binance" "me.thuanle/bbot/internal/data" "me.thuanle/bbot/internal/utils/stringx" ) func Token2FutureSymbols(token string) []string { var syms []string if !stringx.IsAlphaNumeric(token) { return syms } token = strings.ToUpper(token) for _, prefix := range checkingPrefixList { prefix = strings.ToUpper(prefix) s := prefix + token if data.Market.IsFuturesPair(s) { syms = append(syms, s) continue } for _, suffix := range binance.SymbolSuffixList { suffix = strings.ToUpper(suffix) abbr := strings.ToUpper(binance.SymbolSuffixMap[suffix]) sym := s + suffix if data.Market.IsFuturesPair(sym) { syms = append(syms, sym) continue } symAbr, found := stringx.ReplaceSuffix(s, abbr, suffix) if found && data.Market.IsFuturesPair(symAbr) { syms = append(syms, symAbr) continue } } } return syms } func Token2SpotSymbols(token string) []string { futureSymbols := Token2FutureSymbols(token) spots := make([]string, 0, len(futureSymbols)+1) seen := make(map[string]struct{}, len(futureSymbols)+1) for _, futureSymbol := range futureSymbols { spotSymbol := Future2SpotSymbol(futureSymbol) if _, ok := seen[spotSymbol]; ok { continue } seen[spotSymbol] = struct{}{} spots = append(spots, spotSymbol) } spotOnly := strings.ToUpper(token) + "USDT" if data.Market.IsSpotPair(spotOnly) { if _, ok := seen[spotOnly]; !ok { spots = append(spots, spotOnly) } } return spots }