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  }