package fees import ( "context" "time" "github.com/tech/sendico/billing/fees/internal/service/fees/types" "github.com/tech/sendico/billing/fees/storage/model" feesv1 "github.com/tech/sendico/pkg/proto/billing/fees/v1" tracev1 "github.com/tech/sendico/pkg/proto/common/trace/v1" ) // Calculator isolates fee rule evaluation logic so it can be reused and tested. // Implementation lives under internal/service/fees/internal/calculator. type Calculator interface { Compute(ctx context.Context, plan *model.FeePlan, intent *feesv1.Intent, bookedAt time.Time, trace *tracev1.TraceContext) (*types.CalculationResult, error) }