import type { AddPluginConfig } from '@graphql-codegen/add/typings/config';
import type * as typeScriptPlugin from '@graphql-codegen/typescript';
import type * as typeScriptResolversPlugin from '@graphql-codegen/typescript-resolvers';
import type * as schemaAstPlugin from '@graphql-codegen/schema-ast';
import type { ProjectOptions } from 'ts-morph';
type ParsedTypesPluginsConfig = Omit<typeScriptPlugin.TypeScriptPluginConfig & typeScriptResolversPlugin.TypeScriptResolversPluginConfig, 'scalars' | 'emitLegacyCommonJSImports'>;
type ConfigMode = 'merged' | 'modules';
type ResolverMainFileMode = 'merged' | 'modules';
export type TypeDefsFileMode = 'merged' | 'mergedWhitelisted' | 'modules';
type StringFixObjectTypeResolvers = 'smart' | 'disabled';
type NormalizedFixObjectTypeResolvers = {
    object: 'smart' | 'disabled';
    enum: 'smart' | 'disabled';
};
type StringResolverGeneration = 'disabled' | 'recommended' | 'minimal' | 'all';
type NormalizedResolverGeneration = {
    query: string | string[];
    mutation: string | string[];
    subscription: string | string[];
    scalar: string | string[];
    object: string | string[];
    union: string | string[];
    interface: string | string[];
    enum: string | string[];
};
export type ModuleNamingMode = number;
export type ScalarsOverridesType = string | {
    input: string;
    output: string;
};
export interface ParsedPresetConfig {
    add?: Record<string, AddPluginConfig>;
    resolverTypesPath: string;
    resolverRelativeTargetDir: string;
    resolverMainFile: string;
    resolverMainFileMode: ResolverMainFileMode;
    resolverGeneration: NormalizedResolverGeneration;
    typeDefsFilePath: string | false;
    typeDefsFileMode: TypeDefsFileMode;
    mappersRelativeTargetDir: string;
    mappersFileExtension: string;
    mappersSuffix: string;
    moduleNamingMode: ModuleNamingMode;
    scalarsModule: string | false;
    scalarsOverrides: Record<string, {
        resolver?: string;
        type?: ScalarsOverridesType;
    }>;
    mergeSchema: {
        path: string;
        config: schemaAstPlugin.SchemaASTConfig;
    } | false;
    mode: ConfigMode;
    whitelistedModules: string[];
    blacklistedModules: string[];
    externalResolvers: Record<string, string>;
    typesPluginsConfig: ParsedTypesPluginsConfig;
    tsMorphProjectOptions: ProjectOptions;
    fixObjectTypeResolvers: NormalizedFixObjectTypeResolvers;
    emitLegacyCommonJSImports: boolean;
}
export interface RawPresetConfig {
    add?: Record<string, unknown>;
    resolverTypesPath?: string;
    resolverRelativeTargetDir?: string;
    resolverMainFile?: string;
    resolverMainFileMode?: string;
    resolverGeneration?: string | Record<string, string | string[]>;
    typeDefsFilePath?: string | boolean;
    typeDefsFileMode?: string;
    mappersRelativeTargetDir?: string;
    mappersFileExtension?: string;
    mappersSuffix?: string;
    moduleNamingMode?: string | number;
    scalarsModule?: string | boolean;
    scalarsOverrides?: Record<string, {
        resolver?: string;
        type?: ScalarsOverridesType;
    }>;
    mergeSchema?: boolean | string | {
        path: string;
        config: unknown;
    };
    mode?: string;
    whitelistedModules?: string[];
    blacklistedModules?: string[];
    externalResolvers?: Record<string, string>;
    typesPluginsConfig?: typeScriptPlugin.TypeScriptPluginConfig & typeScriptResolversPlugin.TypeScriptResolversPluginConfig;
    tsConfigFilePath?: string;
    fixObjectTypeResolvers?: string | Record<string, string>;
    emitLegacyCommonJSImports?: boolean;
}
export interface TypedPresetConfig extends RawPresetConfig {
    add?: Record<string, AddPluginConfig>;
    mode?: ConfigMode;
    resolverMainFileMode?: ResolverMainFileMode;
    typeDefsFileMode?: TypeDefsFileMode;
    fixObjectTypeResolvers?: StringFixObjectTypeResolvers | NormalizedFixObjectTypeResolvers;
    typesPluginsConfig?: ParsedTypesPluginsConfig;
    resolverGeneration?: StringResolverGeneration | NormalizedResolverGeneration;
    mergeSchema?: boolean | string | {
        path: string;
        config: schemaAstPlugin.SchemaASTConfig;
    };
}
export declare const validatePresetConfig: ({ add, resolverTypesPath, resolverRelativeTargetDir, resolverMainFile, resolverMainFileMode, resolverGeneration, typeDefsFilePath, typeDefsFileMode: inputTypeDefsFileMode, mappersRelativeTargetDir, mappersFileExtension, mappersSuffix, moduleNamingMode, mergeSchema, scalarsModule, scalarsOverrides, mode, whitelistedModules, blacklistedModules, externalResolvers, typesPluginsConfig, tsConfigFilePath, fixObjectTypeResolvers, emitLegacyCommonJSImports, }: RawPresetConfig) => ParsedPresetConfig;
export {};
