/**
 * GROQ queries scoped to each documentation feature area.
 *
 * Schema notes (dataset: gabe-wyatt-doc-plat-dev-2026-01-05):
 *
 *   _type == "article"        — 614 documentation articles
 *   primarySection             — reference to a docsNavSection
 *   content[]                  — Portable Text rich-text field
 *   slug.current               — URL slug
 *
 *   Code blocks in `content`:
 *     _type == "codeBlock" → blocks[].code.code, blocks[].code.language, blocks[].filename
 *
 *   Sections are _type == "docsNavSection" with slug.current.
 *
 * Each query joins through primarySection._ref to the relevant
 * docsNavSection IDs and returns a consistent projection.
 */
export declare const FEATURE_AREA_QUERIES: {
    /**
     * Other Frameworks — Nuxt, React Router/Remix, Astro
     */
    readonly frameworks: "\n    *[_type == \"article\"\n      && !(_id in path(\"drafts.**\"))\n      && (\n        primarySection._ref in [\n          \"b2c937d0-34b3-435e-818b-d0c8520ea9b8\",\n          \"e223241c-e207-41e0-8e12-f80e78203cf1\",\n          \"73bebb61-e508-42b7-b44b-c4703ae42d01\"\n        ]\n        || (primarySection._ref == \"ea6b80fa-d0d2-4daa-8220-eb8abdcc9deb\"\n            && (title match \"Remix*\" || title match \"Nuxt*\"\n                || title match \"Astro*\" || title match \"SvelteKit*\"))\n      )\n    ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n  ";
    /**
     * Functions / Compute / AI — serverless functions, webhooks
     * Section: "Compute and AI" (12 articles)
     */
    readonly functions: "\n    *[_type == \"article\"\n      && primarySection._ref == \"3024ce79-c196-49ee-a237-a327d6a6348f\"\n      && !(_id in path(\"drafts.**\"))\n    ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n  ";
    /**
     * GROQ Query Language — introduction, syntax, joins, filtering, projections
     * Combines: Content Lake section GROQ articles + Developer Guides articles
     * about querying + title-matched GROQ articles across all sections.
     */
    readonly groq: "\n    *[_type == \"article\"\n      && !(_id in path(\"drafts.**\"))\n      && (\n        primarySection._ref == \"60a6bcb5-9706-4cab-9153-57725e28f4d0\"\n        || primarySection._ref == \"ea6b80fa-d0d2-4daa-8220-eb8abdcc9deb\"\n      )\n      && (\n        title match \"GROQ*\"\n        || title match \"*GROQ*\"\n        || title match \"Query*\"\n        || title match \"How Queries*\"\n        || slug.current match \"groq-*\"\n        || slug.current match \"query-*\"\n        || slug.current match \"how-queries-*\"\n        || slug.current match \"paginating-with-groq\"\n        || slug.current match \"high-performance-groq\"\n      )\n    ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n  ";
    /**
     * Next.js integration + Live Content API
     * Combines: Next.js quickstart section + developer-guide articles
     * mentioning Next.js or Live Content.
     */
    readonly "nextjs-live": "\n    *[_type == \"article\"\n      && !(_id in path(\"drafts.**\"))\n      && (\n        primarySection._ref == \"6208dff1-bba7-487a-a6bb-a0ffccb5846c\"\n        || (primarySection._ref == \"ea6b80fa-d0d2-4daa-8220-eb8abdcc9deb\"\n            && (title match \"Next*\" || title match \"*Live*\"))\n      )\n    ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n  ";
    /**
     * Studio Setup & Customization
     * Section: "Studio" (116 articles)
     */
    readonly "studio-setup": "\n    *[_type == \"article\"\n      && primarySection._ref == \"d67e3879-0342-4a80-8a2d-e35908df35cc\"\n      && !(_id in path(\"drafts.**\"))\n    ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n  ";
    /**
     * Visual Editing — Presentation tool, overlays, live preview
     * Section: "Visual Editing" (24 articles)
     */
    readonly "visual-editing": "\n    *[_type == \"article\"\n      && primarySection._ref == \"4e0ef463-01e2-48db-9a31-38b3912ececd\"\n      && !(_id in path(\"drafts.**\"))\n    ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n  ";
};
export type FeatureArea = keyof typeof FEATURE_AREA_QUERIES;
export declare const ALL_FEATURE_AREAS: FeatureArea[];
/**
 * Fetch a single article by its slug.
 * Returns the same projection shape as the feature-area queries.
 */
