import type { MastraDBMessage } from '@mastra/core/agent';
import { ObservationStrategy } from './base.js';
import type { StrategyDeps } from './base.js';
import type { ObservationRunOpts, ObserverOutput, ProcessedObservation } from './types.js';
export declare class ResourceScopedObservationStrategy extends ObservationStrategy {
    private readonly startedAt;
    private cycleId?;
    private readonly resourceId;
    private threadsWithMessages;
    private threadTokensToObserve;
    private threadTokenCounts;
    private threadOrder;
    private messagesByThread;
    private multiThreadResults;
    private totalBatchUsage;
    private observationResults;
    private priorMetadataByThread;
    constructor(deps: StrategyDeps, opts: ObservationRunOpts);
    get needsLock(): boolean;
    get needsReflection(): boolean;
    get rethrowOnFailure(): boolean;
    prepare(): Promise<{
        messages: MastraDBMessage[];
        existingObservations: string;
    }>;
    emitStartMarkers(cycleId: string): Promise<void>;
    observe(_existingObservations: string, _messages: MastraDBMessage[]): Promise<{
        observations: string;
        usage: {
            inputTokens: number;
            outputTokens: number;
            totalTokens: number;
        } | undefined;
    }>;
    process(_output: ObserverOutput, existingObservations: string): Promise<ProcessedObservation>;
    persist(processed: ProcessedObservation): Promise<void>;
    emitEndMarkers(cycleId: string, processed: ProcessedObservation): Promise<void>;
    emitFailedMarkers(cycleId: string, error: unknown): Promise<void>;
}
//# sourceMappingURL=resource-scoped.d.ts.map