import { type IEventEmitter } from '@breadstone/mosaik-elements';
export type KnownHelmetTagNameMap = Pick<HTMLElementTagNameMap, 'title' | 'style' | 'meta' | 'link' | 'script' | 'base'>;
/**
 * Represents the `IHelmetChangeEventDetail` interface.
 *
 * @public
 */
export interface IHelmetChangeEventDetail {
    readonly tag: keyof KnownHelmetTagNameMap;
    readonly entries: Record<string, string>;
}
export declare class Helmet {
    private static readonly _document;
    private readonly _defaults;
    private readonly _changes;
    /**
     * Constructs a new instance of the `Helmet` class.
     *
     * @public
     */
    constructor();
    /**
     * Returns the `changes` property.
     *
     * @public
     * @readonly
     */
    get changes(): IEventEmitter<IHelmetChangeEventDetail>;
    /**
     * @public
     */
    defaults(tag: keyof KnownHelmetTagNameMap, data: Record<string, string>): void;
    /**
     * @public
     */
    set(tag: keyof KnownHelmetTagNameMap, key: string, value: string): Element;
    set<TK extends keyof KnownHelmetTagNameMap>(tag: keyof KnownHelmetTagNameMap, element: KnownHelmetTagNameMap[TK]): Element;
    /**
     * @public
     */
    remove(tag: keyof KnownHelmetTagNameMap, key: string, value: string): void;
    remove<TK extends keyof KnownHelmetTagNameMap>(tag: keyof KnownHelmetTagNameMap, element: KnownHelmetTagNameMap[TK]): void;
    /**
     * @private
     */
    private createElement;
    /**
     * @private
     */
    private cloneElement;
    /**
     * @private
     */
    private setAttribute;
    /**
     * @private
     */
    private restore;
    /**
     * @private
     */
    private hasDefault;
    /**
     * @private
     */
    private removeDefault;
}
export declare class HelmetServiceLocator {
    private static _current;
    static get current(): Helmet;
    static isSet(): boolean;
    static set(current: Helmet): void;
}
//# sourceMappingURL=Helmet.d.ts.map