func (k Keeper) GetPacketReceipt(ctx sdk.Context, sourceChain, destChain string, sequence uint64) (string, bool) {
	store := ctx.KVStore(k.storeKey)
	bz := store.Get(host.PacketReceiptKey(sourceChain, destChain, sequence))
	if bz == nil {
		return "", false
	}
	return string(bz), true
}
GetPacketReceipt gets a packet receipt from the store
package keeper
import (
	"strconv"
	"strings"
	"github.com/tendermint/tendermint/libs/log"
	db "github.com/tendermint/tm-db"
	"github.com/cosmos/cosmos-sdk/codec"
	sdk "github.com/cosmos/cosmos-sdk/types"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
	"github.com/bianjieai/tibc-go/modules/tibc/core/04-packet/types"
	host "github.com/bianjieai/tibc-go/modules/tibc/core/24-host"
	"github.com/bianjieai/tibc-go/modules/tibc/core/exported"
)
type Keeper struct {
	storeKey      sdk.StoreKey
	cdc           codec.BinaryCodec
	clientKeeper  types.ClientKeeper
	routingKeeper types.RoutingKeeper
}
func NewKeeper(
	cdc codec.BinaryCodec, key sdk.StoreKey,
	clientKeeper types.ClientKeeper,
	routingKeeper types.RoutingKeeper,
) Keeper {
	return Keeper{
		storeKey:      key,
		cdc:           cdc,
		clientKeeper:  clientKeeper,
		routingKeeper: routingKeeper,
	}
}
func (k Keeper) Logger(ctx sdk.Context) log.Logger {
	return ctx.Logger().With("module", "x/"+host.ModuleName+"/"+types.SubModuleName)
}
func (k Keeper) GetNextSequenceSend(ctx sdk.Context, sourceChain, destChain string) uint64 {
	store := ctx.KVStore(k.storeKey)
	bz := store.Get(host.NextSequenceSendKey(sourceChain, destChain))
	if bz == nil {
		return 1
	}
	return sdk.BigEndianToUint64(bz)
}
func (k Keeper) SetNextSequenceSend(ctx sdk.Context, sourceChain, destChain string, sequence uint64) {
	store := ctx.KVStore(k.storeKey)
	bz := sdk.Uint64ToBigEndian(sequence)
	store.Set(host.NextSequenceSendKey(sourceChain, destChain), bz)
}