import type * as generic from './GenericTagTypes.js';
import type { ITag } from '../type.js';
import type { INativeMetadataCollector, IWarningCollector } from './MetadataCollector.js';
export interface IGenericTagMapper {
    /**
     * Which tagType is able to map to the generic mapping format
     */
    tagTypes: generic.TagType[];
    /**
     * Basic tag map
     */
    tagMap: generic.INativeTagMap;
    /**
     * Map native tag to generic tag
     * @param tag       Native tag
     * @param warnings  Register warnings
     * @return Generic tag, if native tag could be mapped
     */
    mapGenericTag(tag: ITag, warnings: INativeMetadataCollector): generic.IGenericTag | null;
}
export declare class CommonTagMapper implements IGenericTagMapper {
    tagTypes: generic.TagType[];
    tagMap: generic.INativeTagMap;
    static maxRatingScore: number;
    static toIntOrNull(str: string): number | null;
    static normalizeTrack(origVal: number | string): {
        no: number | null;
        of: number | null;
    };
    constructor(tagTypes: generic.TagType[], tagMap: generic.INativeTagMap);
    /**
     * Process and set common tags
     * write common tags to
     * @param tag Native tag
     * @param warnings Register warnings
     * @return common name
     */
    mapGenericTag(tag: ITag, warnings: IWarningCollector): generic.IGenericTag | null;
    /**
     * Convert native tag key to common tag key
     * @param tag Native header tag
     * @return common tag name (alias)
     */
    protected getCommonName(tag: string): generic.GenericTagId;
    /**
     * Handle post mapping exceptions / correction
     * @param tag Tag e.g. {"©alb", "Buena Vista Social Club")
     * @param warnings Used to register warnings
     */
    protected postMap(tag: ITag, warnings: IWarningCollector): void;
}
