package utils import ( "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/address" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/balance" "github.com/iotaledger/goshimmer/dapps/valuetransfers/packages/transaction" ) // ParseTransaction handle transaction json object. func ParseTransaction(t *transaction.Transaction) (txn Transaction) { var inputs []string var outputs []Output // process inputs t.Inputs().ForEachAddress(func(currentAddress address.Address) bool { inputs = append(inputs, currentAddress.String()) return true }) // process outputs: address + balance t.Outputs().ForEach(func(address address.Address, balances []*balance.Balance) bool { var b []Balance for _, balance := range balances { b = append(b, Balance{ Value: balance.Value(), Color: balance.Color().String(), }) } t := Output{ Address: address.String(), Balances: b, } outputs = append(outputs, t) return true }) return Transaction{ Inputs: inputs, Outputs: outputs, Signature: t.SignatureBytes(), DataPayload: t.GetDataPayload(), } } // Transaction holds the information of a transaction. type Transaction struct { Inputs []string `json:"inputs"` Outputs []Output `json:"outputs"` Signature []byte `json:"signature"` DataPayload []byte `json:"data_payload"` } // Output consists an address and balances type Output struct { Address string `json:"address"` Balances []Balance `json:"balances"` } // Balance holds the value and the color of token type Balance struct { Value int64 `json:"value"` Color string `json:"color"` } // InclusionState represents the different states of an OutputID type InclusionState struct { Solid bool `json:"solid,omitempty"` Confirmed bool `json:"confirmed,omitempty"` Rejected bool `json:"rejected,omitempty"` Liked bool `json:"liked,omitempty"` }