import { type DocumentNode } from 'graphql';
import { type GraphQLTagPluckOptions } from '@graphql-tools/graphql-tag-pluck';
interface FragmentInfo {
    name: string;
    typeCondition: string;
}
interface ParsedSource {
    rawSDL: string;
    document: DocumentNode;
}
export interface PackageFragmentMap {
    fragments: Map<string, {
        filePath: string;
        typeCondition: string;
    }>;
    spreadsPerFile: Map<string, Set<string>>;
    defsPerFile: Map<string, FragmentInfo[]>;
}
export interface ResolvedExternalFile {
    filePath: string;
    definitions: FragmentInfo[];
    packageName: string;
}
interface ResolvedExternalFileWithSources extends ResolvedExternalFile {
    sources: ParsedSource[];
}
export interface ExternalFragmentResolverOptions {
    packageDir: string;
    externalPackagesDirs: string[];
    packageNameFilter?: (packageName: string) => boolean;
    packageDependencyFilter?: (dependencies: Record<string, string>) => boolean;
    includeDevDependencies?: boolean;
    scanInternalDirs?: string[];
    extensions?: string[];
    excludePatterns?: string[];
    pluckConfig?: GraphQLTagPluckOptions;
    fileContentFilter?: (content: string, filePath: string) => boolean;
    cacheTTL?: number;
    invalidateTargetPackageCache?: boolean;
}
/**
 * Clears all internal caches.
 */
export declare function clearCache(): void;
/**
 * Resolves cross-package GraphQL fragment dependencies across external packages.
 * Async version — reads files in parallel for better performance on large codebases.
 */
export declare function resolveExternalFragmentsWithSources(options: ExternalFragmentResolverOptions, filterToRequiredFragments?: boolean): Promise<ResolvedExternalFileWithSources[]>;
export declare function resolveExternalFragments(options: ExternalFragmentResolverOptions): Promise<ResolvedExternalFile[]>;
/**
 * Resolves cross-package GraphQL fragment dependencies across external packages.
 * Sync version.
 */
export declare function resolveExternalFragmentsSyncWithSources(options: ExternalFragmentResolverOptions, filterToRequiredFragments?: boolean): ResolvedExternalFileWithSources[];
export declare function resolveExternalFragmentsSync(options: ExternalFragmentResolverOptions): ResolvedExternalFile[];
export {};
