export declare const ATTR: {
    readonly GEN_AI_SYSTEM: "gen_ai.system";
    readonly GEN_AI_MODEL: "gen_ai.request.model";
    readonly GEN_AI_OPERATION: "gen_ai.operation.name";
    readonly GEN_AI_INPUT_TOKENS: "gen_ai.usage.input_tokens";
    readonly GEN_AI_OUTPUT_TOKENS: "gen_ai.usage.output_tokens";
    readonly GEN_AI_FINISH_REASON: "gen_ai.response.finish_reason";
    readonly GEN_AI_COST_USD: "gen_ai.cost_usd";
    readonly GEN_AI_TOOL_NAME: "gen_ai.tool.name";
    readonly GEN_AI_TEMPERATURE: "gen_ai.request.temperature";
    readonly GEN_AI_MAX_TOKENS: "gen_ai.request.max_tokens";
    readonly NL_PROVIDER: "neurolink.provider";
    readonly NL_MODEL: "neurolink.model";
    readonly NL_STREAM_MODE: "neurolink.stream_mode";
    readonly NL_TOOL_COUNT: "neurolink.tool_count";
    readonly NL_MESSAGE_COUNT: "neurolink.message_count";
    readonly NL_HAS_TOOLS: "neurolink.has_tools";
    readonly NL_INPUT_LENGTH: "neurolink.input_length";
    readonly NL_OUTPUT_LENGTH: "neurolink.output_length";
    readonly NL_REQUEST_ID: "neurolink.request_id";
    readonly NL_PATH: "neurolink.path";
    readonly NL_HAS_MEMORY: "neurolink.has_conversation_memory";
    readonly NL_COST: "neurolink.cost";
    readonly NL_STRUCTURED_OUTPUT: "neurolink.structured_output";
    readonly NL_HAS_FALLBACK: "neurolink.has_fallback";
    readonly MCP_SERVER_ID: "mcp.server_id";
    readonly MCP_TOOL_NAME: "mcp.tool_name";
    readonly MCP_TIMEOUT_MS: "mcp.timeout_ms";
    readonly MCP_TRANSPORT: "mcp.transport";
    readonly MCP_CIRCUIT_STATE: "mcp.circuit_state";
    readonly SESSION_ID: "session.id";
    readonly USER_ID: "user.id";
    readonly MEMORY_TYPE: "memory.type";
    readonly MESSAGE_COUNT: "message.count";
    readonly CONTENT_LENGTH: "content.length";
    readonly RAG_FILE_COUNT: "rag.file_count";
    readonly RAG_STRATEGY: "rag.strategy";
    readonly RAG_CHUNK_SIZE: "rag.chunk_size";
    readonly RAG_TOP_K: "rag.top_k";
    readonly RAG_RESULT_COUNT: "rag.result_count";
    readonly MSG_COUNT: "message.build.count";
    readonly MSG_HAS_IMAGES: "message.has_images";
    readonly MSG_HAS_FILES: "message.has_files";
    readonly MSG_HAS_SYSTEM_PROMPT: "message.has_system_prompt";
    readonly MSG_TOTAL_CONTENT_LENGTH: "message.total_content_length";
    readonly MSG_IS_MULTIMODAL: "message.is_multimodal";
    readonly FILE_NAME: "file.name";
    readonly FILE_MIMETYPE: "file.mimetype";
    readonly FILE_SIZE_BYTES: "file.size_bytes";
    readonly FILE_CATEGORY: "file.category";
    readonly FILE_OUTPUT_LENGTH: "file.output_length";
    readonly FILE_SUCCESS: "file.success";
    readonly FILE_PROCESSOR_USED: "file.processor_used";
    readonly FILE_CONFIDENCE: "file.detection_confidence";
    readonly FILE_HAS_IMAGES: "file.has_images";
    readonly FILE_IMAGE_COUNT: "file.image_count";
    readonly FILE_ERROR: "file.error";
    readonly FILE_SKIPPED_REASON: "file.skipped_reason";
    readonly FILE_TOTAL_COUNT: "file.total_count";
    readonly FILE_INCLUDED_COUNT: "file.included_count";
    readonly FILE_CONTENT_TYPE: "file.content_type";
    readonly VIDEO_DURATION_SEC: "video.duration_sec";
    readonly VIDEO_WIDTH: "video.width";
    readonly VIDEO_HEIGHT: "video.height";
    readonly VIDEO_CODEC: "video.codec";
    readonly VIDEO_AUDIO_CODEC: "video.audio_codec";
    readonly VIDEO_FORMAT: "video.format";
    readonly VIDEO_BITRATE: "video.bitrate";
    readonly VIDEO_KEYFRAMES_EXTRACTED: "video.keyframes_extracted";
    readonly VIDEO_TARGET_FRAMES: "video.target_frames";
    readonly VIDEO_INTERVAL_SEC: "video.interval_sec";
    readonly VIDEO_FRAME_QUALITY: "video.frame_quality";
    readonly VIDEO_FRAME_RESIZE_PX: "video.frame_resize_px";
    readonly VIDEO_FRAMES_RESIZED: "video.frames_resized";
    readonly VIDEO_TOTAL_FRAME_BYTES: "video.total_frame_bytes";
    readonly VIDEO_HAS_SUBTITLES: "video.has_subtitles";
    readonly VIDEO_SUBTITLE_LENGTH: "video.subtitle_length";
    readonly VIDEO_TEXT_CONTENT_LENGTH: "video.text_content_length";
    readonly VIDEO_HAS_METADATA: "video.has_metadata";
    readonly VIDEO_HAS_KEYFRAMES: "video.has_keyframes";
    readonly VIDEO_TEMP_PATH: "video.temp_path";
    readonly VIDEO_BYTES_WRITTEN: "video.bytes_written";
    readonly VIDEO_WRITE_DURATION_MS: "video.write_duration_ms";
    readonly VIDEO_STEP: "video.step";
    readonly CONTEXT_STAGE: "context.compaction_stage";
    readonly CONTEXT_TOKENS_BEFORE: "context.tokens_before";
    readonly CONTEXT_TOKENS_AFTER: "context.tokens_after";
    readonly MW_COUNT: "middleware.count";
    readonly MW_NAMES: "middleware.names";
    readonly AR_TAG: "autoresearch.tag";
    readonly AR_BRANCH: "autoresearch.branch";
    readonly AR_PHASE: "autoresearch.phase";
    readonly AR_PHASE_FROM: "autoresearch.phase_from";
    readonly AR_PHASE_TO: "autoresearch.phase_to";
    readonly AR_RUN_COUNT: "autoresearch.run_count";
    readonly AR_KEEP_COUNT: "autoresearch.keep_count";
    readonly AR_STATUS: "autoresearch.status";
    readonly AR_METRIC: "autoresearch.metric";
    readonly AR_BEST_METRIC: "autoresearch.best_metric";
    readonly AR_DIRECTION: "autoresearch.metric_direction";
    readonly AR_COMMIT: "autoresearch.commit";
    readonly AR_DURATION_MS: "autoresearch.duration_ms";
    readonly AR_DESCRIPTION: "autoresearch.description";
    readonly AR_ERROR_CODE: "autoresearch.error_code";
};
/**
 * Langfuse observation/trace attribute names recognised by `@langfuse/otel`'s
 * LangfuseSpanProcessor (already registered on the global TracerProvider). They
 * let native (non-AI-SDK) provider paths emit spans that render as proper
 * generation / tool observations — the same data the Vercel AI SDK's
 * `experimental_telemetry` produced before providers moved to native SDKs.
 */
