import type { Query } from "./types/api/query";
import type { Ref } from "./types/api/ref";
import type { Repository } from "./types/api/repository";
import type { PrismicDocument } from "./types/value/document";
import type { LinkResolverFunction } from "./helpers/asLink";
import { type AbortSignalLike, BaseClient, type BaseClientConfig, type FetchParams, type HttpRequestLike } from "./BaseClient";
import type { BuildQueryURLArgs } from "./buildQueryURL";
/**
 * The number of milliseconds in which repository metadata is considered valid.
 * A ref can be invalidated quickly depending on how frequently content is
 * updated in the Prismic repository. As such, repository's metadata can only be
 * considered valid for a short amount of time.
 */
export declare const REPOSITORY_CACHE_TTL = 5000;
/**
 * The number of milliseconds in which a multi-page `getAll` (e.g. `getAll`,
 * `getAllByType`, `getAllByTag`) will wait between individual page requests.
 *
 * This is done to ensure API performance is sustainable and reduces the chance
 * of a failed API request due to overloading.
 */
export declare const GET_ALL_QUERY_DELAY = 500;
/**
 * Extracts one or more Prismic document types that match a given Prismic
 * document type. If no matches are found, no extraction is performed and the
 * union of all provided Prismic document types are returned.
 *
 * @typeParam TDocuments - Prismic document types from which to extract.
 * @typeParam TDocumentType - Type(s) to match `TDocuments` against.
 */
type ExtractDocumentType<TDocuments extends PrismicDocument, TDocumentType extends TDocuments["type"]> = Extract<TDocuments, {
    type: TDocumentType;
}> extends never ? TDocuments : Extract<TDocuments, {
    type: TDocumentType;
}>;
/**
 * A ref or a function that returns a ref. If a static ref is known, one can be
 * given. If the ref must be fetched on-demand, a function can be provided. This
 * function can optionally be asynchronous.
 */
type RefStringOrThunk = string | (() => string | undefined | Promise<string | undefined>);
/**
 * Configuration for clients that determine how content is queried.
 */
export type ClientConfig = {
    /**
     * The full Rest API V2 endpoint for the repository. This is only helpful if
     * you're using Prismic behind a proxy which we do not recommend.
     *
     * @defaultValue `getRepositoryEndpoint(repositoryNameOrEndpoint)`
     */
    documentAPIEndpoint?: string;
    /**
     * The secure token for accessing the Prismic repository. This is only
     * required if the repository is set to private.
     */
    accessToken?: string;
    /**
     * A string representing a version of the Prismic repository's content. This
     * may point to the latest version (called the "master ref"), or a preview
     * with draft content.
     */
    ref?: RefStringOrThunk;
    /**
     * A list of route resolver objects that define how a document's `url`
     * property is resolved.
     *
     * {@link https://prismic.io/docs/route-resolver}
     */
    routes?: NonNullable<BuildQueryURLArgs["routes"]>;
    /**
     * The `brokenRoute` option allows you to define the route populated in the
     * `url` property for broken link or content relationship fields. A broken
     * link is a link or content relationship field whose linked document has been
     * unpublished or deleted.
     *
     * {@link https://prismic.io/docs/route-resolver}
     */
    brokenRoute?: NonNullable<BuildQueryURLArgs["brokenRoute"]>;
    /**
     * Default parameters that will be sent with each query. These parameters can
     * be overridden on each query if needed.
     */
    defaultParams?: Omit<BuildQueryURLArgs, "ref" | "integrationFieldsRef" | "accessToken" | "routes" | "brokenRoute">;
} & BaseClientConfig;
/**
 * Parameters specific to client methods that fetch all documents. These methods
 * start with `getAll` (for example, `getAllByType`).
 */
type GetAllParams = {
    /**
     * Limit the number of documents queried. If a number is not provided, there
     * will be no limit and all matching documents will be returned.
     */
    limit?: number;
};
/**
 * Arguments to determine how the URL for a preview session is resolved.
 */
