18 lines
630 B
Go
18 lines
630 B
Go
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)
|
|
}
|