export type SchemaOrgType = 'Article' | 'BlogPosting' | 'NewsArticle' | 'Product' | 'FAQPage' | 'Organization' | 'Person' | 'WebPage' | 'WebSite' | 'BreadcrumbList' | 'Event' | 'LocalBusiness' | 'HowTo' | 'Recipe' | 'SearchAction' | 'ImageObject' | 'VideoObject' | 'CollectionPage' | 'ProfilePage' | 'AboutPage' | 'ContactPage' | 'SearchResultsPage';
export interface StructuredDataMapping {
    schemaType: SchemaOrgType;
    fieldMappings: Record<string, string>;
}
export interface SiteSchemaConfig {
    siteName: string;
    siteUrl: string;
    siteDescription?: string;
    organizationName?: string;
    organizationLogo?: string;
    organizationSameAs?: string[];
    organizationType?: 'Organization' | 'Corporation' | 'LocalBusiness';
    defaultLanguage?: string;
    searchUrlTemplate?: string;
}
export interface PageSchemaInput {
    url: string;
    title: string;
    description?: string;
    datePublished?: string;
    dateModified?: string;
    author?: {
        name: string;
        url?: string;
        image?: string;
    };
    images?: {
        url: string;
        width?: number;
        height?: number;
        caption?: string;
    }[];
    breadcrumbs?: {
        name: string;
        url: string;
    }[];
    type?: 'page' | 'post' | 'article' | 'blog' | 'faq' | 'collection' | 'profile' | 'about' | 'contact' | 'search';
    articleSection?: string[];
    keywords?: string[];
    language?: string;
    featuredImage?: {
        url: string;
        width?: number;
        height?: number;
    };
    faqItems?: {
        question: string;
        answer: string;
    }[];
}
/** Register a Schema.org type mapping for a collection. */
export declare function registerSchemaType(collection: string, mapping: StructuredDataMapping): void;
/** Get the Schema.org mapping for a collection. */
export declare function getSchemaType(collection: string): StructuredDataMapping | undefined;
/** Auto-generate JSON-LD structured data from a document. */
export declare function generateJsonLd(collection: string, data: Record<string, unknown>, baseUrl?: string): Record<string, unknown> | null;
/** Render a JSON-LD script tag for embedding in HTML. */
export declare function renderJsonLdScript(jsonLd: Record<string, unknown>): string;
/** Build the WebSite node with optional SearchAction. */
export declare function buildWebSiteSchema(site: SiteSchemaConfig): object;
/** Build the Organization node. */
export declare function buildOrganizationSchema(site: SiteSchemaConfig): object;
/** Build the WebPage node. */
export declare function buildWebPageSchema(site: SiteSchemaConfig, page: PageSchemaInput): object;
/** Build the Article / BlogPosting node. */
export declare function buildArticleSchema(site: SiteSchemaConfig, page: PageSchemaInput): object;
/** Build a BreadcrumbList node. */
export declare function buildBreadcrumbSchema(breadcrumbs: {
    name: string;
    url: string;
}[]): object;
/** Build a FAQPage schema (standalone, without graph wrapper). */
export declare function buildFAQSchema(items: {
    question: string;
    answer: string;
}[]): object;
/** Build a complete `@graph` JSON-LD object for a page. */
export declare function buildSchemaGraph(site: SiteSchemaConfig, page: PageSchemaInput): object;
//# sourceMappingURL=structured-data.d.ts.map