code.vegaprotocol.io/vega@v0.79.0/datanode/entities/time_weighted_notional_position.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 entities 17 18 import ( 19 "time" 20 21 "code.vegaprotocol.io/vega/libs/num" 22 v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" 23 eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" 24 ) 25 26 type TimeWeightedNotionalPosition struct { 27 EpochSeq uint64 28 AssetID AssetID 29 PartyID PartyID 30 GameID GameID 31 TimeWeightedNotionalPosition num.Decimal 32 VegaTime time.Time 33 } 34 35 func TimeWeightedNotionalPositionFromProto(event *eventspb.TimeWeightedNotionalPositionUpdated, vegaTime time.Time) (*TimeWeightedNotionalPosition, error) { 36 twNotionalPosition, err := num.DecimalFromString(event.TimeWeightedNotionalPosition) 37 if err != nil { 38 return nil, err 39 } 40 return &TimeWeightedNotionalPosition{ 41 EpochSeq: event.EpochSeq, 42 AssetID: AssetID(event.Asset), 43 PartyID: PartyID(event.Party), 44 GameID: GameID(event.GameId), 45 TimeWeightedNotionalPosition: twNotionalPosition, 46 VegaTime: vegaTime, 47 }, nil 48 } 49 50 func (tw *TimeWeightedNotionalPosition) ToProto() *v2.TimeWeightedNotionalPosition { 51 return &v2.TimeWeightedNotionalPosition{ 52 AssetId: tw.AssetID.String(), 53 PartyId: tw.PartyID.String(), 54 GameId: tw.GameID.String(), 55 AtEpoch: tw.EpochSeq, 56 TimeWeightedNotionalPosition: tw.TimeWeightedNotionalPosition.String(), 57 LastUpdated: tw.VegaTime.UnixNano(), 58 } 59 }