import { Observable } from 'rxjs';
import { Destroy } from '../destroy/destroy';
/**
 * Service to measure the theorical size of a text inside a container
 */
export declare class DejaTextMetricsService extends Destroy {
    private canvas;
    private element$;
    private computedStyles;
    private charSize$;
    /**
     * Constructor
     * Add observable to wait for element to be set. And then take its properties to measure all ASCII char size.
     */
    constructor();
    /** Setter for base element */
    set metricsElem(elem: HTMLElement);
    /**
     * Calcule la longeur (en pixels) d'une chaine de caractères
     *
     * @param text Le texte à mesurer
     * @param elem Le conteneur du texte
     *
     * @return la largeur du texte donné
     */
    getTextWidth(text: string, elem: HTMLElement): number;
    /**
     * Retourne la largeur maximum d'un tableau de strings.
     *
     * @param texts les textes à comparer.
     * @param elem Le conteneur du texte
     *
     * @return la width du texte le plus long dans le tableau donné en param.
     */
    getTextMaxWidth(texts: string[], elem: HTMLElement): number;
    /**
     * Mesure la heuteur théorique d'un texte contenu dans un conteneur d'une taille donnée.
     *
     * @param maxWidth taille du conteneur
     * @param text texte à mesurer
     *
     * @return Hauteur théorique du conteneur.
     */
    getTextHeight(maxWidth: number, text: string): Observable<number>;
    /**
     * Calcule le nombre de lignes qu'un texte va prendre en fonction de la largeur de son conteneur.
     *
     * @param maxWidth taille du conteneur
     * @param text texte à mesurer
     *
     * @return Nombre de lignes théoriques du conteneur.
     */
    private getNumberOfLines;
}
