import type { IAgentRuntime } from "../types/runtime";
import { Service } from "../types/service";
export type TrajectoryScalar = string | number | boolean | null;
export type TrajectoryData = Record<string, TrajectoryScalar>;
export type TrajectoryProviderAccess = {
    stepId: string;
    providerName: string;
    purpose: string;
    data: TrajectoryData;
    query?: TrajectoryData;
    timestamp: number;
};
export type TrajectoryLlmCall = {
    stepId: string;
    model: string;
    systemPrompt: string;
    userPrompt: string;
    response: string;
    temperature: number;
    maxTokens: number;
    purpose: string;
    actionType: string;
    latencyMs: number;
    timestamp: number;
};
/**
 * No-op trajectory logger service by default.
 *
 * Runtimes call into this service when a `trajectoryStepId` is active to capture:
 * - Provider accesses during state composition
 * - LLM calls (prompt/response/latency)
 *
 * This is intentionally lightweight: it stores logs in memory and exposes them
 * for benchmark harnesses/tests. Production systems can subclass/replace this
 * via plugin registration.
 */
export declare class TrajectoryLoggerService extends Service {
    static serviceType: string;
    capabilityDescription: string;
    private providerAccess;
    private llmCalls;
    static start(runtime: IAgentRuntime): Promise<Service>;
    stop(): Promise<void>;
    logProviderAccess(params: {
        stepId: string;
        providerName: string;
        data: TrajectoryData;
        purpose: string;
        query?: TrajectoryData;
    }): void;
    logLlmCall(params: Omit<TrajectoryLlmCall, "timestamp">): void;
    getProviderAccessLogs(): readonly TrajectoryProviderAccess[];
    getLlmCallLogs(): readonly TrajectoryLlmCall[];
    completeStepByStepId(stepId: string, details: Record<string, unknown>): Promise<void>;
}
//# sourceMappingURL=trajectoryLogger.d.ts.map