github.com/lino-network/lino@v0.6.11/x/price/keeper.go (about) 1 package price 2 3 //go:generate mockery -name PriceKeeper 4 5 import ( 6 sdk "github.com/cosmos/cosmos-sdk/types" 7 8 linotypes "github.com/lino-network/lino/types" 9 "github.com/lino-network/lino/x/price/model" 10 ) 11 12 // PriceKeeper - conversion between Coin/MiniDollar at current consensus price. 13 type PriceKeeper interface { 14 // set initial price of LINO 15 InitGenesis(ctx sdk.Context, initPrice linotypes.MiniDollar) sdk.Error 16 17 // feed price. 18 FeedPrice(ctx sdk.Context, validator linotypes.AccountKey, price linotypes.MiniDollar) sdk.Error 19 20 // UpdatePrice is the hourly event. 21 UpdatePrice(ctx sdk.Context) sdk.Error 22 23 // CoinToMiniDollar - convert minidollar to coin 24 // since internally, every coin have a price of minidollar, so any amount of coin 25 // can all be converted into minidollar. 26 CoinToMiniDollar(ctx sdk.Context, coin linotypes.Coin) (bought linotypes.MiniDollar, err sdk.Error) 27 28 // MiniDollarToCoin - return the maximum coins that @p dollar can buy and 29 // the amount of dollar used. The returned value is a pair of (new token, used previous token). 30 // As there is a minimum price of coin, for dollars that are less than price of one coin 31 // they are not used. 32 MiniDollarToCoin(ctx sdk.Context, dollar linotypes.MiniDollar) (bought linotypes.Coin, used linotypes.MiniDollar, err sdk.Error) 33 34 // Getters 35 CurrPrice(ctx sdk.Context) (linotypes.MiniDollar, sdk.Error) 36 HistoryPrice(ctx sdk.Context) []model.FeedHistory 37 LastFeed(ctx sdk.Context, validator linotypes.AccountKey) (*model.FedPrice, sdk.Error) 38 }