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  }