import { InlineTool, SanitizerConfig } from '@editorjs/editorjs';
import { InlineToolConstructorOptions } from '@editorjs/editorjs/types/tools/inline-tool';

/**
 * FontSize Tool for the Editor.js
 *
 * Allows to wrap inline fragment and style it somehow.
 */
export default class FontSize implements InlineTool {
    /**
     * Class name for term-tag
     *
     * @type {string}
     */
    static get CSS(): string;
    /**
     * Toolbar Button
     *
     * @type {HTMLButtonElement}
     */
    private button;
    /**
     * size picker wrapper
     *
     * @type {HTMLDivElement}
     */
    private sizePickerWrapper;
    /**
     * size picker input
     *
     * @type {HTMLInputElement}
     */
    private sizePicker;
    /**
     * Tag represented the term
     *
     * @type {string}
     */
    private tag;
    /**
     * API InlineToolConstructorOptions
     *
     * @type {API}
     */
    private api;
    /**
     * State
     *
     * @type {boolean}
     */
    private state;
    /**
     * CSS classes
     *
     * @type {object}
     */
    private iconClasses;
    /**
     * @param options InlineToolConstructorOptions
     */
    constructor(options: InlineToolConstructorOptions);
    /**
     * Specifies Tool as Inline Toolbar Tool
     *
     * @returns {boolean}
     */
    static isInline: boolean;
    /**
     * Create button element for Toolbar
     *
     * @returns {HTMLElement}
     */
    render(): HTMLElement;
    /**
     * Create input element for Toolbar
     *
     * @returns {HTMLElement}
     */
    renderActions(): HTMLElement;
    /**
     * datalist element
     *
     * @returns {HTMLDataListElement}
     */
    datalist(): HTMLDataListElement;
    /**
     * size picker input
     *
     * @returns {HTMLInputElement}
     */
    sizePickerInput(): HTMLInputElement;
    /**
     * decrement button
     *
     * @returns {HTMLButtonElement}
     */
    decrementButton(): HTMLButtonElement;
    /**
     * increment button
     *
     * @returns {HTMLButtonElement}
     */
    incrementButton(): HTMLButtonElement;
    /**
     * Wrap/Unwrap selected fragment
     *
     * @param {Range} range - selected fragment
     */
    surround(range: Range): void;
    /**
     * Wrap selection with term-tag
     *
     * @param {Range} range - selected fragment
     */
    wrap(range: Range): void;
    /**
     * Unwrap term-tag
     *
     * @param {HTMLElement} termWrapper - term wrapper tag
     */
    unwrap(termWrapper: HTMLElement): void;
    /**
     * Shows input element
     *
     * @returns {void}
     */
    showActions(span: HTMLElement | null): void;
    /**
     * Hides input element
     *
     * @returns {void}
     */
    hideActions(): void;
    /**
     * Check and change Term's state for current selection
     */
    checkState(selection: Selection): boolean;
    /**
     * remove term-tags within selected fragment
     *
     * @param {Node} node
     */
    private cleanupSelection;
    /**
     * Check if selection exactly covers the node
     *
     * @param range - The selection range
     * @param node - The DOM node to compare against
     */
    private isSelectionExactlyNode;
    /**
     * Get Tool icon's SVG
     *
     * @returns {string}
     */
    get toolboxIcon(): string;
    /**
     * Get decrement button icon's SVG
     *
     * @returns {string}
     */
    get decrementButtonIcon(): string;
    /**
     * Get increment button icon's SVG
     *
     * @returns {string}
     */
    get incrementButtonIcon(): string;
    /**
     * Sanitizer rule
     *
     * @returns {{span: {class: string}}}
     */
    static get sanitize(): SanitizerConfig;
}
