Type Alias: ResolvePerUnitQualificationOptions<TContext *extends* [`EvaluatePricingContext`](EvaluatePricingContext.md)>
type ResolvePerUnitQualificationOptions<TContext extends EvaluatePricingContext> = {
enumerateSubUnits?: EnumerateSubUnits<TContext["line_items"][number]>;
getQuantity?: (lineItem: TContext["line_items"][number], pricingUnit: string) => number;
};Defined in: shared/pricing/qualify.ts:120
Type Parameters
| Type Parameter |
|---|
TContext extends EvaluatePricingContext |
Properties
enumerateSubUnits?
optional enumerateSubUnits?: EnumerateSubUnits<TContext["line_items"][number]>;Defined in: shared/pricing/qualify.ts:129
Optional consumer override of the default time-aware enumerator.
Replaces the default entirely for every line; consumers wanting a
mix should branch on pricingUnit and fall through to the
built-in for cases they don't handle (re-export coming if needed).
getQuantity?
optional getQuantity?: (lineItem: TContext["line_items"][number], pricingUnit: string) => number;Defined in: shared/pricing/qualify.ts:140
When supplied, asserts that getQuantity(line) and
enumerateSubUnits(line).length agree for every line that
decomposes into more than one sub-unit. Throws
SubUnitQuantityMismatchError on divergence. Pass getQuantity
here when evaluatePricing forwards a non-default resolver — the
calculator uses quantity for base scaling and sub_units.length
for qualifying scaling, so a silent mismatch would produce wrong
totals.
Parameters
| Parameter | Type |
|---|---|
lineItem | TContext["line_items"][number] |
pricingUnit | string |
Returns
number