import { Base, Type } from "./type";
import { Rectangle } from "./Rectangle";
import { Path } from "./Path";
import { Geometry } from "./Geometry";
import { TextBlock } from "./TextBlock";
import { Polygon } from "./Polygon";
import { Polyline } from "./Polyline";
import { DataTemplateRenderInfo } from "./DataTemplateRenderInfo";
import { ContentControl } from "./ContentControl";
import { Transform } from "./Transform";
import { Line } from "./Line";
import { Rect } from "./Rect";
import { TextFontMetrics } from "./TextFontMetrics";
import { Shape } from "./Shape";
import { Style } from "./Style";
import { DomRenderer } from "./dom";
import { FrameworkElement } from "./FrameworkElement";
/**
 * @hidden
 */
export interface IRenderer {
    h$t(a: Rectangle): void;
    h$q(a: Path): void;
    h$o(a: Geometry): void;
    h$u(a: TextBlock): void;
    h$r(a: Polygon): void;
    h$s(a: Polyline): void;
    h$n(a: DataTemplateRenderInfo, b: ContentControl): void;
    h$h(a: Transform): void;
    h$p(a: Line): void;
    h$d: any;
    h$x(): void;
    h$y(a: number, b: number): void;
    h$af(a: number, b: number): void;
    h$k(a: any, b: number, c: number, d: number, e: number, f: number): void;
    h$l(a: any, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number): void;
    h$ae(a: Rect): void;
    h$w(): void;
    h$i(a: number, b: number, c: number, d: number): void;
    h$a(a: number, b: number): number[];
    h$ab(a: string): void;
    h$ac(a: FontInfo): void;
    h$f(): string;
    h$b(): FontInfo;
    h$ag(a: string, b: number, c: boolean): TextFontMetrics;
    h$c(a: string): number;
    h$ad(a: number): void;
    h$e(): any;
    h$g(a: Shape, b: Style): void;
    h$m(a: string, b: number, c: number, d: number): void;
    h$j(): void;
    h$v(a: TextBlock, b: Rect, c: number): void;
    h$z(a: Path): void;
    h$aa(a: Rectangle): void;
}
/**
 * @hidden
 */
export declare let IRenderer_$type: Type;
/**
 * @hidden
 */
export declare class FontInfo extends Base {
    static $t: Type;
    w(a: DomRenderer): void;
    constructor();
    c(): boolean;
    private i;
    get j(): number;
    private n;
    get t(): string;
    set t(a: string);
    private x;
    private o;
    get u(): string;
    set u(a: string);
    private p;
    get v(): string;
    set v(a: string);
    private d;
    get f(): number;
    set f(a: number);
    private e;
    get g(): number;
    set g(a: number);
    private k;
    get q(): string;
    set q(a: string);
    private l;
    get r(): string;
    set r(a: string);
    private m;
    get fontString(): string;
    set fontString(a: string);
    a(): FontInfo;
    h(a: number): number;
    b(a: number): FontInfo;
}
/**
 * @hidden
 */
export declare class FontUtil extends Base {
    static $t: Type;
    static getCurrentFontHeight(a: DomRenderer, b: FontInfo): number;
    static measureStringHeight(a: DomRenderer, b: string, c: FontInfo): number;
    static measureStringWidth1(a: string, b: string, c: RenderingContext): number;
    static measureStringWidth(a: string, b: FontInfo, c: RenderingContext): number;
    private static a;
    static getDefaultFont(a: DomRenderer): FontInfo;
    static getFontSize(a: FontInfo): number;
    static getFontWithNewFontSize(a: FontInfo, b: number): FontInfo;
    static getFontInfoFromString(a: DomRenderer, b: string): FontInfo;
    static getFontForClass(a: DomRenderer, b: string): FontInfo;
    static getFont(a: DomRenderer): FontInfo;
    static updateFontString(a: FontInfo): void;
    static getFontInfo(a: DomRenderer, b: FrameworkElement, c: FontInfo): FontInfo;
    private static p;
    static toFontInfo(a: DomRenderer, b: string): FontInfo;
    static interpolateFont(a: FontInfo, b: number, c: FontInfo, d: FontInfo): void;
    static charsEqual(a: string, b: number, c: string[], d: number): boolean;
    private static o;
}
/**
 * @hidden
 */
export declare class RenderingContext extends Base {
    static $t: Type;
    private c;
    h(): any;
    e: boolean;
    constructor(a: IRenderer, b: any);
    get d(): boolean;
    w(a: Rectangle): void;
    t(a: Path): void;
    r(a: Geometry): void;
    x(a: TextBlock): void;
    y(a: TextBlock, b: Rect, c: number): void;
    u(a: Polygon): void;
    v(a: Polyline): void;
    q(a: DataTemplateRenderInfo, b: ContentControl): void;
    k(a: Transform): void;
    s(a: Line): void;
    aa(): void;
    z(): void;
    ah(a: Rect): void;
    ab(a: number, b: number): void;
    ai(a: number, b: number): void;
    l(a: number, b: number, c: number, d: number): void;
    o(a: any, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number): void;
    n(a: any, b: number, c: number, d: number, e: number, f: number): void;
    a(a: number, b: number): number[];
    i(): string;
    b(): FontInfo;
    ae(a: string): void;
    af(a: FontInfo): void;
    g(a: string): number;
    aj(a: TextBlock, b: number, c: boolean): TextFontMetrics;
    f(a: TextBlock): number;
    ag(a: number): void;
    j(a: Shape, b: Style): void;
    p(a: string, b: number, c: number, d: number): void;
    m(): void;
    ac(a: Path): void;
    ad(a: Rectangle): void;
}
