import type { FragmentRegistryAPI } from "@apollo/client/cache";
import type { DocumentTransform as RealDocumentTransform } from "@apollo/client/core";
import { type DocumentNode } from "graphql";
import type { VFile } from "vfile";
type OperationType = "query" | "mutation" | "subscription";
type DocumentTransform = any extends RealDocumentTransform ? never : RealDocumentTransform;
interface CreateOperationIdOptions {
    operationName: string;
    type: OperationType;
    createDefaultId: () => string;
}
export interface PersistedQueryManifestConfig {
    /**
     * Paths to your GraphQL documents: queries, mutations, subscriptions, and fragments.
     * Prefix the pattern with `!` to specify a path that should be ignored.
     */
    documents?: string | string[] | CustomDocumentSourceConfig;
    /**
     * A `DocumentTransform` instance that will be used to transform the GraphQL
     * document before it is saved to the manifest.
     *
     * For more information about document transforms, see the [Document
     * transforms](https://www.apollographql.com/docs/react/data/document-transforms)
     * documentation page.
     *
     * IMPORTANT: You must be running `@apollo/client` 3.8.0 or greater to use
     * this feature.
     *
     * @example
     * ```ts
     * import { DocumentTransform } from "@apollo/client/core";
     *
     * const config = {
     *   documentTransform: new DocumentTransform((document) => {
     *     // ... transform the document
     *
     *     return transformedDocument;
     *   })
     * }
     * ```
     *
     * @since 1.2.0
     */
    documentTransform?: DocumentTransform;
    /**
     * Path where the manifest file will be written.
     */
    output?: string;
    /**
     * Whether to add `__typename` fields to selection sets in operations.
     * Defaults to true; set to false if you also pass `addTypename: false` to
     * your `InMemoryCache` constructor in your app.
     *
     * Note that the ability to pass `addTypename: false` will not be supported in
     * Apollo Client v4.
     */
    addTypename?: boolean;
    /**
     * Function that generates a manifest operation ID for a given query.
     *
     * Defaults to a sha256 hash of the query.
     */
    createOperationId?: (query: string, options: CreateOperationIdOptions) => string;
}
interface DocumentSourceConfig {
    fragmentRegistry?: FragmentRegistryAPI;
    sources: DocumentSource[];
}
interface CustomDocumentSourceConfig {
    [CUSTOM_DOCUMENTS_SOURCE]: () => DocumentSourceConfig;
}
declare const CUSTOM_DOCUMENTS_SOURCE: unique symbol;
export interface PersistedQueryManifestOperation {
    id: string;
    name: string;
    type: OperationType;
    body: string;
}
export interface PersistedQueryManifest {
    format: "apollo-persisted-query-manifest";
    version: 1;
    operations: PersistedQueryManifestOperation[];
}
/**
 * Source documents from a persisted documents manifest generated by [GraphQL
 * Codegen](https://the-guild.dev/graphql/codegen). Using this utility skips all file system traversal and uses the
 * documents defined in the persisted documents file.
 *
 * For more information see the [Persisted documents](https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#persisted-documents) documentation.
 *
 * @example
 * ```ts
 * import {
 *   fromGraphQLCodegenPersistedDocuments
 * } from '@apollo/generate-persisted-query-manifest';
 *
 * const config = {
 *   documents: fromGraphQLCodegenPersistedDocuments('./path/to/persisted-documents.json')
 * };
 * ```
 *
 * @since 1.2.0
 */
export declare function fromGraphQLCodegenPersistedDocuments(filepath: string): CustomDocumentSourceConfig;
export declare const defaults: {
    documents: string[];
    output: string;
    createOperationId: (query: string) => string;
};
interface Location {
    line: number;
    column: number;
}
interface DocumentSource {
    node: DocumentNode | null;
    file: VFile;
    location: Location | undefined;
}
/** @internal */
export declare function getFilepaths(documents: string | string[] | CustomDocumentSourceConfig): Promise<string[]>;
/** @internal */
export declare function generatePersistedQueryManifest(config: PersistedQueryManifestConfig | undefined, configFilePath: string | undefined): Promise<PersistedQueryManifest>;
export {};
//# sourceMappingURL=index.d.ts.map