import { Request, Response, NextFunction } from 'express';
export interface ServerObservabilityConfig {
    enabled: boolean;
    appId: string;
    endpoint: string;
    trackErrors?: boolean;
}
export type ErrorCategory = 'backend' | 'ai' | 'integration' | 'database' | 'auth' | 'validation';
export type ErrorSeverity = 'critical' | 'error' | 'warning';
/**
 * Unified error metadata - can include any relevant context
 */
export interface ErrorMetadata {
    operation?: string;
    latencyMs?: number;
    provider?: string;
    model?: string;
    inputTokens?: number;
    outputTokens?: number;
    estimatedCost?: number;
    integration?: string;
    table?: string;
    query?: string;
    [key: string]: any;
}
/**
 * Creates Express error middleware that captures backend errors
 * and sends them to the observability collector.
 *
 * @example
 * import { observabilityErrorMiddleware } from '@flavoai/fastfold';
 *
 * app.use(observabilityErrorMiddleware({
 *   enabled: true,
 *   appId: process.env.APP_ID,
 *   endpoint: 'https://superbuilder.app/api/observe'
 * }));
 */
export declare function observabilityErrorMiddleware(config: ServerObservabilityConfig): (_err: Error, _req: Request, _res: Response, next: NextFunction) => void;
/**
 * Initialize observability config for standalone tracking
 * Call this once during app initialization
 */
export declare function initObservability(config: ServerObservabilityConfig): void;
/**
 * Get the current observability config
 */
export declare function getObservabilityConfig(): ServerObservabilityConfig | null;
/**
 * Unified error tracking function - works for all error types
 *
 * @example
 * // AI error
 * trackError(error, 'ai', {
 *   provider: 'openai',
 *   model: 'gpt-4o',
 *   operation: 'chat',
 *   latencyMs: 1234
 * });
 *
 * // Integration error
 * trackError(error, 'integration', {
 *   integration: 'stripe',
 *   operation: 'createPaymentIntent',
 *   customerId: 'cus_123'
 * });
 *
 * // Generic backend error
 * trackError(error, 'backend', { endpoint: '/api/users' });
 */
export declare function trackError(error: Error, category: ErrorCategory, metadata?: ErrorMetadata, context?: {
    sessionId?: string;
    visitorId?: string;
    userId?: string;
    endpoint?: string;
    userAgent?: string;
}): void;
/**
 * Track AI-specific errors (convenience wrapper)
 */
export declare function trackAIError(error: Error, metadata: ErrorMetadata & {
    provider: string;
    operation: string;
}, context?: {
    sessionId?: string;
    visitorId?: string;
    userId?: string;
    endpoint?: string;
}): void;
/**
 * Track integration errors (convenience wrapper)
 */
export declare function trackIntegrationError(error: Error, integration: string, operation: string, metadata?: Omit<ErrorMetadata, 'integration' | 'operation'>, context?: {
    sessionId?: string;
    visitorId?: string;
    userId?: string;
    endpoint?: string;
}): void;
export interface RequestTrackingConfig extends ServerObservabilityConfig {
    trackRequests?: boolean;
    excludePaths?: string[];
}
/**
 * Optional middleware to track all requests (for debugging/analytics)
 * Note: This generates a lot of data, use carefully in production
 */
export declare function observabilityRequestMiddleware(config: RequestTrackingConfig): (_req: Request, _res: Response, next: NextFunction) => void;
//# sourceMappingURL=observability.d.ts.map