/**
 * Canonical cache tag catalog for Riverbank.
 *
 * Goal: eliminate ad-hoc tag strings and drift across apps/packages.
 *
 * Tag scheme: `riverbank:*`
 * - `riverbank` is the global tag (invalidate everything)
 * - Use `riverbank:<namespace>:...` for domain/resource tags
 *
 * Notes:
 * - This module is intentionally Next.js-independent.
 * - Apps can use these tags with Next's `revalidateTag()` and `unstable_cache`.
 * - Endpoint definitions in `packages/api/src/endpoints.ts` may use the template
 *   strings (with `{param}` placeholders) for fetch cache tagging.
 */
export declare const RIVERBANK_GLOBAL_TAG = "riverbank";
/**
 * Tag templates for endpoint definitions (support `{param}` placeholders).
 */
export declare const TAG_TEMPLATES: {
    readonly siteCollection: "riverbank:site";
    readonly site: "riverbank:site:{siteId}";
    readonly siteById: "riverbank:site:id:{id}";
    readonly siteBySlug: "riverbank:site:slug:{slug}";
    readonly siteByDomain: "riverbank:site:domain:{domain}";
    readonly siteSettings: "riverbank:site:{siteId}:settings";
    readonly siteEmailSettings: "riverbank:site:{siteId}:email-settings";
    readonly siteBookingSettings: "riverbank:site:{siteId}:booking-settings";
    readonly siteNewsletter: "riverbank:site:{siteId}:newsletter";
    readonly siteRoutableContent: "riverbank:site:{siteId}:routable-content";
    readonly routeById: "riverbank:route:{routeId}";
    readonly pageById: "riverbank:page:{pageId}";
    readonly workflowRunById: "riverbank:workflow-run:{runId}";
    readonly siteForms: "riverbank:site:{siteId}:forms";
    readonly formById: "riverbank:form:{formId}";
    readonly formSubmissionsBySlug: "riverbank:form-submissions:{slug}";
    readonly siteNavigation: "riverbank:site:{siteId}:navigation";
    readonly navigationMenuById: "riverbank:navigation-menu:{menuId}";
    readonly navigationItemById: "riverbank:navigation-item:{itemId}";
    readonly siteTheme: "riverbank:site:{siteId}:theme";
};
export type TagTemplate = (typeof TAG_TEMPLATES)[keyof typeof TAG_TEMPLATES];
export declare function normalizeRevalidateTags(input: string[]): string[];
export declare function isRiverbankCacheTag(tag: string): boolean;
/**
 * Tag builders for runtime invalidation and caching.
 */
export declare const tags: {
    readonly global: () => string;
    readonly siteCollection: () => string;
    readonly site: (siteId: string) => string;
    readonly siteById: (siteId: string) => string;
    readonly siteBySlug: (slug: string) => string;
    readonly siteByDomain: (domain: string) => string;
    readonly siteSettings: (siteId: string) => string;
    readonly siteEmailSettings: (siteId: string) => string;
    readonly siteBookingSettings: (siteId: string) => string;
    readonly siteNewsletter: (siteId: string) => string;
    readonly siteRoutableContent: (siteId: string) => string;
    readonly route: (routeId: string) => string;
    readonly page: (pageId: string) => string;
    readonly workflowRun: (runId: string) => string;
    readonly siteForms: (siteId: string) => string;
    readonly form: (formId: string) => string;
    readonly entry: (entryId: string) => string;
    readonly formSubmissionsBySlug: (slug: string) => string;
    readonly siteNavigation: (siteId: string) => string;
    readonly navigationMenu: (menuId: string) => string;
    readonly navigationItem: (itemId: string) => string;
    readonly siteTheme: (siteId: string) => string;
};
/**
 * SDK-facing convenience helpers (kept for compatibility).
 * These intentionally do NOT include site scoping, because many SDK consumers
 * operate in a single-site context.
 */
export declare function getSiteTags(): string[];
export declare function getPageTags(pageId?: string): string[];
export declare function getEntryTags(contentTypeSlug: string, entryId?: string): string[];
export declare function getNavigationTags(menuKey?: string): string[];
