mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-02 17:31:39 +00:00
135 lines
3.3 KiB
Go
Executable File
135 lines
3.3 KiB
Go
Executable File
package dex
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
|
|
channeltypes "github.com/cosmos/ibc-go/v8/modules/core/04-channel/types"
|
|
porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types"
|
|
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
|
|
"github.com/sonr-io/sonr/x/dex/keeper"
|
|
)
|
|
|
|
var _ porttypes.IBCModule = (*IBCModule)(nil)
|
|
|
|
// IBCModule implements the IBC module interface for DEX
|
|
type IBCModule struct {
|
|
keeper keeper.Keeper
|
|
}
|
|
|
|
// NewIBCModule creates a new IBCModule given the keeper
|
|
func NewIBCModule(k keeper.Keeper) IBCModule {
|
|
return IBCModule{
|
|
keeper: k,
|
|
}
|
|
}
|
|
|
|
// OnChanOpenInit implements the IBCModule interface
|
|
func (im IBCModule) OnChanOpenInit(
|
|
ctx sdk.Context,
|
|
order channeltypes.Order,
|
|
connectionHops []string,
|
|
portID string,
|
|
channelID string,
|
|
chanCap *capabilitytypes.Capability,
|
|
counterparty channeltypes.Counterparty,
|
|
version string,
|
|
) (string, error) {
|
|
// Delegate to keeper's ICA callback handler
|
|
if err := im.keeper.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, counterparty, version); err != nil {
|
|
return "", err
|
|
}
|
|
return version, nil
|
|
}
|
|
|
|
// OnChanOpenTry implements the IBCModule interface
|
|
func (im IBCModule) OnChanOpenTry(
|
|
ctx sdk.Context,
|
|
order channeltypes.Order,
|
|
connectionHops []string,
|
|
portID,
|
|
channelID string,
|
|
chanCap *capabilitytypes.Capability,
|
|
counterparty channeltypes.Counterparty,
|
|
counterpartyVersion string,
|
|
) (string, error) {
|
|
// TODO: Implement ICA Controller channel handshake
|
|
return counterpartyVersion, nil
|
|
}
|
|
|
|
// OnChanOpenAck implements the IBCModule interface
|
|
func (im IBCModule) OnChanOpenAck(
|
|
ctx sdk.Context,
|
|
portID,
|
|
channelID string,
|
|
counterpartyChannelID string,
|
|
counterpartyVersion string,
|
|
) error {
|
|
// TODO: Handle ICA Controller channel acknowledgment
|
|
return nil
|
|
}
|
|
|
|
// OnChanOpenConfirm implements the IBCModule interface
|
|
func (im IBCModule) OnChanOpenConfirm(
|
|
ctx sdk.Context,
|
|
portID,
|
|
channelID string,
|
|
) error {
|
|
// TODO: Finalize ICA Controller channel setup
|
|
return nil
|
|
}
|
|
|
|
// OnChanCloseInit implements the IBCModule interface
|
|
func (im IBCModule) OnChanCloseInit(
|
|
ctx sdk.Context,
|
|
portID,
|
|
channelID string,
|
|
) error {
|
|
// TODO: Handle ICA Controller channel close
|
|
return nil
|
|
}
|
|
|
|
// OnChanCloseConfirm implements the IBCModule interface
|
|
func (im IBCModule) OnChanCloseConfirm(
|
|
ctx sdk.Context,
|
|
portID,
|
|
channelID string,
|
|
) error {
|
|
// TODO: Confirm ICA Controller channel close
|
|
return nil
|
|
}
|
|
|
|
// OnRecvPacket implements the IBCModule interface
|
|
func (im IBCModule) OnRecvPacket(
|
|
ctx sdk.Context,
|
|
modulePacket channeltypes.Packet,
|
|
relayer sdk.AccAddress,
|
|
) ibcexported.Acknowledgement {
|
|
// ICA Controller does not receive packets
|
|
return channeltypes.NewErrorAcknowledgement(
|
|
fmt.Errorf("ICA controller does not receive packets"),
|
|
)
|
|
}
|
|
|
|
// OnAcknowledgementPacket implements the IBCModule interface
|
|
func (im IBCModule) OnAcknowledgementPacket(
|
|
ctx sdk.Context,
|
|
modulePacket channeltypes.Packet,
|
|
acknowledgement []byte,
|
|
relayer sdk.AccAddress,
|
|
) error {
|
|
// TODO: Handle ICA packet acknowledgments
|
|
return nil
|
|
}
|
|
|
|
// OnTimeoutPacket implements the IBCModule interface
|
|
func (im IBCModule) OnTimeoutPacket(
|
|
ctx sdk.Context,
|
|
modulePacket channeltypes.Packet,
|
|
relayer sdk.AccAddress,
|
|
) error {
|
|
// TODO: Handle ICA packet timeouts
|
|
return nil
|
|
}
|