code.vegaprotocol.io/vega@v0.79.0/core/referral/dependencies.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 referral 17 18 import ( 19 "context" 20 "time" 21 22 "code.vegaprotocol.io/vega/core/events" 23 "code.vegaprotocol.io/vega/core/types" 24 "code.vegaprotocol.io/vega/libs/num" 25 ) 26 27 //go:generate go run github.com/golang/mock/mockgen -destination mocks/mocks.go -package mocks code.vegaprotocol.io/vega/core/referral EpochEngine,Broker,TimeService,MarketActivityTracker,StakingBalances 28 29 type StakingBalances interface { 30 GetAvailableBalance(party string) (*num.Uint, error) 31 } 32 33 type TimeService interface { 34 GetTimeNow() time.Time 35 } 36 37 // EpochEngine is used to know when to apply the team switches. 38 type EpochEngine interface { 39 NotifyOnEpoch(func(context.Context, types.Epoch), func(context.Context, types.Epoch)) 40 } 41 42 // Broker is used to notify administrative actions on teams and members. 43 type Broker interface { 44 Send(events.Event) 45 } 46 47 // MarketActivityTracker is used to retrieve the trading statistics about a party 48 // to compute referral program related data. 49 type MarketActivityTracker interface { 50 NotionalTakerVolumeForParty(string) *num.Uint 51 }