code.vegaprotocol.io/vega@v0.79.0/core/events/delegation.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package events 17 18 import ( 19 "context" 20 21 "code.vegaprotocol.io/vega/libs/num" 22 eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" 23 ) 24 25 type DelegationBalance struct { 26 *Base 27 Party string 28 NodeID string 29 Amount *num.Uint 30 EpochSeq string 31 } 32 33 func NewDelegationBalance(ctx context.Context, party, nodeID string, amount *num.Uint, epochSeq string) *DelegationBalance { 34 return &DelegationBalance{ 35 Base: newBase(ctx, DelegationBalanceEvent), 36 Party: party, 37 NodeID: nodeID, 38 Amount: amount, 39 EpochSeq: epochSeq, 40 } 41 } 42 43 func (db DelegationBalance) Proto() eventspb.DelegationBalanceEvent { 44 return eventspb.DelegationBalanceEvent{ 45 Party: db.Party, 46 NodeId: db.NodeID, 47 Amount: db.Amount.String(), 48 EpochSeq: db.EpochSeq, 49 } 50 } 51 52 func (db DelegationBalance) StreamMessage() *eventspb.BusEvent { 53 p := db.Proto() 54 busEvent := newBusEventFromBase(db.Base) 55 busEvent.Event = &eventspb.BusEvent_DelegationBalance{ 56 DelegationBalance: &p, 57 } 58 return busEvent 59 } 60 61 func DelegationBalanceEventFromStream(ctx context.Context, be *eventspb.BusEvent) *DelegationBalance { 62 event := be.GetDelegationBalance() 63 if event == nil { 64 return nil 65 } 66 67 amt, err := num.UintFromString(event.GetAmount(), 10) 68 if err { 69 return nil 70 } 71 72 return &DelegationBalance{ 73 Base: newBaseFromBusEvent(ctx, DelegationBalanceEvent, be), 74 Party: event.GetParty(), 75 NodeID: event.GetNodeId(), 76 Amount: amt, 77 EpochSeq: event.GetEpochSeq(), 78 } 79 }