import * as graphql from 'graphql';
import type { CachePolicies, ConfigFile, PaginateModes } from '../runtime/lib';
import type { LogLevels, PluginConfig, PluginHooks, ValueMap } from './types';
export type PluginMeta = PluginHooks & {
    name: string;
    filepath: string;
};
export declare class Config {
    #private;
    filepath: string;
    rootDir: string;
    localSchema: boolean;
    projectRoot: string;
    schema: graphql.GraphQLSchema;
    schemaPath?: string;
    persistedQueriesPath: string;
    exclude: string[];
    scalars?: ConfigFile['scalars'];
    module: 'commonjs' | 'esm';
    cacheBufferSize?: number;
    defaultCachePolicy: CachePolicies;
    defaultPartial: boolean;
    internalListPosition: 'first' | 'last';
    defaultListTarget: 'all' | null;
    defaultPaginateMode: PaginateModes;
    definitionsFolder?: string;
    newDocuments: string;
    defaultKeys: string[];
    typeConfig: ConfigFile['types'];
    configFile: ConfigFile;
    logLevel: LogLevels;
    defaultFragmentMasking: 'enable' | 'disable';
    configIsRoute: ((filepath: string) => boolean) | null;
    routesDir: string;
    schemaPollInterval: number | null;
    schemaPollHeaders: ((env: any) => Record<string, string>) | Record<string, string | ((env: any) => string)>;
    pluginMode: boolean;
    plugins: PluginMeta[];
    componentFields: Record<string, Record<string, {
        fragment: string;
        directive: graphql.DirectiveNode;
        filepath: string;
        prop: string;
        parent: graphql.FragmentDefinitionNode | graphql.FragmentSpreadNode;
    }>>;
    constructor({ filepath, loadFrameworkConfig, ...configFile }: ConfigFile & {
        filepath: string;
        loadFrameworkConfig?: boolean;
    });
    apiURL(): Promise<string | undefined>;
    get include(): string[];
    pluginConfig<ConfigType extends {}>(name: string): ConfigType;
    getEnv(): Promise<Record<string, string | undefined>>;
    processEnvValues(env: Record<string, string | undefined>, value: string | ((env: any) => string)): string | undefined;
    pullHeaders(): Promise<any>;
    pluginRuntimeSource(plugin: PluginMeta): string | null;
    sourceFiles(): Promise<string[]>;
    get componentScalar(): string;
    schemaString: string;
    set newSchema(value: string);
    get newSchema(): string;
    get artifactDirectory(): string;
    get artifactDirectoryName(): string;
    get sourceDir(): string;
    get localApiDir(): string;
    get localAPIUrl(): string;
    get artifactTypeDirectory(): string;
    get runtimeDirectory(): string;
    get definitionsDirectory(): string;
    get enumRuntimeDefinitionsPath(): string;
    get enumTypesDefinitionsPath(): string;
    get definitionsSchemaPath(): string;
    get routerBuildDirectory(): string;
    get definitionsDocumentsPath(): string;
    get typeIndexPath(): string;
    get typeRootDir(): string;
    get typeRootFile(): string;
    get runtimeSource(): string;
    artifactTypePath(document: graphql.DocumentNode): string;
    artifactPath(document: graphql.DocumentNode): string;
    artifactImportPath(name: string): string;
    keyFieldsForType(type: string): string[];
    computeID(type: string, data: any): string;
    documentName(document: graphql.DocumentNode): string;
    isSelectionScalar(type: string): boolean;
    createDirectories(): void;
    get compiledAssetsDir(): string;
    compiledAssetPath(filepath: string): string;
    excludeFile(filepath: string): boolean;
    includeFile(filepath: string, { root, ignore_plugins, }?: {
        root?: string;
        ignore_plugins?: boolean;
    }): boolean;
    pluginRuntimeDirectory(name: string): string;
    get pluginRootDirectory(): string;
    pluginDirectory(name: string): string;
    get loadDirective(): string;
    get maskEnableDirective(): string;
    get maskDisableDirective(): string;
    get listDirective(): string;
    get listPrependDirective(): string;
    get listAppendDirective(): string;
    get listParentDirective(): string;
    get blockingDirective(): string;
    get blockingDisableDirective(): string;
    /**
     * @deprecated
     */
    get deprecatedlistDirectiveParentIDArg(): string;
    get listAllListsDirective(): string;
    get listOrPaginateNameArg(): string;
    get insertFragmentSuffix(): string;
    get removeFragmentSuffix(): string;
    get toggleFragmentSuffix(): string;
    get deleteDirectiveSuffix(): string;
    get loadingDirective(): string;
    get runtimeScalarDirective(): string;
    get whenDirective(): string;
    get whenNotDirective(): string;
    get liveDirective(): string;
    get argumentsDirective(): string;
    get withDirective(): string;
    get paginateDirective(): string;
    get paginateModeArg(): string;
    get cacheDirective(): string;
    get cachePartialArg(): string;
    get cachePolicyArg(): string;
    get requiredDirective(): string;
    paginationQueryName(documentName: string): string;
    isDeleteDirective(name: string): boolean;
    listDeleteDirective(name: string): string;
    deleteDirectiveType(name: string): string;
    isInsertFragment(name: string): boolean;
    listInsertFragment(name: string): string;
    listToggleFragment(name: string): string;
    isRemoveFragment(name: string): boolean;
    isToggleFragment(name: string): boolean;
    listRemoveFragment(name: string): string;
    isInternalEnum(node: graphql.EnumTypeDefinitionNode): boolean;
    isInternalDirective(name: string): boolean;
    get componentFieldDirective(): string;
    componentFieldFragmentName(args: {
        type: string;
        entry: graphql.DirectiveNode | string;
    }): string;
    localDocumentData(document: graphql.DocumentNode): {
        paginated: boolean;
        componentFields: {
            type: string;
            field: string;
        }[];
    };
    registerFragmentVariablesHash({ hash, args, fragment, }: {
        hash: string;
        args: ValueMap | null;
        fragment: string;
    }): void;
    getFragmentVariablesHash(hash: string): {
        args: ValueMap | null;
        fragment: string;
    };
    serializeValueMap(map: ValueMap | null): ValueMap | null;
    isListFragment(name: string): boolean;
    isListOperationDirective(name: string): boolean;
    isFragmentForList(listName: string, fragmentName: string): boolean;
    listOperationFromFragment(fragmentName: string): 'insert' | 'remove' | 'toggle';
    listNameFromDirective(directiveName: string): string;
    listNameFromFragment(fragmentName: string): string;
    extractDefinition(document: graphql.DocumentNode): graphql.ExecutableDefinitionNode;
    extractQueryDefinition(document: graphql.DocumentNode): graphql.OperationDefinitionNode;
    variableFunctionName(name: string): string;
}
export declare function getConfig({ configPath, noSchema, forceReload, ...extraConfig }?: PluginConfig & {
    noSchema?: boolean;
    forceReload?: boolean;
}): Promise<Config>;
export declare function readConfigFile(configPath?: string): Promise<ConfigFile>;
export declare const orderedPlugins: (plugins: PluginMeta[]) => PluginMeta[];
