import type { FieldOptions, WithoutLabel } from 'alinea/core';
import { RecordField } from 'alinea/core/field/RecordField';
import { type Type } from 'alinea/core/Type';
import { type ImageField, type ImageLink } from 'alinea/field/link';
import { type ObjectField } from 'alinea/field/object';
import { type TextField } from 'alinea/field/text';
export interface MetadataOptions extends FieldOptions<Metadata> {
    inferTitleFrom?: string;
    inferDescriptionFrom?: string;
    inferImageFrom?: string;
}
export interface MetadataFields {
    title: TextField;
    description: TextField;
    openGraph: ObjectField<{
        image: ImageField;
        title: TextField;
        description: TextField;
    }>;
}
export interface Metadata {
    title: string;
    description: string;
    openGraph: {
        image: ImageLink;
        title: string;
        description: string;
    };
}
export declare class MetadataField extends RecordField<Metadata, MetadataOptions & {
    fields: Type<MetadataFields>;
}> {
}
export declare function metadata(label?: string, options?: WithoutLabel<MetadataOptions>): MetadataField;
