import type { NobjcObject } from "objc-js";
import type { _NSAffineTransform } from "../Foundation/NSAffineTransform.js";
import type { _NSCharacterSet } from "../Foundation/NSCharacterSet.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSFontDescriptor } from "./NSFontDescriptor.js";
import type { _NSGraphicsContext } from "./NSGraphicsContext.js";
import type { CGRect } from "../structs/CGRect.js";
import type { CGSize } from "../structs/CGSize.js";
import type { NSControlSize } from "./NSControlSize.js";
import type { NSFontRenderingMode } from "./NSFontRenderingMode.js";
import type { NSFontTextStyle } from "./NSFontTextStyle.js";
export declare class _NSFont extends _NSObject {
    static alloc(): _NSFont;
    static new(): _NSFont;
    init(): _NSFont;
    /** ****** Factory ******** */
    static fontWithName$size$(fontName: _NSString, fontSize: number): _NSFont | null;
    static fontWithName$matrix$(fontName: _NSString, fontMatrix: NobjcObject): _NSFont | null;
    /**
     * Instantiates an NSFont object matching fontDescriptor. If fontSize is greater than 0.0, it has precedence over NSFontSizeAttribute in fontDescriptor.
     */
    static fontWithDescriptor$size$(fontDescriptor: _NSFontDescriptor, fontSize: number): _NSFont | null;
    /**
     * Instantiates an NSFont object matching fontDescriptor. If textTransform is non-nil, it has precedence over NSFontMatrixAttribute in fontDescriptor.
     */
    static fontWithDescriptor$textTransform$(fontDescriptor: _NSFontDescriptor, textTransform: _NSAffineTransform | null): _NSFont | null;
    /** Application font */
    static userFontOfSize$(fontSize: number): _NSFont | null;
    /** fixed-pitch font */
    static userFixedPitchFontOfSize$(fontSize: number): _NSFont | null;
    /** set preference for Application font. */
    static setUserFont$(font: _NSFont | null): void;
    /** set preference for fixed-pitch. */
    static setUserFixedPitchFont$(font: _NSFont | null): void;
    /** System font with NSFontWeightRegular and proportional digits */
    static systemFontOfSize$(fontSize: number): _NSFont;
    /** System font with NSFontWeightBold and proportional digits */
    static boldSystemFontOfSize$(fontSize: number): _NSFont;
    /** Label font */
    static labelFontOfSize$(fontSize: number): _NSFont;
    static titleBarFontOfSize$(fontSize: number): _NSFont;
    static menuFontOfSize$(fontSize: number): _NSFont;
    static menuBarFontOfSize$(fontSize: number): _NSFont;
    static messageFontOfSize$(fontSize: number): _NSFont;
    static paletteFontOfSize$(fontSize: number): _NSFont;
    static toolTipsFontOfSize$(fontSize: number): _NSFont;
    static controlContentFontOfSize$(fontSize: number): _NSFont;
    /**
     * Following two factory methods return system font with NSFontWeightTrait. Returns the system font object corresponding to fontSize and weight. +monospacedDigitSystemFontOfSize:weight: always return a system font instance with monospaced digit glyphs. It's recommended to use the symbolic weight values declared in NSFontDescriptor.h. Due to sophisticated system font weight matching logic underneath, it's recommended to use this factory method all the time when getting non-standard weight system fonts instead of transforming existing instances via methods like -[NSFontManager convertFont:toSize]. When asked for a missing weight for the running version of OS X, this method returns the nearest heavier weight available if the application is linked against the current or older SDK; otherwise, it returns the nearest lighter weight available.
     */
    static systemFontOfSize$weight$(fontSize: number, weight: number): _NSFont;
    static monospacedDigitSystemFontOfSize$weight$(fontSize: number, weight: number): _NSFont;
    /**
     * Returns an instance with the specified weight and width. Width values are declared in NSFontDescriptor.h.
     */
    static systemFontOfSize$weight$width$(fontSize: number, weight: number, width: number): _NSFont;
    /**
     * Returns current default monospaced font for system UI. Clients of this API should be aware that the monospaced system font has a similar coverage of default system UI font, which includes Latin and common symbols used for displaying text like source code. For the characters it does not cover, the subtituted fonts are usually not the same width as the monospaced system font, they can be wider, narrower, or variable. To ensure fixed advances in text layout, clients can consider using string attributes like NSFontFixedAdvanceAttribute.
     */
    static monospacedSystemFontOfSize$weight$(fontSize: number, weight: number): _NSFont;
    static systemFontSizeForControlSize$(controlSize: NSControlSize): number;
    /**
     * Returns an instance of the font associated with the text style. See NSFontDescriptor.h for the complete list.
     */
    static preferredFontForTextStyle$options$(style: NSFontTextStyle, options: _NSDictionary): _NSFont;
    /** size of the standard System font. */
    static systemFontSize(): number;
    /** size of standard small System font. */
    static smallSystemFontSize(): number;
    /** size of the standard Label Font. */
    static labelFontSize(): number;
    /** Use instead of -[NSFontManager convertFont:toSize:]. */
    fontWithSize$(fontSize: number): _NSFont;
    /** ****** Glyph metrics ******** */
    boundingRectForCGGlyph$(glyph: number): CGRect;
    advancementForCGGlyph$(glyph: number): CGSize;
    /** bulk query */
    getBoundingRects$forCGGlyphs$count$(bounds: NobjcObject, glyphs: NobjcObject, glyphCount: number): void;
    getAdvancements$forCGGlyphs$count$(advancements: NobjcObject, glyphs: NobjcObject, glyphCount: number): void;
    /** ****** NSGraphicsContext-related ******** */
    set(): void;
    setInContext$(graphicsContext: _NSGraphicsContext): void;
    glyphWithName$(name: _NSString): number;
    /** Deprecated. Use -boundingRectForCGGlyph: instead */
    boundingRectForGlyph$(glyph: number): CGRect;
    /** Deprecated. Use -advancementForCGGlyph: instead */
    advancementForGlyph$(glyph: number): CGSize;
    /** Deprecated. Use -getBoundingRects:forCGGlyphs:count: instead */
    getBoundingRects$forGlyphs$count$(bounds: NobjcObject, glyphs: NobjcObject, glyphCount: number): void;
    /** Deprecated. Use -getAdvancements:forCGGlyphs:count: insteda */
    getAdvancements$forGlyphs$count$(advancements: NobjcObject, glyphs: NobjcObject, glyphCount: number): void;
    /** Deprecated. Use -getAdvancements:forCGGlyphs:count: instead */
    getAdvancements$forPackedGlyphs$length$(advancements: NobjcObject, packedGlyphs: Uint8Array, length: number): void;
    screenFontWithRenderingMode$(renderingMode: NSFontRenderingMode): _NSFont;
    /** ****** Core font attribute ******** */
    fontName(): _NSString;
    pointSize(): number;
    matrix(): NobjcObject;
    familyName(): _NSString | null;
    displayName(): _NSString | null;
    fontDescriptor(): _NSFontDescriptor;
    textTransform(): _NSAffineTransform;
    /** ****** Glyph coverage ******** */
    numberOfGlyphs(): number;
    mostCompatibleStringEncoding(): number;
    coveredCharacterSet(): _NSCharacterSet;
    /**
     * These methods return scaled numbers. If the font was created with a matrix, the matrix is applied automatically; otherwise the coordinates are multiplied by size.
     */
    boundingRectForFont(): CGRect;
    maximumAdvancement(): CGSize;
    ascender(): number;
    descender(): number;
    leading(): number;
    underlinePosition(): number;
    underlineThickness(): number;
    italicAngle(): number;
    capHeight(): number;
    xHeight(): number;
    fixedPitch(): boolean;
    /**
     * Returns a vertical version of the receiver if such a configuration is supported. Returns the receiver if no vertical variant available. A vertical font applies appropriate rotation to the text matrix in -setInContext:, returns vertical metrics, and enables the vertical glyph substitution feature by default.
     */
    verticalFont(): _NSFont;
    /** Returns YES if a vertical variant */
    vertical(): boolean;
    /** ****** Rendering mode ******** */
    printerFont(): _NSFont;
    screenFont(): _NSFont;
    renderingMode(): NSFontRenderingMode;
}
export interface _NSFont extends _NSCopying, _NSSecureCoding {
}
