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<T>(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 countMultimodalToolResultContent;
    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<number>;
    /**
     * Count tokens in an array of messages
     */
    countMessages(messages: MastraDBMessage[]): number;
    countMessagesAsync(messages: MastraDBMessage[]): Promise<number>;
    /**
     * Count tokens in observations string
     */
    countObservations(observations: string): number;
}
export {};
//# sourceMappingURL=token-counter.d.ts.map