import type { UsageRepository } from '../db/repositories/usage-repository.js'; import { type CostService } from './cost-service.js'; export interface RepriceResult { /** Models whose stored rows gained an estimate. */ models: string[]; /** Rows that did. */ records: number; } /** * Prices stored rows the table could not price when they were collected. * * Collection prices a row once. A row whose model the table did not know is * stored `unavailable`, and incremental sync never reads it again -- so a price * that arrives later (a release, an override, the community list) would apply * to new turns only, leaving a session half priced. This closes that gap. It * only ever moves a row from `unavailable` to `estimated`: a row already priced * keeps its number, and a row the client reported a cost for is never touched. */ export declare class RepriceService { private readonly repo; private readonly costService; constructor(repo: UsageRepository, costService: CostService); repriceUnpriced(): RepriceResult; }