import { Options as PrecssOptions } from './precss';
import { Process } from "./process";
import { Hypher } from "./hypher";
export declare var REGISTER_PROPERTIES: boolean;
export interface CssContextOptions {
    authorCSS: boolean;
    coreCSS: boolean;
    defaultCSS: boolean;
    preprocessCSS: boolean;
    css: string[];
    defaultPageSize: [string, string];
    mediaType: string;
    hyphUri: string;
}
export declare class CssContext {
    readonly doc: Document;
    readonly options: CssContextOptions;
    preparedSheets: Set<unknown>;
    coreSheet: StyleSheet;
    defaultSheet: StyleSheet;
    hyphers: {
        [key: string]: Hypher | false;
    };
    private _styleAttrProcessor;
    constructor(doc: Document, options: CssContextOptions);
    process(): Process;
    /** Should be only called if CSS.registerProperty is available */
    processStyleAttr(elem: Element): Promise<void>;
    prepareSheets(preprocOptions: PrecssOptions): Promise<any[]>;
    testHyphens(element: HTMLElement, style: CSSStyleDeclaration): false | Hypher | Promise<void | Hypher>;
    hyphenate(element: HTMLElement, hypher: Hypher): void;
}
export declare const cssContexts: Map<Document, CssContext>;
export declare type Media = 'screen' | 'print' | 'projection';
export declare function removeSheets(doc: Document): void;
export declare function insertStyleSheet(doc: Document, sheet: string, excluded?: boolean, id?: string, before?: Node): StyleSheet;
export declare function insertLinkSheet(doc: Document, url: string | URL, excluded?: boolean, id?: string, before?: Node): Promise<StyleSheet>;
export declare function getCustomStyle(element: Element): CSSStyleDeclaration;
export declare function getCustomProp(eltOrStyle: Element | CSSStyleDeclaration, propName: string): string;
export declare function getCustomPluginProp(eltOrStyle: Element | CSSStyleDeclaration, propName: string): string;
export declare function computeLength(strLength: string, percentBase: number | (() => number)): number;
export declare function computeMinOrMaxLength(minMaxValue: string, percentBase: number, noneValue: number): number;
export declare function addStyleImagesToLoad(element: Element, set: Set<string>): void;
