// Package config provides the configuration management interface. // It defines the ConfigProvider interface that implementations must satisfy. package config import "time" // ConfigProvider defines the interface for configuration management. // It provides type-safe access to configuration values from various sources // (YAML files, environment variables, etc.). // //nolint:revive // ConfigProvider is a standard interface name pattern; stuttering is acceptable type ConfigProvider interface { // Get retrieves a configuration value by key. // Returns nil if the key is not found. Get(key string) any // Unmarshal unmarshals the entire configuration into the provided struct. // The struct should use appropriate tags for mapping configuration keys. Unmarshal(v any) error // GetString retrieves a string value by key. // Returns empty string if the key is not found. GetString(key string) string // GetInt retrieves an integer value by key. // Returns 0 if the key is not found or cannot be converted. GetInt(key string) int // GetBool retrieves a boolean value by key. // Returns false if the key is not found or cannot be converted. GetBool(key string) bool // GetStringSlice retrieves a string slice value by key. // Returns nil if the key is not found. GetStringSlice(key string) []string // GetDuration retrieves a duration value by key. // Returns 0 if the key is not found or cannot be parsed. GetDuration(key string) time.Duration // IsSet checks if a configuration key is set. IsSet(key string) bool }