package keeper

import (
	sdk "git.cw.tr/mukan-network/mukan-sdk/types"

	channeltypes "git.cw.tr/mukan-network/mukan-ibc/modules/core/04-channel/types"
	"git.cw.tr/mukan-network/mukan-ibc/modules/core/exported"
)

type PacketHandler interface {
	RecvPacket(
		ctx sdk.Context,
		packet channeltypes.Packet,
		proof []byte,
		proofHeight exported.Height) (string, error)

	WriteAcknowledgement(
		ctx sdk.Context,
		packet exported.PacketI,
		acknowledgement exported.Acknowledgement,
	) error

	AcknowledgePacket(
		ctx sdk.Context,
		packet channeltypes.Packet,
		acknowledgement []byte,
		proof []byte,
		proofHeight exported.Height,
	) (string, error)

	TimeoutPacket(
		ctx sdk.Context,
		packet channeltypes.Packet,
		proof []byte,
		proofHeight exported.Height,
		nextSequenceRecv uint64,
	) (string, error)
}
