github.com/hashgraph/hedera-sdk-go/v2@v2.48.0/token_decimal_map.go (about) 1 package hedera 2 3 /*- 4 * 5 * Hedera Go SDK 6 * 7 * Copyright (C) 2020 - 2024 Hedera Hashgraph, LLC 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 */ 22 import ( 23 "github.com/hashgraph/hedera-protobufs-go/services" 24 ) 25 26 type TokenDecimalMap struct { 27 decimals map[string]uint64 28 } 29 30 // Get returns the balance of the given tokenID 31 func (tokenDecimals *TokenDecimalMap) Get(tokenID TokenID) uint64 { 32 return tokenDecimals.decimals[TokenID{ 33 Shard: tokenID.Shard, 34 Realm: tokenID.Realm, 35 Token: tokenID.Token, 36 }.String()] 37 } 38 39 func _TokenDecimalMapFromProtobuf(pb []*services.TokenBalance) TokenDecimalMap { 40 decimals := make(map[string]uint64) 41 42 for _, tokenDecimal := range pb { 43 decimals[_TokenIDFromProtobuf(tokenDecimal.TokenId).String()] = uint64(tokenDecimal.Decimals) 44 } 45 46 return TokenDecimalMap{decimals} 47 } 48 49 func (tokenDecimals TokenDecimalMap) _ToProtobuf() []*services.TokenBalance { // nolint 50 decimals := make([]*services.TokenBalance, 0) 51 52 for s, t := range tokenDecimals.decimals { 53 token, err := TokenIDFromString(s) 54 if err != nil { 55 return []*services.TokenBalance{} 56 } 57 decimals = append(decimals, &services.TokenBalance{ 58 TokenId: token._ToProtobuf(), 59 Decimals: uint32(t), 60 }) 61 } 62 63 return decimals 64 }