import type { WebSocketInputWithModels, WebSocketEvent } from './types';
import type { AmplifyModelType, QueryFactoryResult } from '../../queries/types';
/**
 * Build standardized log context for WebSocket operations
 */
export declare function buildWebSocketContext<TTypes extends Record<string, AmplifyModelType> = Record<string, AmplifyModelType>, TSelected extends string = string>(input: WebSocketInputWithModels<TTypes, TSelected>, additionalContext?: Record<string, unknown>): Record<string, unknown>;
/**
 * Extract basic event information for logging
 */
export declare function extractEventInfo(event: WebSocketEvent): Record<string, unknown>;
/**
 * Safely parse JSON body with error handling
 */
export declare function parseJsonBody(body: string | undefined, context: Record<string, unknown>): unknown;
/**
 * Setup structured logging for WebSocket middleware
 */
export declare function setupStructuredLogging<TTypes extends Record<string, AmplifyModelType> = Record<string, AmplifyModelType>>(input: WebSocketInputWithModels<TTypes>, forceStructuredLogging?: boolean, defaultContext?: Record<string, unknown>): void;
export declare function isMessageEvent(event: WebSocketEvent): boolean;
/**
 * Extract error message safely
 */
export declare function getErrorMessage(error: unknown): string;
/**
 * Get error stack trace if available
 */
export declare function getErrorStack(error: unknown): string | undefined;
/**
 * Build error context with WebSocket information
 */
export declare function buildErrorContext<TTypes extends Record<string, AmplifyModelType> = Record<string, AmplifyModelType>>(input: WebSocketInputWithModels<TTypes>, error: {
    code?: string;
    statusCode?: number;
} | null, additionalContext?: Record<string, unknown>): Record<string, unknown>;
export declare function getConnectionId(event: WebSocketEvent): string;
export declare function getModelsFromInput<TTypes extends Record<string, AmplifyModelType>, TSelected extends keyof TTypes & string = keyof TTypes & string>(input: WebSocketInputWithModels<TTypes, TSelected>): {
    [K in TSelected]: QueryFactoryResult<K, TTypes>;
};
//# sourceMappingURL=utils.d.ts.map