package service import ( "context" "time" ) type Grib interface { Update(ctx context.Context) error Extract(ctx context.Context, lat, lon, alt float64, ts time.Time) ([2]float64, error) Close() error } type Redis interface { Lock(ctx context.Context, key string, ttl time.Duration) (func(context.Context), error) Set(key string, value []byte, ttl time.Duration) error Get(key string) ([]byte, error) Close() error }