import type { NetworkRequest } from '../../types.js';
export interface GraphQLOperation {
    type: 'query' | 'mutation' | 'subscription' | 'unknown';
    name?: string;
    query: string;
    variables?: any;
    timestamp: Date;
    duration?: number;
    response?: any;
    errors?: any[];
    performance?: {
        complexity?: number;
        depth?: number;
        fieldCount?: number;
        resolverCount?: number;
    };
    client?: {
        name?: string;
        version?: string;
    };
}
export interface GraphQLError {
    message: string;
    locations?: Array<{
        line: number;
        column: number;
    }>;
    path?: Array<string | number>;
    extensions?: any;
    timestamp: Date;
    operation?: string;
}
export interface GraphQLPerformanceMetric {
    operation: string;
    duration: number;
    timestamp: Date;
    complexity?: number;
    cacheHit?: boolean;
    resolverStats?: {
        [resolver: string]: {
            count: number;
            totalTime: number;
            avgTime: number;
        };
    };
}
export interface GraphQLSchemaUsage {
    field: string;
    type: string;
    usageCount: number;
    lastUsed: Date;
    deprecated?: boolean;
    cost?: number;
}
export declare class GraphQLExtractionUtils {
    /**
     * Extract GraphQL operations from network requests
     */
    static extractGraphQLOperations(requests: NetworkRequest[]): GraphQLOperation[];
    /**
     * Extract GraphQL errors from operations
     */
    static extractGraphQLErrors(requests: NetworkRequest[]): GraphQLError[];
    /**
     * Analyze query performance and detect issues
     */
    static analyzeQueryPerformance(requests: NetworkRequest[]): GraphQLPerformanceMetric[];
    /**
     * Detect N+1 query patterns
     */
    static detectNPlusOneQueries(requests: NetworkRequest[]): Array<{
        pattern: string;
        occurrences: number;
        operations: GraphQLOperation[];
        suggestion: string;
    }>;
    /**
     * Analyze schema usage patterns
     */
    static analyzeSchemaUsage(requests: NetworkRequest[]): GraphQLSchemaUsage[];
    /**
     * Calculate query complexity metrics
     */
    static calculateQueryComplexity(query: string): {
        depth: number;
        fieldCount: number;
        complexity: number;
        warnings: string[];
    };
    /**
     * Check if request is a GraphQL request
     */
    private static isGraphQLRequest;
    /**
     * Parse GraphQL request into operation object
     */
    private static parseGraphQLRequest;
    /**
     * Detect GraphQL operation type from query string
     */
    private static detectOperationType;
    /**
     * Detect GraphQL client from request headers/body
     */
    private static detectGraphQLClient;
    /**
     * Generate query signature for pattern detection
     */
    private static generateQuerySignature;
    /**
     * Generate N+1 query suggestion
     */
    private static generateNPlusOneSuggestion;
    /**
     * Extract fields from GraphQL query (simplified)
     */
    private static extractFieldsFromQuery;
    /**
     * Detect cache hit from response
     */
    private static detectCacheHit;
    /**
     * Parse resolver statistics from tracing data
     */
    private static parseResolverStats;
}
//# sourceMappingURL=graphql-utils.d.ts.map