import { IQuestion, Question, QuestionRatingModel, QuestionFileModel, LocalizableString } from 'survey-core';
import { SurveyPDF } from './survey';
import { IPoint, IRect, ISize, DocController } from './doc_controller';
import { IHTMLRenderType } from './flat_layout/flat_html';
import { IPdfBrick, PdfBrick } from './pdf_render/pdf_brick';
import { CompositeBrick } from './pdf_render/pdf_composite';
import { ITextFieldBrickOptions } from './pdf_render/pdf_textfield';
export type IBorderDescription = IRect & ISize & Pick<PdfBrick, 'formBorderColor'> & {
    rounded?: boolean;
    dashStyle?: {
        dashArray: [number, number] | [number];
        dashPhase: number;
    };
    outside?: boolean;
};
export declare class SurveyHelper {
    static EPSILON: number;
    static TITLE_SURVEY_FONT_SIZE_SCALE: number;
    static TITLE_PAGE_FONT_SIZE_SCALE: number;
    static TITLE_PANEL_FONT_SIZE_SCALE: number;
    static DESCRIPTION_FONT_SIZE_SCALE: number;
    static OTHER_ROWS_COUNT: number;
    static RATING_MIN_WIDTH: number;
    static RATING_MIN_HEIGHT: number;
    static RATING_COLUMN_WIDTH: number;
    static MATRIX_COLUMN_WIDTH: number;
    static IMAGEPICKER_COUNT: number;
    static IMAGEPICKER_RATIO: number;
    static MULTIPLETEXT_TEXT_PERS: number;
    static HTML_TAIL_TEXT_SCALE: number;
    static SELECT_ITEM_FLAT_SCALE: number;
    static GAP_BETWEEN_ROWS: number;
    static GAP_BETWEEN_COLUMNS: number;
    static GAP_BETWEEN_ITEM_TEXT: number;
    static FORM_BORDER_VISIBLE: boolean;
    static BORDER_SCALE: number;
    static VISIBLE_BORDER_SCALE: number;
    static UNVISIBLE_BORDER_SCALE: number;
    static RADIUS_SCALE: number;
    static TITLE_FONT_SCALE: number;
    static VALUE_READONLY_PADDING_SCALE: number;
    static HTML_TO_IMAGE_QUALITY: number;
    static FORM_BORDER_COLOR: string;
    static TEXT_COLOR: string;
    static BACKGROUND_COLOR: string;
    static TITLE_LOCATION_MATRIX: string;
    static STANDARD_FONT: string;
    static CUSTOM_FONT_ENCODING: string;
    static parseWidth(width: string, maxWidth: number, columnsCount?: number, defaultUnit?: string): number;
    static pxToPt(value: number | string): number;
    static mergeRects(...rects: IRect[]): IRect;
    static createPoint(rect: IRect, isLeft?: boolean, isTop?: boolean): IPoint;
    static createRect(point: IPoint, width: number, height: number): IRect;
    static createHeaderRect(controller: DocController): IRect;
    static createFooterRect(controller: DocController): IRect;
    static chooseHtmlFont(controller: DocController): string;
    static generateCssTextRule(fontSize: number, fontStyle: string, fontName: string): string;
    static createHtmlContainerBlock(html: string, controller: DocController, renderAs: IHTMLRenderType): string;
    static splitHtmlRect(controller: DocController, htmlBrick: IPdfBrick): IPdfBrick;
    static createPlainTextFlat<T extends IPdfBrick>(point: IPoint, question: IQuestion, controller: DocController, text: string, fabric: new (question: IQuestion, controller: DocController, rect: IRect, text: string) => T): CompositeBrick;
    static createTextFlat<T extends IPdfBrick>(point: IPoint, question: IQuestion, controller: DocController, text: string | LocalizableString, fabric: new (question: IQuestion, controller: DocController, rect: IRect, text: string) => T): Promise<IPdfBrick>;
    private static hasHtml;
    private static getHtmlMargins;
    static createHTMLRect(point: IPoint, controller: DocController, margins: {
        top: number;
        bottom: number;
        width: number;
    }, resultY: number): IRect;
    static createHTMLFlat(point: IPoint, question: Question, controller: DocController, html: string): Promise<IPdfBrick>;
    static generateFontFace(fontName: string, fontBase64: string, fontWeight: string): string;
    static generateFontFaceWithItalicStyle(fontName: string, fontBase64: string, fontWeight: string): string;
    static htmlToXml(html: string): string;
    static createSvgContent(html: string, width: number, controller: DocController): {
        svg: string;
        divWidth: number;
        divHeight: number;
    };
    private static setCanvas;
    static htmlToImage(html: string, width: number, controller: DocController): Promise<{
        url: string;
        aspect: number;
    }>;
    static createBoldTextFlat(point: IPoint, question: Question, controller: DocController, text: string | LocalizableString): Promise<IPdfBrick>;
    static createTitleFlat(point: IPoint, question: Question, controller: DocController): Promise<IPdfBrick>;
    private static createTitleSurveyPanelFlat;
    static createTitleSurveyFlat(point: IPoint, controller: DocController, text: string | LocalizableString): Promise<IPdfBrick>;
    static createTitlePanelFlat(point: IPoint, controller: DocController, text: string | LocalizableString, isPage?: boolean): Promise<IPdfBrick>;
    static createDescFlat(point: IPoint, question: IQuestion, controller: DocController, text: string | LocalizableString): Promise<IPdfBrick>;
    static getReadonlyRenderAs(question: Question, controller: DocController): 'auto' | 'text' | 'acroform';
    static createCommentFlat(point: IPoint, question: Question, controller: DocController, options: {
        rows?: number;
    } & ITextFieldBrickOptions): Promise<IPdfBrick>;
    static get hasDocument(): boolean;
    static createImageFlat(point: IPoint, question: any, controller: DocController, options: {
        link: string;
        width: number;
        height: number;
        objectFit?: 'cover' | 'contain' | 'fill';
    }, applyImageFit?: boolean): Promise<IPdfBrick>;
    static canPreviewImage(question: QuestionFileModel, item: {
        name: string;
        type: string;
        content: string;
    }, url: string): boolean;
    static createRowlineFlat(point: IPoint, controller: DocController, width?: number, color?: string): IPdfBrick;
    static createLinkFlat(point: IPoint, question: Question, controller: DocController, text: string, link: string): Promise<IPdfBrick>;
    static createAcroformRect(rect: IRect): number[];
    static createTextFieldRect(point: IPoint, controller: DocController, lines?: number): IRect;
    static createReadOnlyTextFieldTextFlat(point: IPoint, controller: DocController, question: Question, value: string): Promise<IPdfBrick>;
    static renderFlatBorders(controller: DocController, borderOptions: IBorderDescription): void;
    static getLocString(text: LocalizableString): string;
    static getContentQuestion(question: Question): Question;
    static getContentQuestionTypeRenderAs(question: Question, survey: SurveyPDF): string;
    static getContentQuestionType(question: Question, survey: SurveyPDF): string;
    static getRatingMinWidth(controller: DocController): number;
    static getRatingItemText(question: QuestionRatingModel, index: number, locText: LocalizableString): LocalizableString;
    static getPageAvailableWidth(controller: DocController): number;
    static getImagePickerAvailableWidth(controller: DocController): number;
    static getColumnWidth(controller: DocController, colCount: number): number;
    static setColumnMargins(controller: DocController, colCount: number, column: number): void;
    static moveRect(rect: IRect, left?: number, top?: number): IRect;
    static scaleRect(rect: IRect, scale: number): IRect;
    static getBorderWidth(controller: DocController): number;
    static formScale(controller: DocController, flat: ISize): number;
    static generateQuestionFlats(survey: SurveyPDF, controller: DocController, question: Question, point: IPoint): Promise<IPdfBrick[]>;
    static isFontExist(controller: DocController, fontName: string): boolean;
    static isCustomFont(controller: DocController, fontName: string): boolean;
    static fixFont(controller: DocController): void;
    static clone(src: any): any;
    static shouldRenderReadOnly(question: IQuestion, controller: DocController, readOnly?: boolean): boolean;
    static isSizeEmpty(val: any): boolean;
    static isHeightEmpty(val: any): boolean;
    static getCorrectedImageSize(controller: DocController, imageOptions: {
        imageWidth?: any;
        imageHeight?: any;
        imageLink: string;
        defaultImageWidth?: any;
        defaultImageHeight?: any;
    }): Promise<ISize>;
    static clear(): void;
}
