package ports

import (
	"context"

	"git.maximotejeda.com/maximo/tgb-user/internal/adapters/db"
	"git.maximotejeda.com/maximo/tgb-user/internal/application/core/domain"
)

type APIPort interface {
	Create(context.Context, *domain.User) (bool, error)
	Get(context.Context, int64) (*domain.User, error)
	Edit(context.Context, *domain.User) (bool, error)
	Delete(context.Context, int64) (bool, error)
	AddBot(context.Context, int64, string) (bool, error)
	DeleteBot(context.Context, int64, string) (bool, error)
	GetBots(context.Context, int64) ([]*domain.Bot, error)
	GetAllBotsUsers(context.Context, string) ([]*domain.User, error)
	GetAllBots(context.Context) ([]*domain.Bot, error)
	CreateBot(context.Context, string) (bool, error)
	CreateAccessRequest(context.Context, int64, string) (bool, error)
	GrantAccess(context.Context, int64, string) (bool, error)
	BanUser(context.Context, int64, int64, string) (bool, error)
	UnBanUser(context.Context, int64, string) (bool, error)
	GetAllAccessRequest(context.Context, string) ([]*db.BotAccessRequest, error)
	GetAllBannedUsers(context.Context, string) ([]*db.BotBannedAccess, error)
	GetAccessRequest(context.Context, int64) ([]*db.BotAccessRequest, error)
	GetBannedBot(context.Context, int64) ([]*db.BotBannedAccess, error)
}
