import '../../../assert/js/assert.js';
import '../../../globals.js';
import PhetioObject, { PhetioObjectOptions } from '../../../tandem/js/PhetioObject.js';
import IOType from '../../../tandem/js/types/IOType.js';
export type FontStyle = 'normal' | 'italic' | 'oblique';
export type FontVariant = 'normal' | 'small-caps';
export type FontWeight = 'normal' | 'bold' | 'bolder' | 'lighter' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
export type FontStretch = 'normal' | 'ultra-condensed' | 'extra-condensed' | 'condensed' | 'semi-condensed' | 'semi-expanded' | 'expanded' | 'extra-expanded' | 'ultra-expanded';
type SelfOptions = {
    style?: FontStyle;
    variant?: FontVariant;
    weight?: number | FontWeight;
    stretch?: FontStretch;
    size?: number | string;
    lineHeight?: string;
    family?: string;
};
export type FontOptions = SelfOptions & PhetioObjectOptions;
export default class Font extends PhetioObject {
    private readonly _style;
    private readonly _variant;
    private readonly _weight;
    private readonly _stretch;
    private readonly _size;
    private readonly _lineHeight;
    private readonly _family;
    private readonly _font;
    constructor(providedOptions?: FontOptions);
    /**
     * Returns this font's CSS shorthand, which includes all of the font's information reduced into a single string.
     *
     * This can be used for CSS as the 'font' attribute, or is needed to set Canvas fonts.
     *
     * https://www.w3.org/TR/css-fonts-3/#propdef-font contains detailed information on how this is formatted.
     */
    getFont(): string;
    get font(): string;
    /**
     * Returns this font's style. See the constructor for more details on valid values.
     */
    getStyle(): FontStyle;
    get style(): FontStyle;
    /**
     * Returns this font's variant. See the constructor for more details on valid values.
     */
    getVariant(): FontVariant;
    get variant(): FontVariant;
    /**
     * Returns this font's weight. See the constructor for more details on valid values.
     *
     * NOTE: If a numeric weight was passed in, it has been cast to a string, and a string will be returned here.
     */
    getWeight(): FontWeight;
    get weight(): FontWeight;
    /**
     * Returns this font's stretch. See the constructor for more details on valid values.
     */
    getStretch(): FontStretch;
    get stretch(): FontStretch;
    /**
     * Returns this font's size. See the constructor for more details on valid values.
     *
     * NOTE: If a numeric size was passed in, it has been cast to a string, and a string will be returned here.
     */
    getSize(): string;
    get size(): string;
    /**
     * Returns an approximate value of this font's size in px.
     */
    getNumericSize(): number;
    get numericSize(): number;
    /**
     * Returns this font's line-height. See the constructor for more details on valid values.
     */
    getLineHeight(): string;
    get lineHeight(): string;
    /**
     * Returns this font's family. See the constructor for more details on valid values.
     */
    getFamily(): string;
    get family(): string;
    /**
     * Returns a new Font object, which is a copy of this object. If options are provided, they override the current
     * values in this object.
     */
    copy(options?: FontOptions): Font;
    /**
     * Computes the combined CSS shorthand font string.
     *
     * https://www.w3.org/TR/css-fonts-3/#propdef-font contains details about the format.
     */
    private computeShorthand;
    /**
     * Returns this font's CSS shorthand, which includes all of the font's information reduced into a single string.
     *
     * NOTE: This is an alias of getFont().
     *
     * This can be used for CSS as the 'font' attribute, or is needed to set Canvas fonts.
     *
     * https://www.w3.org/TR/css-fonts-3/#propdef-font contains detailed information on how this is formatted.
     */
    toCSS(): string;
    /**
     * Converts a generic size to a specific CSS pixel string, assuming 'px' for numbers.
     *
     * @param size - If it's a number, 'px' will be appended
     */
    static castSize(size: string | number): string;
    static isFontStyle(style: string): style is FontStyle;
    static isFontVariant(variant: string): variant is FontVariant;
    static isFontWeight(weight: string): weight is FontWeight;
    static isFontStretch(stretch: string): stretch is FontStretch;
    /**
     * Parses a CSS-compliant "font" shorthand string into a Font object.
     *
     * Font strings should be a valid CSS3 font declaration value (see http://www.w3.org/TR/css3-fonts/) which consists
     * of the following pattern:
     *   [ [ <‘font-style’> || <font-variant-css21> || <‘font-weight’> || <‘font-stretch’> ]? <‘font-size’>
     *   [ / <‘line-height’> ]? <‘font-family’> ]
     */
    static fromCSS(cssString: string): Font;
    static FontIO: IOType<Font, FontState>;
    static readonly DEFAULT: Font;
}
type FontState = Required<SelfOptions>;
export {};
//# sourceMappingURL=Font.d.ts.map