import { EventEmitter } from '@angular/core';
import { ClassicEditor, ModelRange } from 'ckeditor5';
import { SdDocumentBuilderComment, SdDocumentBuilderHeading, SdDocumentBuilderOption, SdDocumentBuilderVariable, SdEditorConfig } from './document-builder.model';
import * as i0 from "@angular/core";
export declare class SdDocumentBuilder {
    #private;
    option: SdDocumentBuilderOption;
    disabled: boolean;
    set _disabled(val: boolean | '' | undefined | null);
    contentChange: EventEmitter<string>;
    Editor: typeof ClassicEditor;
    config: SdEditorConfig;
    ngOnInit(): void;
    ngOnDestroy(): void;
    onReady(editor: ClassicEditor): void;
    setContent: (html: string) => void;
    getContent: () => string;
    setOrientation: (orientation: "PORTRAIT" | "LANDSCAPE") => void;
    getOrientation: () => "PORTRAIT" | "LANDSCAPE";
    scrollToTop(): void;
    heading: {
        /**
         * Lấy tất cả headings trong document
         * @returns Danh sách tất cả headings
         */
        all: () => SdDocumentBuilderHeading[];
        /**
         * Scroll tới vị trí của heading
         * @param id - ID của heading cần scroll tới
         */
        scroll: (id: string) => void;
    };
    comment: {
        /**
         * Lấy tất cả comments trong document
         * @returns Danh sách tất cả comments
         */
        all: () => SdDocumentBuilderComment[];
        /**
         * Thêm comment vào vùng text đang được chọn
         * @param comment - Dữ liệu comment
         * @param data - Dữ liệu extra data
         * @returns SdDocumentBuilderComment hoặc null nếu không có text được chọn
         */
        add: <T = any>(range: ModelRange, comment: string, args?: {
            markerIdExternal?: string | number;
            data?: T;
        }) => SdDocumentBuilderComment<T> | null;
        /**
         * Cập nhật nội dung comment
         * @param markerId - ID của marker
         * @param commentData - Dữ liệu mới
         * @returns Comment đã cập nhật hoặc null
         */
        update: <T = any>(markerId: string, comment: string, data?: T) => SdDocumentBuilderComment<T> | null;
        /**
         * Lấy chi tiết comment theo markerId
         * @param markerId - ID của marker
         * @returns Comment hoặc null
         */
        detail: (markerId: string) => SdDocumentBuilderComment | null;
        /**
         * Xóa comment theo markerId
         * @param markerId - ID của marker cần xóa
         * @returns true nếu xóa thành công, false nếu không tìm thấy
         */
        remove: (markerId: string) => boolean;
        /**
         * Scroll đến vị trí comment
         * @param markerId - ID của marker cần scroll tới
         */
        scroll: (markerId: string) => void;
    };
    variable: {
        /**
         * Lấy tất cả variabes trong document
         * @returns Danh sách tất cả variables
         */
        all: <T = any>() => SdDocumentBuilderVariable<T>[];
        /**
         * Scroll tới vị trí của variable
         * @param uuid - uuid của variable FE sẽ tự sinh sau mỗi lần drop vào editor
         */
        scroll: (uuid: string) => void;
    };
    /**
     * Xuất file Word có Header/Footer
     * @param fileName Tên file
     * @param headerText Nội dung Header (hoặc HTML)
     * '<p style="text-align: center; font-weight: bold;">CÔNG TY CỔ PHẦN CÔNG NGHỆ ABC</p>'
     * @param footerText Nội dung Footer (hoặc HTML)
     * '<p style="text-align: right; font-size: 10pt;">Trang <span style="mso-field-code: PAGE"></span> / <span style="mso-field-code: NUMPAGES"></span></p>'
     */
    exportDocx(args: {
        fileName?: string;
        header?: string;
        footer?: string;
    }): void;
    hightSelectRange: (range: ModelRange) => void;
    removeHighlightSeclectRange: () => void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SdDocumentBuilder, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SdDocumentBuilder, "sd-document-builder", never, { "option": { "alias": "option"; "required": true; }; "_disabled": { "alias": "disabled"; "required": false; }; }, { "contentChange": "contentChange"; }, never, never, true, never>;
}