type ResolvePreviewArgs<LinkResolverReturnType> = {
    /**
     * A function that maps a Prismic document to a URL within your app.
     */
    linkResolver?: LinkResolverFunction<LinkResolverReturnType>;
    /**
     * A fallback URL if the link resolver does not return a value.
     */
    defaultURL: string;
    /**
     * The preview token (also known as a ref) that will be used to query preview
     * content from the Prismic repository.
     */
    previewToken?: string;
    /**
     * The previewed document that will be used to determine the destination URL.
     */
    documentID?: string;
};
/**
 * A client that allows querying content from a Prismic repository.
 *
 * If used in an environment where a global `fetch` function is unavailable,
 * such as Node.js, the `fetch` option must be provided as part of the `options`
 * parameter.
 *
 * @typeParam TDocuments - Document types that are registered for the Prismic
 *   repository. Query methods will automatically be typed based on this type.
 */
export declare class Client<TDocuments extends PrismicDocument = PrismicDocument> extends BaseClient {
    #private;
    /**
     * The Prismic repository's name.
     */
    set repositoryName(value: string);
    /**
     * The Prismic repository's name.
     */
    get repositoryName(): string;
    /**
     * The Prismic REST API V2 endpoint for the repository (use
     * `prismic.getRepositoryEndpoint` for the default endpoint).
     */
    documentAPIEndpoint: string;
    /**
     * The Prismic REST API V2 endpoint for the repository (use
     * `prismic.getRepositoryEndpoint` for the default endpoint).
     *
     * @deprecated Use `documentAPIEndpoint` instead.
     */
    set endpoint(value: string);
    /**
     * The Prismic REST API V2 endpoint for the repository (use
     * `prismic.getRepositoryEndpoint` for the default endpoint).
     *
     * @deprecated Use `documentAPIEndpoint` instead.
     */
    get endpoint(): string;
    /**
     * The secure token for accessing the API (only needed if your repository is
     * set to private).
     *
     * {@link https://user-guides.prismic.io/en/articles/1036153-generating-an-access-token}
     */
    accessToken?: string;
    /**
     * A list of route resolver objects that define how a document's `url` field
     * is resolved.
     *
     * {@link https://prismic.io/docs/route-resolver}
     */
    routes?: NonNullable<BuildQueryURLArgs["routes"]>;
    /**
     * The `brokenRoute` option allows you to define the route populated in the
     * `url` property for broken link or content relationship fields. A broken
     * link is a link or content relationship field whose linked document has been
     * unpublished or deleted.
     *
     * {@link https://prismic.io/docs/route-resolver}
     */
    brokenRoute?: NonNullable<BuildQueryURLArgs["brokenRoute"]>;
    /**
     * Default parameters that will be sent with each query. These parameters can
     * be overridden on each query if needed.
     */
    defaultParams?: Omit<BuildQueryURLArgs, "ref" | "integrationFieldsRef" | "accessToken" | "routes">;
    /**
     * The client's ref mode state. This determines which ref is used during
     * queries.
     */
    private refState;
    /**
     * Cached repository value.
     */
    private cachedRepository;
    /**
     * Timestamp at which the cached repository data is considered stale.
     */
    private cachedRepositoryExpiration;
    /**
     * Creates a Prismic client that can be used to query a repository.
     *
     * If used in an environment where a global `fetch` function is unavailable,
     * such as in some Node.js versions, the `fetch` option must be provided as
     * part of the `options` parameter.
     *
     * @param repositoryNameOrEndpoint - The Prismic repository name or full Rest
     *   API V2 endpoint for the repository.
     * @param options - Configuration that determines how content will be queried
     *   from the Prismic repository.
     *
     * @returns A client that can query content from the repository.
     */
    constructor(repositoryNameOrEndpoint: string, options?: ClientConfig);
    /**
     * Enables the client to automatically query content from a preview session if
     * one is active in browser environments. This is enabled by default in the
     * browser.
     *
     * For server environments, use `enableAutoPreviewsFromReq`.
     *
     * @example
     *
     * ```ts
     * client.enableAutoPreviews()
     * ```
     *
     * @see enableAutoPreviewsFromReq
     */
    enableAutoPreviews(): void;
    /**
     * Enables the client to automatically query content from a preview session if
     * one is active in server environments. This is disabled by default on the
     * server.
     *
     * For browser environments, use `enableAutoPreviews`.
     *
     * @example
     *
     * ```ts
     * // In an express app
     * app.get("/", function (req, res) {
     * 	client.enableAutoPreviewsFromReq(req)
     * })
     * ```
     *
     * @param req - An HTTP server request object containing the request's
     *   cookies.
     */
    enableAutoPreviewsFromReq<R extends HttpRequestLike>(req: R): void;
    /**
     * Disables the client from automatically querying content from a preview
     * session if one is active.
     *
     * Automatic preview content querying is enabled by default unless this method
     * is called.
     *
     * @example
     *
     * ```ts
     * client.disableAutoPreviews()
     * ```
     */
    disableAutoPreviews(): void;
    /**
     * Queries content from the Prismic repository.
     *
     * @example
     *
     * ```ts
     * const response = await client.get()
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param params - Parameters to filter, sort, and paginate results.
     *
     * @returns A paginated response containing the result of the query.
     */
    get<TDocument extends TDocuments>(params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<TDocument>>;
    /**
     * Queries content from the Prismic repository and returns only the first
     * result, if any.
     *
     * @example
     *
     * ```ts
     * const document = await client.getFirst()
     * ```
     *
     * @typeParam TDocument - Type of the Prismic document returned.
     *
     * @param params - Parameters to filter, sort, and paginate results.
     *
     * @returns The first result of the query, if any.
     */
    getFirst<TDocument extends TDocuments>(params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<TDocument>;
    /**
     * **IMPORTANT**: Avoid using `dangerouslyGetAll` as it may be slower and
     * require more resources than other methods. Prefer using other methods that
     * filter by filters such as `getAllByType`.
     *
     * Queries content from the Prismic repository and returns all matching
     * content. If no filters are provided, all documents will be fetched.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @example
     *
     * ```ts
     * const response = await client.dangerouslyGetAll()
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param params - Parameters to filter, sort, and paginate results.
     *
     * @returns A list of documents matching the query.
     */
    dangerouslyGetAll<TDocument extends TDocuments>(params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<TDocument[]>;
    /**
     * Queries a document from the Prismic repository with a specific ID.
     *
     * @remarks
     * A document's UID is different from its ID. An ID is automatically generated
     * for all documents and is made available on its `id` property. A UID is
     * provided in the Prismic editor and is unique among all documents of its
     * custom type.
     *
     * @example
     *
     * ```ts
     * const document = await client.getByID("WW4bKScAAMAqmluX")
     * ```
     *
     * @typeParam TDocument- Type of the Prismic document returned.
     *
     * @param id - ID of the document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns The document with an ID matching the `id` parameter, if a matching
     *   document exists.
     */
    getByID<TDocument extends TDocuments>(id: string, params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<TDocument>;
    /**
     * Queries documents from the Prismic repository with specific IDs.
     *
     * @remarks
     * A document's UID is different from its ID. An ID is automatically generated
     * for all documents and is made available on its `id` property. A UID is
     * provided in the Prismic editor and is unique among all documents of its
     * custom type.
     *
     * @example
     *
     * ```ts
     * const response = await client.getByIDs([
     * 	"WW4bKScAAMAqmluX",
     * 	"U1kTRgEAAC8A5ldS",
     * ])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param ids - A list of document IDs.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A paginated response containing documents with IDs matching the
     *   `ids` parameter.
     */
    getByIDs<TDocument extends TDocuments>(ids: string[], params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<TDocument>>;
    /**
     * Queries all documents from the Prismic repository with specific IDs.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @remarks
     * A document's UID is different from its ID. An ID is automatically generated
     * for all documents and is made available on its `id` property. A UID is
     * provided in the Prismic editor and is unique among all documents of its
     * custom type.
     *
     * @example
     *
     * ```ts
     * const response = await client.getAllByIDs([
     * 	"WW4bKScAAMAqmluX",
     * 	"U1kTRgEAAC8A5ldS",
     * ])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param ids - A list of document IDs.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A list of documents with IDs matching the `ids` parameter.
     */
    getAllByIDs<TDocument extends TDocuments>(ids: string[], params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<TDocument[]>;
    /**
     * Queries a document from the Prismic repository with a specific UID and
     * custom type.
     *
     * @remarks
     * A document's UID is different from its ID. An ID is automatically generated
     * for all documents and is made available on its `id` property. A UID is
     * provided in the Prismic editor and is unique among all documents of its
     * custom type.
     *
     * @example
     *
     * ```ts
     * const document = await client.getByUID("blog_post", "my-first-post")
     * ```
     *
     * @typeParam TDocument - Type of the Prismic document returned.
     *
     * @param documentType - The API ID of the document's custom type.
     * @param uid - UID of the document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns The document with a UID matching the `uid` parameter, if a
     *   matching document exists.
     */
    getByUID<TDocument extends TDocuments, TDocumentType extends TDocument["type"] = TDocument["type"]>(documentType: TDocumentType, uid: string, params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<ExtractDocumentType<TDocument, TDocumentType>>;
    /**
     * Queries document from the Prismic repository with specific UIDs and Custom
     * Type.
     *
     * @remarks
     * A document's UID is different from its ID. An ID is automatically generated
     * for all documents and is made available on its `id` property. A UID is
     * provided in the Prismic editor and is unique among all documents of its
     * custom type.
     *
     * @example
     *
     * ```ts
     * const document = await client.getByUIDs("blog_post", [
     * 	"my-first-post",
     * 	"my-second-post",
     * ])
     * ```
     *
     * @typeParam TDocument - Type of the Prismic document returned.
     *
     * @param documentType - The API ID of the document's custom type.
     * @param uids - A list of document UIDs.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A paginated response containing documents with UIDs matching the
     *   `uids` parameter.
     */
    getByUIDs<TDocument extends TDocuments, TDocumentType extends TDocument["type"] = TDocument["type"]>(documentType: TDocumentType, uids: string[], params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<ExtractDocumentType<TDocument, TDocumentType>>>;
    /**
     * Queries all documents from the Prismic repository with specific UIDs and
     * custom type.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @remarks
     * A document's UID is different from its ID. An ID is automatically generated
     * for all documents and is made available on its `id` property. A UID is
     * provided in the Prismic editor and is unique among all documents of its
     * custom type.
     *
     * @example
     *
     * ```ts
     * const response = await client.getAllByUIDs([
     * 	"my-first-post",
     * 	"my-second-post",
     * ])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param documentType - The API ID of the document's custom type.
     * @param uids - A list of document UIDs.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A list of documents with UIDs matching the `uids` parameter.
     */
    getAllByUIDs<TDocument extends TDocuments, TDocumentType extends TDocument["type"] = TDocument["type"]>(documentType: TDocumentType, uids: string[], params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<ExtractDocumentType<TDocument, TDocumentType>[]>;
    /**
     * Queries a singleton document from the Prismic repository for a specific
     * custom type.
     *
     * @remarks
     * A singleton document is one that is configured in Prismic to only allow one
     * instance. For example, a repository may be configured to contain just one
     * Settings document. This is in contrast to a repeatable custom type which
     * allows multiple instances of itself.
     *
     * @example
     *
     * ```ts
     * const document = await client.getSingle("settings")
     * ```
     *
     * @typeParam TDocument - Type of the Prismic document returned.
     *
     * @param documentType - The API ID of the singleton custom type.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns The singleton document for the custom type, if a matching document
     *   exists.
     */
    getSingle<TDocument extends TDocuments, TDocumentType extends TDocument["type"] = TDocument["type"]>(documentType: TDocumentType, params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<ExtractDocumentType<TDocument, TDocumentType>>;
    /**
     * Queries documents from the Prismic repository for a specific custom type.
     *
     * Use `getAllByType` instead if you need to query all documents for a
     * specific custom type.
     *
     * @example
     *
     * ```ts
     * const response = await client.getByType("blog_post")
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param documentType - The API ID of the custom type.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A paginated response containing documents of the custom type.
     */
    getByType<TDocument extends TDocuments, TDocumentType extends TDocument["type"] = TDocument["type"]>(documentType: TDocumentType, params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<ExtractDocumentType<TDocument, TDocumentType>>>;
    /**
     * Queries all documents from the Prismic repository for a specific Custom
     * Type.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @example
     *
     * ```ts
     * const response = await client.getByType("blog_post")
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param documentType - The API ID of the custom type.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A list of all documents of the custom type.
     */
    getAllByType<TDocument extends TDocuments, TDocumentType extends TDocument["type"] = TDocument["type"]>(documentType: TDocumentType, params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<ExtractDocumentType<TDocument, TDocumentType>[]>;
    /**
     * Queries documents from the Prismic repository with a specific tag.
     *
     * Use `getAllByTag` instead if you need to query all documents with a
     * specific tag.
     *
     * @example
     *
     * ```ts
     * const response = await client.getByTag("food")
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param tag - The tag that must be included on a document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A paginated response containing documents with the tag.
     */
    getByTag<TDocument extends TDocuments>(tag: string, params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<TDocument>>;
    /**
     * Queries all documents from the Prismic repository with a specific tag.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @example
     *
     * ```ts
     * const response = await client.getAllByTag("food")
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param tag - The tag that must be included on a document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A list of all documents with the tag.
     */
    getAllByTag<TDocument extends TDocuments>(tag: string, params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<TDocument[]>;
    /**
     * Queries documents from the Prismic repository with specific tags. A
     * document must be tagged with all of the queried tags to be included.
     *
     * @example
     *
     * ```ts
     * const response = await client.getByEveryTag(["food", "fruit"])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param tags - A list of tags that must be included on a document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A paginated response containing documents with the tags.
     */
    getByEveryTag<TDocument extends TDocuments>(tags: string[], params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<TDocument>>;
    /**
     * Queries documents from the Prismic repository with specific tags. A
     * document must be tagged with all of the queried tags to be included.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @example
     *
     * ```ts
     * const response = await client.getAllByEveryTag(["food", "fruit"])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param tags - A list of tags that must be included on a document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A list of all documents with the tags.
     */
    getAllByEveryTag<TDocument extends TDocuments>(tags: string[], params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<TDocument[]>;
    /**
     * Queries documents from the Prismic repository with specific tags. A
     * document must be tagged with at least one of the queried tags to be
     * included.
     *
     * @example
     *
     * ```ts
     * const response = await client.getByEveryTag(["food", "fruit"])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param tags - A list of tags that must be included on a document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A paginated response containing documents with at least one of the
     *   tags.
     */
    getBySomeTags<TDocument extends TDocuments>(tags: string[], params?: Partial<BuildQueryURLArgs> & FetchParams): Promise<Query<TDocument>>;
    /**
     * Queries documents from the Prismic repository with specific tags. A
     * document must be tagged with at least one of the queried tags to be
     * included.
     *
     * This method may make multiple network requests to query all matching
     * content.
     *
     * @example
     *
     * ```ts
     * const response = await client.getAllBySomeTags(["food", "fruit"])
     * ```
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param tags - A list of tags that must be included on a document.
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A list of all documents with at least one of the tags.
     */
    getAllBySomeTags<TDocument extends TDocuments>(tags: string[], params?: Partial<Omit<BuildQueryURLArgs, "page">> & GetAllParams & FetchParams): Promise<TDocument[]>;
    /**
     * Returns metadata about the Prismic repository, such as its refs, releases,
     * and custom types.
     *
     * @returns Repository metadata.
     */
    getRepository(params?: FetchParams): Promise<Repository>;
    /**
     * Returns a list of all refs for the Prismic repository.
     *
     * Refs are used to identify which version of the repository's content should
     * be queried. All repositories will have at least one ref pointing to the
     * latest published content called the "master ref".
     *
     * @returns A list of all refs for the Prismic repository.
     */
    getRefs(params?: FetchParams): Promise<Ref[]>;
    /**
     * Returns a ref for the Prismic repository with a matching ID.
     *
     * @param id - ID of the ref.
     *
     * @returns The ref with a matching ID, if it exists.
     */
    getRefByID(id: string, params?: FetchParams): Promise<Ref>;
    /**
     * Returns a ref for the Prismic repository with a matching label.
     *
     * @param label - Label of the ref.
     *
     * @returns The ref with a matching label, if it exists.
     */
    getRefByLabel(label: string, params?: FetchParams): Promise<Ref>;
    /**
     * Returns the master ref for the Prismic repository. The master ref points to
     * the repository's latest published content.
     *
     * @returns The repository's master ref.
     */
    getMasterRef(params?: FetchParams): Promise<Ref>;
    /**
     * Returns a list of all Releases for the Prismic repository. Releases are
     * used to group content changes before publishing.
     *
     * @returns A list of all Releases for the Prismic repository.
     */
    getReleases(params?: FetchParams): Promise<Ref[]>;
    /**
     * Returns a Release for the Prismic repository with a matching ID.
     *
     * @param id - ID of the Release.
     *
     * @returns The Release with a matching ID, if it exists.
     */
    getReleaseByID(id: string, params?: FetchParams): Promise<Ref>;
    /**
     * Returns a Release for the Prismic repository with a matching label.
     *
     * @param label - Label of the ref.
     *
     * @returns The ref with a matching label, if it exists.
     */
    getReleaseByLabel(label: string, params?: FetchParams): Promise<Ref>;
    /**
     * Returns a list of all tags used in the Prismic repository.
     *
     * @returns A list of all tags used in the repository.
     */
    getTags(params?: FetchParams): Promise<string[]>;
    /**
     * Builds a URL used to query content from the Prismic repository.
     *
     * @param params - Parameters to filter, sort, and paginate the results.
     *
     * @returns A URL string that can be requested to query content.
     */
    buildQueryURL({ signal, fetchOptions, ...params }?: Partial<BuildQueryURLArgs> & FetchParams): Promise<string>;
    /**
     * Determines the URL for a previewed document during an active preview
     * session. The result of this method should be used to redirect the user to
     * the document's URL.
     *
     * @example
     *
     * ```ts
     * 	const url = client.resolvePreviewURL({
     * 	linkResolver: (document) => `/${document.uid}`
     * 	defaultURL: '/'
     * 	})
     * ```
     *
     * @param args - Arguments to configure the URL resolving.
     *
     * @returns The URL for the previewed document during an active preview
     *   session. The user should be redirected to this URL.
     */
    resolvePreviewURL<LinkResolverReturnType>(args: ResolvePreviewArgs<LinkResolverReturnType> & FetchParams): Promise<string>;
    /**
     * Configures the client to query the latest published content for all future
     * queries.
     *
     * If the `ref` parameter is provided during a query, it takes priority for
     * that query.
     *
     * @example
     *
     * ```ts
     * await client.queryLatestContent()
     * const document = await client.getByID("WW4bKScAAMAqmluX")
     * ```
     */
    queryLatestContent(): void;
    /**
     * Configures the client to query content from a specific Release identified
     * by its ID for all future queries.
     *
     * If the `ref` parameter is provided during a query, it takes priority for
     * that query.
     *
     * @example
     *
     * ```ts
     * await client.queryContentFromReleaseByID("YLB7OBAAACMA7Cpa")
     * const document = await client.getByID("WW4bKScAAMAqmluX")
     * ```
     *
     * @param releaseID - The ID of the Release.
     */
    queryContentFromReleaseByID(releaseID: string): void;
    /**
     * Configures the client to query content from a specific Release identified
     * by its label for all future queries.
     *
     * If the `ref` parameter is provided during a query, it takes priority for
     * that query.
     *
     * @example
     *
     * ```ts
     * await client.queryContentFromReleaseByLabel("My Release")
     * const document = await client.getByID("WW4bKScAAMAqmluX")
     * ```
     *
     * @param releaseLabel - The label of the Release.
     */
    queryContentFromReleaseByLabel(releaseLabel: string): void;
    /**
     * Configures the client to query content from a specific ref. The ref can be
     * provided as a string or a function.
     *
     * If a function is provided, the ref is fetched lazily before each query. The
     * function may also be asynchronous.
     *
     * @example
     *
     * ```ts
     * await client.queryContentFromRef("my-ref")
     * const document = await client.getByID("WW4bKScAAMAqmluX")
     * ```
     *
     * @param ref - The ref or a function that returns the ref from which to query
     *   content.
     */
    queryContentFromRef(ref: RefStringOrThunk): void;
    /**
     * A `fetch()` function to be used with GraphQL clients configured for
     * Prismic's GraphQL API. It automatically applies the necessary `prismic-ref`
     * and Authorization headers. Queries will automatically be minified by
     * removing whitespace where possible.
     *
     * @example
     *
     * ```ts
     * const graphQLClient = new ApolloClient({
     * 	link: new HttpLink({
     * 		uri: prismic.getGraphQLEndpoint(repositoryName),
     * 		// Provide `client.graphQLFetch` as the fetch implementation.
     * 		fetch: client.graphQLFetch,
     * 		// Using GET is required.
     * 		useGETForQueries: true,
     * 	}),
     * 	cache: new InMemoryCache(),
     * })
     * ```
     *
     * @param input - The `fetch()` `input` parameter. Only strings are supported.
     * @param init - The `fetch()` `init` parameter. Only plain objects are
     *   supported.
     *
     * @returns The `fetch()` Response for the request.
     *
     * @experimental
     */
    graphQLFetch(input: RequestInfo, init?: Omit<RequestInit, "signal"> & {
        signal?: AbortSignalLike;
    }): Promise<Response>;
    /**
     * Returns a cached version of `getRepository` with a TTL.
     *
     * @returns Cached repository metadata.
     */
    private getCachedRepository;
    /**
     * Returns a cached Prismic repository form. Forms are used to determine API
     * endpoints for types of repository data.
     *
     * @param name - Name of the form.
     *
     * @returns The repository form.
     *
     * @throws If a matching form cannot be found.
     */
    private getCachedRepositoryForm;
    /**
     * Returns the ref needed to query based on the client's current state. This
     * method may make a network request to fetch a ref or resolve the user's ref
     * thunk.
     *
     * If auto previews are enabled, the preview ref takes priority if available.
     *
     * The following strategies are used depending on the client's state:
     *
     * - If the user called `queryLatestContent`: Use the repository's master ref.
     *   The ref is cached for 5 seconds. After 5 seconds, a new master ref is
     *   fetched.
     * - If the user called `queryContentFromReleaseByID`: Use the release's ref.
     *   The ref is cached for 5 seconds. After 5 seconds, a new ref for the
     *   release is fetched.
     * - If the user called `queryContentFromReleaseByLabel`: Use the release's ref.
     *   The ref is cached for 5 seconds. After 5 seconds, a new ref for the
     *   release is fetched.
     * - If the user called `queryContentFromRef`: Use the provided ref. Fall back
     *   to the master ref if the ref is not a string.
     *
     * @returns The ref to use during a query.
     */
    private getResolvedRefString;
    /**
     * The private implementation of `this.get`. It returns the API response and
     * the URL used to make the request. The URL is sometimes used in the public
     * method to include in thrown errors.
     *
     * This method retries requests that throw `RefNotFoundError` or
     * `RefExpiredError`. It contains special logic to retry with the latest
     * master ref, provided in the API's error message.
     *
     * @typeParam TDocument - Type of Prismic documents returned.
     *
     * @param params - Parameters to filter, sort, and paginate results.
     *
     * @returns An object containing the paginated response containing the result
     *   of the query and the URL used to make the API request.
     */
    private _get;
    /**
     * Performs a network request using the configured `fetch` function. It
     * assumes all successful responses will have a JSON content type. It also
     * normalizes unsuccessful network requests.
     *
     * @typeParam T - The JSON response.
     *
     * @param url - URL to the resource to fetch.
     * @param params - Prismic REST API parameters for the network request.
     *
     * @returns The JSON response from the network request.
     */
    protected fetch<T = unknown>(url: string, params?: FetchParams): Promise<T>;
}
export {};
