import type { MastraDBMessage } from '@mastra/core/agent'; export type TokenCounterModelContext = { provider?: string; modelId?: string; }; type TokenCounterOptions = { model?: string | TokenCounterModelContext; }; /** * Token counting utility using tokenx for rough local estimation and * provider-aware heuristics for image parts so multimodal prompts are not * undercounted as generic JSON blobs. */ export declare class TokenCounter { private readonly cacheSource; private readonly defaultModelContext?; private readonly modelContextStorage; private readonly inFlightAttachmentCounts; private static readonly TOKENS_PER_MESSAGE; private static readonly TOKENS_PER_CONVERSATION; constructor(options?: TokenCounterOptions); runWithModelContext(model: string | TokenCounterModelContext | undefined, fn: () => T): T; private getModelContext; /** * Count tokens in a plain string */ countString(text: string): number; private readOrPersistPartEstimate; private readOrPersistFixedPartEstimate; private readOrPersistMessageEstimate; private resolveToolResultForTokenCounting; private estimateImageAssetTokens; private estimateImageTokens; private estimateImageLikeFileTokens; private countAttachmentPartSync; private buildRemoteAttachmentCachePayload; private fetchProviderAttachmentTokenEstimate; private countAttachmentPartAsync; private countNonAttachmentPart; /** * Count tokens in a single message */ countMessage(message: MastraDBMessage): number; countMessageAsync(message: MastraDBMessage): Promise; /** * Count tokens in an array of messages */ countMessages(messages: MastraDBMessage[]): number; countMessagesAsync(messages: MastraDBMessage[]): Promise; /** * Count tokens in observations string */ countObservations(observations: string): number; } export {}; //# sourceMappingURL=token-counter.d.ts.map