package app

import (
	"context"

	"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
)

type ServerPublisher interface {
	CmdSync(ctx context.Context, payloads ...domain.SyncServersCmdPayload) error
	EventSynced(ctx context.Context, payloads ...domain.ServerSyncedEventPayload) error
}

type TribePublisher interface {
	EventSynced(ctx context.Context, payloads ...domain.TribesSyncedEventPayload) error
}

type PlayerPublisher interface {
	EventSynced(ctx context.Context, payloads ...domain.PlayersSyncedEventPayload) error
}

type VillagePublisher interface {
	EventSynced(ctx context.Context, payloads ...domain.VillagesSyncedEventPayload) error
}

type EnnoblementPublisher interface {
	CmdSync(ctx context.Context, payloads ...domain.SyncEnnoblementsCmdPayload) error
	EventSynced(ctx context.Context, payloads ...domain.EnnoblementsSyncedEventPayload) error
}