export declare const LANGFUSE_ATTR: {
    readonly TRACE_NAME: "langfuse.trace.name";
    readonly TRACE_INPUT: "langfuse.trace.input";
    readonly TRACE_OUTPUT: "langfuse.trace.output";
    readonly OBSERVATION_TYPE: "langfuse.observation.type";
    readonly OBSERVATION_INPUT: "langfuse.observation.input";
    readonly OBSERVATION_OUTPUT: "langfuse.observation.output";
    readonly OBSERVATION_METADATA: "langfuse.observation.metadata";
    readonly OBSERVATION_MODEL_NAME: "langfuse.observation.model.name";
    readonly OBSERVATION_MODEL_PARAMETERS: "langfuse.observation.model.parameters";
    readonly OBSERVATION_USAGE_DETAILS: "langfuse.observation.usage_details";
    readonly OBSERVATION_LEVEL: "langfuse.observation.level";
    readonly OBSERVATION_STATUS_MESSAGE: "langfuse.observation.status_message";
    readonly OBSERVATION_COMPLETION_START_TIME: "langfuse.observation.completion_start_time";
};
/** Default ceiling for serialized span attribute values. */
export declare const SPAN_ATTRIBUTE_MAX_CHARS = 40000;
/**
 * Serialize an arbitrary value for a span attribute, hard-capped at
 * `maxChars` so a pathological prompt or tool result can't put megabytes
 * on a single span. Strings pass through unserialized; everything else is
 * JSON-stringified with a String() fallback for circular structures.
 */
export declare function spanJsonAttribute(value: unknown, maxChars?: number): string;
