github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/token/types/token.go (about)

     1  package types
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  )
     8  
     9  type Token struct {
    10  	Description         string         `json:"description" v2:"description"`                     // e.g. "OK Group Global Utility Token"
    11  	Symbol              string         `json:"symbol" v2:"symbol"`                               // e.g. "fibo"
    12  	OriginalSymbol      string         `json:"original_symbol" v2:"original_symbol"`             // e.g. "fibo"
    13  	WholeName           string         `json:"whole_name" v2:"whole_name"`                       // e.g. "fibo"
    14  	OriginalTotalSupply sdk.Dec        `json:"original_total_supply" v2:"original_total_supply"` // e.g. 1000000000.00000000
    15  	Type                int            `json:"type"`                                             //e.g. 1 common token, 2 interest token
    16  	Owner               sdk.AccAddress `json:"owner" v2:"owner"`                                 // e.g. fb1cftp8q8g4aa65nw9s5trwexe77d9t6cr8ndu02
    17  	Mintable            bool           `json:"mintable" v2:"mintable"`                           // e.g. false
    18  }
    19  
    20  func (token Token) String() string {
    21  	b, err := json.Marshal(token)
    22  	if err != nil {
    23  		return "{}"
    24  	}
    25  	return string(b)
    26  }
    27  
    28  type TokenResp struct {
    29  	Description         string         `json:"description" v2:"description"`
    30  	Symbol              string         `json:"symbol" v2:"symbol"`
    31  	OriginalSymbol      string         `json:"original_symbol" v2:"original_symbol"`
    32  	WholeName           string         `json:"whole_name" v2:"whole_name"`
    33  	OriginalTotalSupply sdk.Dec        `json:"original_total_supply" v2:"original_total_supply"`
    34  	Type                int            `json:"type"`
    35  	Owner               sdk.AccAddress `json:"owner" v2:"owner"`
    36  	Mintable            bool           `json:"mintable" v2:"mintable"`
    37  	TotalSupply         sdk.Dec        `json:"total_supply" v2:"total_supply"`
    38  }
    39  
    40  func (token TokenResp) String() string {
    41  	b, err := json.Marshal(token)
    42  	if err != nil {
    43  		return "{}"
    44  	}
    45  	return string(b)
    46  }
    47  
    48  type Tokens []TokenResp
    49  
    50  func (tokens Tokens) String() string {
    51  	b, err := json.Marshal(tokens)
    52  	if err != nil {
    53  		return "[{}]"
    54  	}
    55  	return string(b)
    56  }
    57  
    58  type Currency struct {
    59  	Description string  `json:"description"`
    60  	Symbol      string  `json:"symbol"`
    61  	TotalSupply sdk.Dec `json:"total_supply"`
    62  }
    63  
    64  func (currency Currency) String() string {
    65  	b, err := json.Marshal(currency)
    66  	if err != nil {
    67  		return "[{}]"
    68  	}
    69  	return string(b)
    70  }
    71  
    72  type Transfer struct {
    73  	To     string `json:"to"`
    74  	Amount string `json:"amount"`
    75  }
    76  
    77  type TransferUnit struct {
    78  	To    sdk.AccAddress `json:"to"`
    79  	Coins sdk.SysCoins   `json:"coins"`
    80  }
    81  
    82  type CoinsInfo []CoinInfo
    83  
    84  func (d CoinsInfo) Len() int           { return len(d) }
    85  func (d CoinsInfo) Swap(i, j int)      { d[i], d[j] = d[j], d[i] }
    86  func (d CoinsInfo) Less(i, j int) bool { return d[i].Symbol < d[j].Symbol }
    87  
    88  type AccountResponse struct {
    89  	Address    string    `json:"address"`
    90  	Currencies CoinsInfo `json:"currencies"`
    91  }
    92  
    93  func NewAccountResponse(addr string) AccountResponse {
    94  	var accountResponse AccountResponse
    95  	accountResponse.Address = addr
    96  	accountResponse.Currencies = []CoinInfo{}
    97  	return accountResponse
    98  }
    99  
   100  type CoinInfo struct {
   101  	Symbol    string `json:"symbol" v2:"currency"`
   102  	Available string `json:"available" v2:"available"`
   103  	Locked    string `json:"locked" v2:"locked"`
   104  }
   105  
   106  func NewCoinInfo(symbol, available, locked string) *CoinInfo {
   107  	return &CoinInfo{
   108  		Symbol:    symbol,
   109  		Available: available,
   110  		Locked:    locked,
   111  	}
   112  }
   113  
   114  type AccountParam struct {
   115  	Symbol string `json:"symbol"`
   116  	Show   string `json:"show"`
   117  }
   118  
   119  type AccountParamV2 struct {
   120  	Currency string `json:"currency"`
   121  	HideZero string `json:"hide_zero"`
   122  }
   123  
   124  type AccCoins struct {
   125  	Acc   sdk.AccAddress `json:"address"`
   126  	Coins sdk.SysCoins   `json:"coins"`
   127  }