import { Observable } from 'rxjs';
import { ElementComponent } from '../../pages/builder/element/element.component';
import { HttpClient } from '@angular/common/http';
import { CountryService } from '../country/country.service';
import 'moment/locale/ar-sa';
import 'moment/locale/en-gb';
import { DataService } from '../data/data.service';
import * as i0 from "@angular/core";
export declare class PdfDesignerService {
    private countryService;
    private http;
    private dataService;
    private pdfElements;
    private pdfElementsSubject;
    private selectedElementSubject;
    private selectHeaderSubject;
    private elementComponent;
    pdf: any;
    unique_id: any;
    tempElem: any[];
    pdfElements$: Observable<any[]>;
    selectedElement$: Observable<{
        index: number;
        pdfIndex?: number;
    }>;
    selectHeaderSubject$: Observable<any>;
    currentElement: any;
    selectTableColumn: any;
    currencyOption: any;
    constructor(countryService: CountryService, http: HttpClient, dataService: DataService);
    getDefaultPdfSettings(): {
        pageSize: string;
        pageOrientation: string;
        pageMargins: number[];
        backgroundColor: string;
        header: {
            enabled: boolean;
            showOn: string;
            text: string;
            leftText: string;
            centerText: string;
            rightText: string;
            alignment: string;
            fontSize: number;
            color: string;
            margin: number[];
            bottomBorder: boolean;
            borderColor: string;
            borderWidth: number;
        };
        watermark: {
            enabled: boolean;
            text: string;
            color: string;
            opacity: number;
            angle: number;
            fontSize: number;
        };
        footer: {
            enabled: boolean;
            showOn: string;
            text: string;
            leftText: string;
            centerText: string;
            rightText: string;
            alignment: string;
            fontSize: number;
            color: string;
            margin: number[];
            topBorder: boolean;
            borderColor: string;
            borderWidth: number;
        };
    };
    private ensurePdfSettings;
    intializeBook(pdf: any): void;
    getRefQbData(refqbid: string): Observable<any>;
    addElementWithId(): string;
    newBook(): void;
    clearElements(): void;
    getElementComponent(): ElementComponent | null;
    setElementComponent(component: ElementComponent): void;
    addElement(element: any): void;
    addTableElement(element: any, index: number): void;
    updateElement(index: number, updates: Partial<any>): void;
    updateTitle(event: any): void;
    setSelectedElement(index: number, pdfIndex?: number): void;
    setSelectedTableElement(index: any, event: any): void;
    removeSelectedTableElement(index: number, event: any): void;
    getSelectTableColumn(): any;
    selectHeading(event: any): void;
    getElements(): any[];
    sortElementsByOrder(): void;
    getBook(): any;
    downloadElement(): any;
    buildPdfOutput(pdfJSON: any, dataBind?: any, pdfDefinitionOptions?: any, action?: 'preview' | 'download' | 'definition' | string, elements?: any[]): {
        action: string;
        title: any;
        pdf: any;
        book: any;
        boundBook: any;
        pdfJson: any;
        pdfDefinition: any;
        dataBind: any;
    };
    buildPdfOutputFromConfig(config: {
        pdfJSON: any;
        dataBind?: any;
        pdfDefinitionOptions?: any;
        action?: 'preview' | 'download' | 'definition' | string;
        elements?: any[];
    }): {
        action: string;
        title: any;
        pdf: any;
        book: any;
        boundBook: any;
        pdfJson: any;
        pdfDefinition: any;
        dataBind: any;
    };
    buildBoundPdfBook(pdfJSON?: any, dataBind?: any, elements?: any[]): any;
    bindPdfElements(elements?: any[], dataBind?: any): any[];
    createPdfDefinition(boundBook: any, pdfDefinitionOptions?: any): any;
    private bindPdfQuestion;
    private normalizeBindableMetadata;
    private getBoundReferenceValue;
    private getBoundReferencePartsValue;
    private getBoundTemplateValue;
    private formatBoundDateValue;
    private hasBindableValue;
    private getBoundTableRows;
    private applyTableDataFilter;
    private matchesTableDataFilter;
    private normalizeFilterValue;
    private buildTableSummaryValues;
    private computeTableSummaryValue;
    private resolveSummaryOperand;
    private toNumericValue;
    private getPdfUniqueId;
    private clonePlain;
    buildPdfBook(pdf?: any, elements?: any[]): any;
    private applyPdfPageSettings;
    private hasRunningBandContent;
    private buildRunningBand;
    private replacePageTokens;
    convertToPdfLayout(input: any): any;
    private buildTableLayout;
    private isEmptyTableDataRow;
    private buildRichTextStack;
    private buildPlainRichTextStack;
    private buildRichTextHtmlStack;
    private appendRichHtmlBlock;
    private appendRichHtmlList;
    private collectRichInlineRuns;
    private getRichHtmlInlineStyle;
    private getRichHtmlBlockStyle;
    private getRichHtmlBlockMargin;
    private isRichHtml;
    private isRichHtmlContainer;
    private isRichHtmlBlockTag;
    private shouldKeepEmptyRichBlock;
    private hasRichInlineText;
    private htmlToPlainText;
    private parseCssDeclarations;
    private normalizeCssColor;
    private parseCssSize;
    private buildTextValueNode;
    private buildStyledTextStack;
    private isQuotationHeadingText;
    private getDefaultTextHeadingColor;
    private getDefaultTextHeadingSize;
    private parsePdfMakeJson;
    private formatCurrencyText;
    private normalizeCurrencyValue;
    private resolveCurrencySymbol;
    private resolveCurrencyOption;
    private removeUnavailableFonts;
    private replaceUnsupportedCurrencySymbols;
    updateElementsOrder(updatedElements: any[]): void;
    removeElementComponent(id: any): void;
    elementUpdate(element: any, from?: any): void;
    dateTransform(value: any, type: 'date' | 'datetime' | 'month' | 'time', languageCode: string, dateFormatType: 'hijri' | 'gregorianAr' | 'gregorian'): string;
    private toArabicNumbers;
    private normalizeMargin;
    private normalizePdfStyle;
    static ɵfac: i0.ɵɵFactoryDeclaration<PdfDesignerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PdfDesignerService>;
}