export declare const ARTICLE_BY_SLUG_QUERY = "\n  *[_type == \"article\"\n    && slug.current == $slug\n    && !(_id in path(\"drafts.**\"))\n  ][0] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n";
/**
 * Fetch all published articles (for full-corpus generation).
 */
export declare const ALL_ARTICLES_QUERY = "\n  *[_type == \"article\"\n    && !(_id in path(\"drafts.**\"))\n  ] | order(primarySection->slug.current, title) {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n";
/**
 * Fetch article metadata for a list of slugs.
 *
 * Returns lightweight metadata (slug + _rev) for comparison between
 * published and perspective states. The _rev field changes when a document
 * is modified, making it an efficient diff signal.
 *
 * Usage: client.fetch(ARTICLES_METADATA_BY_SLUGS_QUERY, { slugs: ["slug-a", "slug-b"] })
 */
export declare const ARTICLES_METADATA_BY_SLUGS_QUERY = "\n  *[_type == \"article\"\n    && slug.current in $slugs\n    && !(_id in path(\"drafts.**\"))\n  ] {\n    \"slug\": slug.current,\n    \"sectionSlug\": primarySection->slug.current,\n    _id,\n    _rev,\n    title\n  }\n";
/**
 * Fetch a single article by its slug — identical to ARTICLE_BY_SLUG_QUERY
 * but designed to be called with a perspective-enabled client.
 *
 * Returns the full article projection for content comparison.
 */
export declare const ARTICLE_BY_SLUG_WITH_PERSPECTIVE_QUERY = "\n  *[_type == \"article\"\n    && slug.current == $slug\n  ][0] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n";
/**
 * Fetch articles by their document IDs.
 *
 * Does NOT include the `!(_id in path("drafts.**"))` filter because this
 * query is designed for use with perspective-enabled clients where draft
 * filtering is handled at the client level.
 *
 * @param $ids — array of document ID strings
 */
export declare const ARTICLES_BY_IDS_QUERY = "\n  *[_type == \"article\"\n    && _id in $ids\n  ] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n";
/**
 * Fetch arbitrary documents by their `_id` — no `_type` filter.
 *
 * Used by id-ref resolution so authors can pin any document type
 * (`article`, `typesReference`, `marketingPage`, `glossaryEntry`, …),
 * not just articles. The projection branches on `_type`:
 *
 *   - `article` → reuses ARTICLE_PROJECTION's flatten + card-deref shape.
 *   - `typesReference` → derefs `library` and `latestVersion`, including
 *     the resolved file asset URL so the renderer can fetch typedoc JSON
 *     without a follow-up round-trip.
 *   - default `{...}` → returns the raw document fields, which the
 *     default walker in `document-renderers.ts` flattens to Markdown.
 *
 * Does NOT include the `!(_id in path("drafts.**"))` filter — id-ref
 * resolution is intentional, drafts are queryable when perspective is
 * draft-enabled, and authors are expected to pin published `_id`s.
 *
 * @param $ids — array of document ID strings
 */
