package types import ( "encoding/json" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" ) // GenesisState - all staking state that must be provided at genesis type GenesisState struct { Params Params `json:"params" yaml:"params"` LastTotalPower sdk.Int `json:"last_total_power" yaml:"last_total_power"` LastValidatorPowers []LastValidatorPower `json:"last_validator_powers" yaml:"last_validator_powers"` Validators Validators `json:"validators" yaml:"validators"` Delegations Delegations `json:"delegations" yaml:"delegations"` UnbondingDelegations []UnbondingDelegation `json:"unbonding_delegations" yaml:"unbonding_delegations"` Redelegations []Redelegation `json:"redelegations" yaml:"redelegations"` Exported bool `json:"exported" yaml:"exported"` } // LastValidatorPower required for validator set update logic type LastValidatorPower struct { Address sdk.ValAddress Power int64 } // NewGenesisState creates a new GenesisState instanc e func NewGenesisState(params Params, validators []Validator, delegations []Delegation) GenesisState { return GenesisState{ Params: params, Validators: validators, Delegations: delegations, } } // DefaultGenesisState gets the raw genesis raw message for testing func DefaultGenesisState() GenesisState { return GenesisState{ Params: DefaultParams(), } } // GetGenesisStateFromAppState returns x/staking GenesisState given raw application // genesis state. func GetGenesisStateFromAppState(cdc *codec.Codec, appState map[string]json.RawMessage) GenesisState { var genesisState GenesisState if appState[ModuleName] != nil { cdc.MustUnmarshalJSON(appState[ModuleName], &genesisState) } return genesisState }