/**
 * Metadata generation helper for Next.js pages
 *
 * Generates SEO-optimized metadata from Builder page data for use in
 * Next.js generateMetadata() functions.
 */
import type { LoadPageResult } from '../rendering/helpers/loadPage';
import type { SiteResponse } from '../client/types';
/**
 * Next.js Metadata type
 * Simplified version to avoid requiring Next.js as a dependency
 */
export type Metadata = {
    title?: string;
    description?: string;
    alternates?: {
        canonical?: string;
    };
    openGraph?: {
        title?: string;
        description?: string;
        url?: string;
        siteName?: string;
        type?: string;
        images?: Array<{
            url: string;
            alt?: string;
        }>;
    };
    twitter?: {
        card?: string;
        title?: string;
        description?: string;
        images?: string[];
    };
    robots?: {
        index?: boolean;
        follow?: boolean;
    };
    verification?: {
        google?: string;
    };
};
export type PageTitleMode = 'append-site-title' | 'exact';
export type PageMetadataInput = {
    /**
     * Page data from loadPage() or custom page object
     */
    page: LoadPageResult['page'] | {
        name: string;
        purpose?: string;
    };
    /**
     * Site data from client.getSite()
     */
    site: Pick<SiteResponse['site'], 'title'>;
    /**
     * Current URL path (e.g., '/about', '/blog/post-1')
     */
    path: string;
    /**
     * Full site URL for canonical and OG URLs
     * Example: 'https://example.com'
     */
    siteUrl?: string | null;
    /**
     * Optional custom metadata overrides
     */
    overrides?: {
        title?: string;
        description?: string;
        ogImage?: string;
        canonicalUrl?: string;
        robots?: {
            index?: boolean;
            follow?: boolean;
        };
    };
    /**
     * Controls how the final document title is composed.
     *
     * - `append-site-title` keeps the current `Page Title | Site Title` behavior.
     * - `exact` treats the resolved page title as final authored output.
     */
    titleMode?: PageTitleMode;
    /**
     * Optional Google site verification token
     */
    googleSiteVerification?: string;
};
/**
 * Generate Next.js Metadata object from Builder page data
 *
 * @example
 * ```tsx
 * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
 * import { loadPage } from '@riverbankcms/sdk';
 *
 * export async function generateMetadata({ params }) {
 *   const pageData = await loadPage({ client, siteId, path: params.slug });
 *   const siteData = await client.getSite({ id: siteId });
 *
 *   return generatePageMetadata({
 *     page: pageData.page,
 *     site: siteData.site,
 *     path: params.slug,
 *     siteUrl: 'https://example.com',
 *   });
 * }
 * ```
 */
export declare function generatePageMetadata(input: PageMetadataInput): Metadata;
/**
 * Generate metadata for preview/staging environments
 *
 * This helper adds noindex/nofollow robots tags to prevent search engines
 * from indexing preview or staging URLs.
 *
 * @example
 * ```tsx
 * export async function generateMetadata({ params }) {
 *   const pageData = await loadPage({ client, siteId, path: params.slug });
 *   const isPreview = process.env.VERCEL_ENV !== 'production';
 *
 *   return generatePreviewMetadata({
 *     page: pageData.page,
 *     site: siteData.site,
 *     path: params.slug,
 *     siteUrl: 'https://example.com',
 *   });
 * }
 * ```
 */
export declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