export declare const DOCS_BY_IDS_QUERY = "\n  *[_id in $ids] {\n    _id,\n    _type,\n    _system,\n    _createdAt,\n    _updatedAt,\n    _rev,\n    _type == \"article\" => {\n      title,\n      description,\n      \"slug\": slug.current,\n      \"section\": primarySection->{ \"slug\": slug.current, title },\n      \"content\": content[] {\n        _type != \"docsCardCollection\" => { ... },\n        _type == \"docsCardCollection\" => {\n          ...,\n          cards[] {\n            ...,\n            \"resolvedTitle\": reference->title,\n            \"resolvedSlug\": reference->slug.current\n          }\n        }\n      }\n    },\n    _type == \"typesReference\" => {\n      title,\n      autoPublish,\n      \"slug\": slug,\n      \"library\": library->{ _id, _type, title, npmName },\n      \"latestVersion\": latestVersion->{\n        _id,\n        _type,\n        semver,\n        date,\n        \"attachment\": {\n          \"asset\": attachment.asset->{\n            _id,\n            _type,\n            url,\n            originalFilename,\n            mimeType,\n            size,\n            extension\n          }\n        }\n      }\n    },\n    !(_type in [\"article\", \"typesReference\"]) => { ... }\n  }\n";
/**
 * Fetch a single article by its document ID.
 *
 * Does NOT include the `!(_id in path("drafts.**"))` filter because this
 * query is designed for use with perspective-enabled clients where draft
 * filtering is handled at the client level.
 *
 * @param $id — document ID string
 */
export declare const ARTICLE_BY_ID_QUERY = "\n  *[_type == \"article\"\n    && _id == $id\n  ][0] {\n  _id,\n  _type,\n  _rev,\n  title,\n  description,\n  \"slug\": slug.current,\n  \"section\": primarySection->{ \"slug\": slug.current, title },\n  \"content\": content[] {\n    // Pass through all standard blocks unchanged\n    _type != \"docsCardCollection\" => { ... },\n    // Resolve references inside card collections so we get titles/slugs\n    _type == \"docsCardCollection\" => {\n      ...,\n      cards[] {\n        ...,\n        \"resolvedTitle\": reference->title,\n        \"resolvedSlug\": reference->slug.current\n      }\n    }\n  }\n}\n";
/**
 * Resolve an article slug from a URL path segment.
 *
 * Handles simple paths (just the slug, e.g., "webhooks") by matching
 * against slug.current. Returns the slug for downstream slug-based fetching.
 *
 * @param $slug — the path segment (article slug)
 */
export declare const ARTICLE_SLUG_BY_PATH_QUERY = "\n  *[_type == \"article\"\n    && slug.current == $slug\n    && !(_id in path(\"drafts.**\"))\n  ][0] { \"slug\": slug.current, \"sectionSlug\": primarySection->slug.current }\n";
/**
 * Resolve an article slug from a section-qualified path.
 *
 * Handles compound paths like "content-lake/webhooks" where the first
 * segment is the section slug and the last segment is the article slug.
 * This disambiguates articles that share a slug across different sections.
 *
 * @param $articleSlug — the article slug (last path segment)
 * @param $sectionSlug — the section slug (first path segment)
 */
export declare const ARTICLE_SLUG_BY_SECTION_PATH_QUERY = "\n  *[_type == \"article\"\n    && slug.current == $articleSlug\n    && primarySection->slug.current == $sectionSlug\n    && !(_id in path(\"drafts.**\"))\n  ][0] { \"slug\": slug.current }\n";
/**
 * Find all article documents that are versioned within a content release.
 *
 * Uses `sanity::partOfRelease()` to identify documents that have versions
 * in the specified release. Must be called with a perspective-enabled
 * client so the versioned content is visible.
 *
 * Returns the original document IDs (not the `versions.*` prefixed ones)
 * because the perspective client transparently resolves versioned docs
 * back to their canonical shape.
 *
 * @param $releaseId — the release ID (e.g., "ailf-scenario-01-test")
 */
export declare const ARTICLES_IN_RELEASE_QUERY = "\n  *[_type == \"article\"\n    && sanity::partOfRelease($releaseId)\n  ] { \"slug\": slug.current, _id, title }\n";
