import { i as LivePerspective } from "./types.js";
import { cookies } from "next/headers";
import { SyncTag } from "@sanity/client";
/**
* This helper is intended for use with Next.js Cache Components (`cacheComponents: true`),
* where `cookies()` and `draftMode()` cannot be called inside `'use cache'` boundaries.
* Resolve the perspective once outside the cache boundary and pass it in as a prop / cache key.
*
* @example
* ```tsx
* import {cookies, draftMode} from 'next/headers'
* import {defineQuery} from 'next-sanity'
* import {resolvePerspectiveFromCookies, type LivePerspective} from 'next-sanity/live'
* import {sanityFetch, sanityFetchStaticParams} from '#sanity/live'
*
* export async function generateStaticParams() {
*   const query = defineQuery(`*[_type == "page" && defined(slug.current)]{"slug": slug.current}`)
*   return await sanityFetchStaticParams({query})
* }
*
* export default async function Page({params}: PageProps<'/[slug]'>) {
*   const {isEnabled: isDraftMode} = await draftMode()
*
*   if (isDraftMode) {
*     return (
*       <Suspense>
*         <DynamicPage params={params} />
*       </Suspense>
*     )
*   }
*
*   const {slug} = await params
*
*   return <CachedPage slug={slug} perspective="published" stega={false} />
* }
*
* async function DynamicPage({params}: Pick<PageProps<'/[slug]'>, 'params'>) {
*   const {slug} = await params
*   const perspective = await resolvePerspectiveFromCookies({cookies: await cookies()})
*
*   return <CachedPage slug={slug} perspective={perspective} stega />
* }
*
* async function CachedPage({
*   slug,
*   perspective,
*   stega,
* }: Awaited<PageProps<'/[slug]'>['params']> & {
*   perspective: LivePerspective
*   stega: boolean
* }) {
*   'use cache'
*
*   const query = defineQuery(`*[_type == "page" && slug.current == $slug][0]`)
*   const {data} = await sanityFetch({query, params: {slug}, perspective, stega})
*
*   return <article>...</article>
* }
* ```
*
* @public
*/
declare function resolvePerspectiveFromCookies({
  cookies: jar
}: {
  cookies: Awaited<ReturnType<typeof cookies>>;
}): Promise<LivePerspective>;
declare const cacheTagPrefix: string;
interface ParsedTags {
  tags: `${typeof cacheTagPrefix}${SyncTag}`[];
  tagsWithoutPrefix: SyncTag[];
  prefix: typeof cacheTagPrefix;
}
/**
* Prefixes live event tags according to the conventions used by `defineLive().sanityFetch()`
* so that they can be used with `import {updateTag} from 'next/cache'`.
*
* @example
* ```tsx
* import {updateTag} from 'next/cache'
* import {parseTags} from 'next-sanity/live'
* import {SanityLive} from '#sanity/live
*
* <SanityLive
*   action={async (event, context) => {
*     'use server'
*
*     for (const tag of parseTags(event.tags, context)) {
*       updateTag(tag)
*     }
*   }}
* />
* ```
*/
declare function parseTags(unsafeTags: unknown): ParsedTags;
export { resolvePerspectiveFromCookies as n, parseTags as t };
//# sourceMappingURL=parseTags.d.ts.map