-
Notifications
You must be signed in to change notification settings - Fork 352
/
pricefeed_genesis_builder.go
61 lines (52 loc) · 1.8 KB
/
pricefeed_genesis_builder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package testutil
import (
"time"
sdkmath "cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
hardtypes "github.com/kava-labs/kava/x/hard/types"
pricefeedtypes "github.com/kava-labs/kava/x/pricefeed/types"
)
// lendGenesisBuilder builds the Hard and Pricefeed genesis states for setting up Kava Lend
type lendGenesisBuilder struct {
hardMarkets []hardtypes.MoneyMarket
pfMarkets []pricefeedtypes.Market
prices []pricefeedtypes.PostedPrice
}
func NewLendGenesisBuilder() lendGenesisBuilder {
return lendGenesisBuilder{}
}
func (b lendGenesisBuilder) Build() (hardtypes.GenesisState, pricefeedtypes.GenesisState) {
hardGS := hardtypes.DefaultGenesisState()
hardGS.Params.MoneyMarkets = b.hardMarkets
pricefeedGS := pricefeedtypes.DefaultGenesisState()
pricefeedGS.Params.Markets = b.pfMarkets
pricefeedGS.PostedPrices = b.prices
return hardGS, pricefeedGS
}
func (b lendGenesisBuilder) WithMarket(denom, spotMarketId string, price sdk.Dec) lendGenesisBuilder {
// add hard money market
b.hardMarkets = append(b.hardMarkets,
hardtypes.NewMoneyMarket(
denom,
hardtypes.NewBorrowLimit(false, sdk.NewDec(1e15), sdk.MustNewDecFromStr("0.6")),
spotMarketId,
sdkmath.NewInt(1e6),
hardtypes.NewInterestRateModel(sdk.MustNewDecFromStr("0.05"), sdk.MustNewDecFromStr("2"), sdk.MustNewDecFromStr("0.8"), sdk.MustNewDecFromStr("10")),
sdk.MustNewDecFromStr("0.05"),
sdk.ZeroDec(),
),
)
// add pricefeed
b.pfMarkets = append(b.pfMarkets,
pricefeedtypes.Market{MarketID: spotMarketId, BaseAsset: denom, QuoteAsset: "usd", Oracles: []sdk.AccAddress{}, Active: true},
)
b.prices = append(b.prices,
pricefeedtypes.PostedPrice{
MarketID: spotMarketId,
OracleAddress: sdk.AccAddress{},
Price: price,
Expiry: time.Now().Add(100 * time.Hour),
},
)
return b
}