Skip to main content

Class: CreditManager

Defined in: javascript/src/manager.ts:33

Orchestrates credit operations: pricing -> reserve -> deduct.

Optionally accepts a CreditEventEmitter to emit lifecycle events (deducted, added, refunded, expired, cap_reached, cap_warning, low_balance).

Constructors

Constructor

new CreditManager(store, engine?, emitter?): CreditManager

Defined in: javascript/src/manager.ts:38

Parameters

store

CreditStore

engine?

PricingEngine | null

emitter?

CreditEventEmitter | null

Returns

CreditManager

Accessors

pricingEngine

Get Signature

get pricingEngine(): PricingEngine | null

Defined in: javascript/src/manager.ts:101

The current PricingEngine, or null if not loaded.

Returns

PricingEngine | null

Methods

addCredits()

addCredits(userId, amount, type?, metadata?, expiresAt?): Promise<AddCreditsResult>

Defined in: javascript/src/manager.ts:121

Add credits to a user's account.

Parameters

userId

string

amount

number

type?

string = "adjustment"

metadata?

CreditMetadata | null

expiresAt?

Date | null

Returns

Promise<AddCreditsResult>


aggregateStats()

aggregateStats(start, end): Promise<AggregateStats>

Defined in: javascript/src/manager.ts:366

Aggregate statistics across all users in a time window.

Parameters

start

Date

end

Date

Returns

Promise<AggregateStats>


checkFeature()

checkFeature(userId, feature): Promise<CheckFeatureResult>

Defined in: javascript/src/manager.ts:111

Check whether a user's plan has a specific feature entitlement.

Parameters

userId

string

feature

string

Returns

Promise<CheckFeatureResult>


dailySpend()

dailySpend(start, end): Promise<DailySpendRow[]>

Defined in: javascript/src/manager.ts:386

Daily spend aggregation in a time window.

Parameters

start

Date

end

Date

Returns

Promise<DailySpendRow[]>


deduct()

deduct(userId, metrics, idempotencyKey?, metadata?): Promise<DeductionResult>

Defined in: javascript/src/manager.ts:153

Full deduction flow: calculate -> reserve -> deduct.

Parameters

userId

string

metrics

UsageMetrics

idempotencyKey?

string | null

metadata?

CreditMetadata | null

Returns

Promise<DeductionResult>


deductFixed()

deductFixed(userId, jobName, idempotencyKey?, metadata?): Promise<DeductionResult>

Defined in: javascript/src/manager.ts:337

Shortcut for fixed-cost batch jobs.

Parameters

userId

string

jobName

string

idempotencyKey?

string | null

metadata?

CreditMetadata | null

Returns

Promise<DeductionResult>


deductTeam()

deductTeam(teamId, userId, metrics, metadata?): Promise<TeamDeductionResult>

Defined in: javascript/src/manager.ts:296

Deduct from a team's shared balance pool. Calculates cost via the pricing engine, then debits the team balance.

Parameters

teamId

string

userId

string

metrics

UsageMetrics

metadata?

CreditMetadata | null

Returns

Promise<TeamDeductionResult>


getBalance()

getBalance(userId): Promise<BalanceResult>

Defined in: javascript/src/manager.ts:116

Get a user's current credit balance.

Parameters

userId

string

Returns

Promise<BalanceResult>


getUserPlan()

getUserPlan(userId): Promise<GetUserPlanResult>

Defined in: javascript/src/manager.ts:106

Fetch a user's current plan (including feature entitlements).

Parameters

userId

string

Returns

Promise<GetUserPlanResult>


loadPricingFromStore()

loadPricingFromStore(): Promise<void>

Defined in: javascript/src/manager.ts:66

Load the active pricing config from the store.

Returns

Promise<void>


publishPricing()

publishPricing(config, label?): void

Defined in: javascript/src/manager.ts:85

Publish new pricing and update the engine in one call.

Parameters

config

PricingConfigData

label?

string | null

Returns

void


publishPricingFromDict()

publishPricingFromDict(data): Promise<void>

Defined in: javascript/src/manager.ts:59

Load pricing from a PricingConfigData or raw dict and sync it.

Parameters

data

Record<string, unknown> | PricingConfigData

Returns

Promise<void>


refundCredits()

refundCredits(transactionId, amount?, reason?, metadata?): Promise<RefundResult>

Defined in: javascript/src/manager.ts:275

Refund a previous credit deduction.

Parameters

transactionId

string

amount?

number

reason?

string

metadata?

CreditMetadata | null

Returns

Promise<RefundResult>


reserveCredits()

reserveCredits(userId, amount, operationType?, metadata?, minBalance?): Promise<ReserveResult>

Defined in: javascript/src/manager.ts:139

Reserve credits for an upcoming operation.

Parameters

userId

string

amount

number

operationType?

string = "usage"

metadata?

CreditMetadata | null

minBalance?

number | null

Returns

Promise<ReserveResult>


setup()

setup(): Promise<SetupResult>

Defined in: javascript/src/manager.ts:54

Run bundled SQL migrations through the store.

Returns

Promise<SetupResult>


spendByModel()

spendByModel(start, end): Promise<SpendByModelRow[]>

Defined in: javascript/src/manager.ts:376

Aggregate spend by model in a time window.

Parameters

start

Date

end

Date

Returns

Promise<SpendByModelRow[]>


spendByUser()

spendByUser(start, end): Promise<SpendByUserRow[]>

Defined in: javascript/src/manager.ts:371

Aggregate spend by user in a time window.

Parameters

start

Date

end

Date

Returns

Promise<SpendByUserRow[]>


sweepExpiredCredits()

sweepExpiredCredits(dryRun?): Promise<SweepResult>

Defined in: javascript/src/manager.ts:352

Sweep expired credits from all users' balances.

When dryRun is true, reports what would be expired without modifying any balances.

Parameters

dryRun?

boolean

Returns

Promise<SweepResult>


topUsers()

topUsers(limit, start, end): Promise<TopUserRow[]>

Defined in: javascript/src/manager.ts:381

Top users by spend in a time window with limit.

Parameters

limit

number

start

Date

end

Date

Returns

Promise<TopUserRow[]>