import StyleType from '../embedded-types/style-type';
import TextNode from '../nodes/text-node';
export interface Metadata {
    text: string;
    attributes: Attributes;
    itemUid: string | undefined;
    itemType: 'entry' | 'asset' | undefined;
    styleType: StyleType | undefined;
    contentTypeUid: string | undefined;
}
export interface Attributes {
    type?: 'entry' | 'asset';
    class?: string;
    id?: string;
    [key: string]: any;
    style?: styleObjType | string;
    'sys-style-type'?: string;
}
export type styleObjType = {
    [key: string]: any;
};
export interface EntryAttributes extends Attributes {
    'data-sys-entry-uid': string;
    'data-sys-entry-local': string;
    'data-sys-content-type-uid': string;
}
export interface AssetAttributes extends Attributes {
    'data-sys-asset-uid': string;
    'data-sys-asset-filelink': string;
    'data-sys-asset-contenttype': string;
}
export declare function createMetadata(attribute: Attributes): Metadata;
export declare function nodeToMetadata(attribute: Attributes, textNode: TextNode): Metadata;
/**
 * Serializes an Attributes object to a string of HTML attribute key-value pairs
 * (e.g. ` key1="value1" key2="value2"`). Keys containing forbidden characters
 * are skipped. Values are HTML-entity-encoded. Arrays are joined with `, `;
 * nested objects are serialized as `key:value;` pairs.
 *
 * @param attributes - The attributes object to serialize (e.g. from a node or metadata).
 * @returns A string starting with a space, followed by `key="value"` pairs suitable for inclusion in an HTML tag.
 */
export declare function attributeToString(attributes: Attributes): string;
