package types

import "context"

/*
	Базовый интерфейс ядра
*/

// IWgName -- интерфейс к группе ожидания по именам
type IWgName interface {
	// Add -- добавляет имя для ожидания
	Add(name string) error
	// Done -- отпускает имя для ожидания
	Done(name string) error
	// Wait -- ожидает отпускание группы
	Wait()
}

// IKernel -- базовый интерфейс ядра
type IKernel interface {
	// Done -- возвращает канал отмены контекста приложения
	Done() <-chan struct{}
	// CancelApp -- функция тмены глобального контекста ядра
	CancelApp()
	// Wg -- возвращает групповой объект ожидания
	Wg() IWgName
	// Slog -- возвращает логгер
	Slog() ISlog
	// CtxApp -- возвращает контекст приложения
	CtxApp() context.Context
}
