Kaizen
Browse modulesPricingpricing/sharedTypes

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

ParameterType
lineItemTContext["line_items"][number]
pricingUnitstring

Returns

number

On this page