# Task 0.2.2: Create Config Interface ## Metadata - **Task ID**: 0.2.2 - **Title**: Create Config Interface - **Phase**: 0 - Project Setup & Foundation - **Section**: 0.2 Configuration System - **Status**: Pending - **Priority**: High - **Estimated Time**: 15 minutes - **Dependencies**: 0.2.1 ## Description Create the `ConfigProvider` interface in `pkg/config/` to abstract configuration access. This interface will be used by all modules and services. ## Requirements - Define interface in `pkg/config/config.go` - Include methods for type-safe access - Support nested configuration keys - Support unmarshaling into structs ## Implementation Steps 1. Create `pkg/config/config.go` 2. Define `ConfigProvider` interface: ```go type ConfigProvider interface { Get(key string) any Unmarshal(v any) error GetString(key string) string GetInt(key string) int GetBool(key string) bool GetStringSlice(key string) []string } ``` 3. Add package documentation 4. Export interface for use by modules ## Acceptance Criteria - [ ] `pkg/config/config.go` exists - [ ] `ConfigProvider` interface is defined - [ ] Interface methods match requirements - [ ] Package documentation is present - [ ] Interface compiles without errors ## Related ADRs - [ADR-0004: Configuration Management](../../adr/0004-configuration-management.md) ## Implementation Notes - Interface should be minimal and focused - Additional methods can be added later if needed - Consider adding `GetDuration()` for time.Duration values - Consider adding `IsSet(key string) bool` to check if key exists ## Testing ```bash go build ./pkg/config go vet ./pkg/config ```