package types

import "context"

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

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

// ИЯдро -- базовый интерфейс ядра
type ИЯдро interface {
	// Done -- возвращает канал отмены контекста приложения
	Done() <-chan struct{}
	// Отменить -- функция отмены глобального контекста ядра
	Отменить()
	// Wg -- возвращает групповой объект ожидания
	Wg() IWgName
	// Слог -- возвращает логгер
	Слог() ИЛоггер
	// Контекст -- возвращает контекст приложения
	Контекст() context.Context
	// Хранилище -- возвращает хранилище
	Хранилище() ИХранилище
}
