/**
 * GraphQL Markdown configuration utilities
 *
 * This module provides utilities for loading and processing GraphQL configuration
 * using the graphql-config package.
 *
 * @module graphql-config
 */
import type { ExtensionProjectConfig, GraphQLExtensionDeclaration, LoaderOption, Maybe, PackageOptionsConfig } from "@graphql-markdown/types";
/**
 * The name of the GraphQL Markdown extension.
 * Used to identify the extension in graphql-config.
 */
export declare const EXTENSION_NAME: "graphql-markdown";
/**
 * GraphQL extension declaration for graphql-config.
 *
 * @returns The extension configuration object with name property.
 *
 * @example
 * ```typescript
 * // In graphql-config setup
 * const config = await loadConfig({
 *   extensions: [graphQLConfigExtension],
 * });
 * ```
 */
export declare const graphQLConfigExtension: GraphQLExtensionDeclaration;
/**
 * Options for controlling throw behavior when loading configuration.
 *
 * @interface ThrowOptions
 * @property throwOnMissing Whether to throw when the config file is missing.
 * @property throwOnEmpty Whether to throw when the config is empty.
 */
interface ThrowOptions {
    throwOnMissing?: boolean;
    throwOnEmpty?: boolean;
}
/**
 * Sets loader options for GraphQL Markdown loaders.
 *
 * This function takes a LoaderOption object and merges the provided options
 * with any existing options for each loader.
 *
 * @param loaders - The loader configuration object.
 * @param options - The package options to apply to loaders.
 * @returns The updated loader configuration.
 *
 * @example
 * ```typescript
 * const loaders = {
 *   TypeScriptLoader: {
 *     module: "@graphql-markdown/typescript-loader",
 *     options: { baseDir: "./src" }
 *   }
 * };
 * const options = { outputDir: "./docs" };
 * const updatedLoaders = setLoaderOptions(loaders, options);
 * // Result: loaders with { baseDir: "./src", outputDir: "./docs" }
 * ```
 */
export declare const setLoaderOptions: (loaders: LoaderOption, options: PackageOptionsConfig) => LoaderOption;
/**
 * Loads the GraphQL Markdown configuration from graphql-config.
 *
 * This function attempts to load the GraphQL config and extract the
 * GraphQL Markdown extension configuration for the specified project ID.
 * It also normalizes schema configurations.
 *
 * @param id - The project ID to load configuration for.
 * @param options - Optional package options to apply.
 * @param throwOptions - Options for controlling throw behavior.
 * @returns The extension project configuration if found, otherwise undefined.
 *
 * @throws Will throw an error if throwOnMissing or throwOnEmpty is true and
 * the corresponding condition is met.
 *
 * @example
 * ```typescript
 * // Basic usage
 * const config = await loadConfiguration("my-project");
 *
 * // With options and throw behavior
 * const config = await loadConfiguration(
 *   "my-project",
 *   { baseDir: "./src" },
 *   { throwOnMissing: true, throwOnEmpty: false }
 * );
 * ```
 */
export declare const loadConfiguration: (id: Maybe<string>, options?: Maybe<PackageOptionsConfig>, { throwOnMissing, throwOnEmpty }?: ThrowOptions) => Promise<Maybe<Readonly<ExtensionProjectConfig>>>;
export {};
