github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/gov/keeper/expected_keepers.go (about)

     1  package keeper
     2  
     3  import (
     4  	supplyexported "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply/exported"
     5  	stakingexported "github.com/fibonacci-chain/fbc/x/staking/exported"
     6  
     7  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     8  )
     9  
    10  // BankKeeper defines expected bank keeper
    11  type BankKeeper interface {
    12  	GetCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins
    13  
    14  	// TODO remove once governance doesn't require use of accounts
    15  	SendCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) sdk.Error
    16  	SetSendEnabled(ctx sdk.Context, enabled bool)
    17  	SubtractCoins(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coins) (sdk.Coins, sdk.Error)
    18  }
    19  
    20  // StakingKeeper defines expected staking keeper (Validator and Delegator sets)
    21  type StakingKeeper interface {
    22  	// iterate through bonded validators by operator address, execute func for each validator
    23  	// gov use it for getting votes of validator
    24  	IterateBondedValidatorsByPower(sdk.Context,
    25  		func(index int64, validator stakingexported.ValidatorI) (stop bool))
    26  
    27  	// gov use it for getting votes of delegator which has been voted to validator
    28  	Delegator(ctx sdk.Context, delAddr sdk.AccAddress) stakingexported.DelegatorI
    29  }
    30  
    31  // SupplyKeeper defines the supply Keeper for module accounts
    32  type SupplyKeeper interface {
    33  	GetModuleAddress(name string) sdk.AccAddress
    34  	GetModuleAccount(ctx sdk.Context, name string) supplyexported.ModuleAccountI
    35  
    36  	// TODO remove with genesis 2-phases refactor https://github.com/cosmos/cosmos-sdk/issues/2862
    37  	SetModuleAccount(sdk.Context, supplyexported.ModuleAccountI)
    38  
    39  	SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) sdk.Error
    40  	SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) sdk.Error
    41  	SendCoinsFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, amt sdk.Coins) sdk.Error
    42  	BurnCoins(ctx sdk.Context, name string, amt sdk.Coins) sdk.Error
    43  }