import type { AgentEngine } from "../agent/engine/types.js"; import type { ObservabilityConfig } from "./types.js"; export declare const DEFAULT_INFERRED_SENTIMENT_MODEL = "gpt-5-6-luna"; export declare const HOSTED_INFERRED_SENTIMENT_SAMPLE_RATE = 1; export declare const INFERRED_SENTIMENT_MAX_CHARS = 2000; export declare const INFERRED_SENTIMENT_TIMEOUT_MS = 5000; export type InferredSentiment = "positive" | "negative" | "neutral"; type SentimentEnv = Record; export declare function isFirstPartyHostedAgentNative(env?: SentimentEnv): boolean; /** * Resolve inference defaults without making self-hosted apps opt in silently. * Explicit opt-out always wins. Otherwise stored app config and deployment * env can override the first-party hosted default. */ export declare function resolveInferredSentimentConfig(stored: Partial | null | undefined, env?: SentimentEnv): Pick; /** Stable deterministic sampling keeps retries for the same run consistent. */ export declare function shouldSampleInferredSentiment(runId: string, sampleRate: number): boolean; export declare function shouldInferSentimentForTurn(args: { internalContinuation: boolean; isBackgroundWorker: boolean; backgroundContinuationCount: number; hasUserText: boolean; }): boolean; export declare function parseInferredSentiment(output: string): InferredSentiment | null; /** * Best-effort classifier + content-free tracking emit. The main chat path * awaits this only after the user-visible response has finished streaming. */ export declare function inferAndTrackSentiment(args: { /** Test/custom seam. Production intentionally uses the managed Builder engine. */ engine?: AgentEngine; classifierModel: string; precedingResponseModel: string; text: string; precedingRunId: string; classificationTriggerRunId: string; threadId: string | null; userId: string | null; sampleRate: number; }): Promise; export {}; //# sourceMappingURL=sentiment.d.ts.map