github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/bank/internal/keeperadapter/bankkeeper_adapter.go (about) 1 package keeperadapter 2 3 import ( 4 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 5 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/keeper" 7 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/bank/internal/types" 8 ) 9 10 var ( 11 _ CM40ViewKeeper = BankKeeperAdapter{} 12 ) 13 14 type CM40ViewKeeper interface { 15 IsSendEnabledCoins(ctx sdk.Context, coins ...sdk.Coin) error 16 GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin 17 BlockedAddr(addr sdk.AccAddress) bool 18 HasBalance(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coin) bool 19 GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins 20 } 21 22 // BankKeeperAdapter is used in wasm module 23 type BankKeeperAdapter struct { 24 keeper.Keeper 25 } 26 27 func NewBankKeeperAdapter(bankKeeper keeper.Keeper) *BankKeeperAdapter { 28 return &BankKeeperAdapter{Keeper: bankKeeper} 29 } 30 31 func (adapter BankKeeperAdapter) BlockedAddr(addr sdk.AccAddress) bool { 32 return adapter.Keeper.BlacklistedAddr(addr) 33 } 34 35 func (adapter BankKeeperAdapter) IsSendEnabledCoins(ctx sdk.Context, coins ...sdk.Coin) error { 36 if !adapter.Keeper.GetSendEnabled(ctx) { 37 return sdkerrors.Wrapf(types.ErrSendDisabled, "transfers are currently disabled") 38 } 39 // todo weather allow different form fibo coin send enable 40 return nil 41 } 42 43 func (adapter BankKeeperAdapter) GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins { 44 return adapter.Keeper.GetCoins(ctx, addr) 45 } 46 47 func (adapter BankKeeperAdapter) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { 48 coins := adapter.Keeper.GetCoins(ctx, addr) 49 return sdk.Coin{ 50 Amount: coins.AmountOf(denom), 51 Denom: denom, 52 } 53 } 54 55 func (adapter BankKeeperAdapter) HasBalance(ctx sdk.Context, addr sdk.AccAddress, amt sdk.Coin) bool { 56 return adapter.GetBalance(ctx, addr, amt.Denom).IsGTE(amt) 57 }