import { AfterViewInit, DoCheck, ElementRef, EventEmitter, KeyValueDiffers, NgZone, OnDestroy, OnInit } from "@angular/core";
import { ControlValueAccessor } from "@angular/forms";
import { Editor, EditorFromTextArea, ScrollInfo } from "codemirror";
import { Formula } from "../tools/formula";
import { NzConfigService } from "ng-zorro-antd/core";
import { NzMessageService } from "ng-zorro-antd/message";
export declare class DeonCodemirror implements AfterViewInit, OnDestroy, ControlValueAccessor, DoCheck, OnInit {
    private _differs;
    private _ngZone;
    el: ElementRef;
    private message;
    private nzConfigService;
    itemTitle: {
        tablesName: string;
        fieldsName: string;
    };
    options: {
        [key: string]: any;
    };
    /**
     * 可用变量对象
     * {
     *   formFields:[],tableList:[]
     * }
     */
    fieldData: any;
    /**
     * 黑名单  值为函数名数组
     */
    blacklist: Array<string>;
    readonly dateType: string;
    variableSearch: string;
    usageFunSearch: string;
    /**
     *  所有支持函数分组信息
     *  name 分组名称  string
     *  code 分组code  string
     *  items 函数名集合 string[]
     */
    readonly globalCategorys: any[];
    /**
     * 获取全局CodeMirror
     */
    readonly codeMirrorGlobal: any;
    fml: Formula;
    name: string;
    title: string;
    autoFocus: boolean;
    /**
     * 函数显示类型
     * 班次 attendance 所有 // attendance-items 精度 进位规则
     *
     * 与categorys互斥，有type时使用type
     */
    type: string;
    /**
     * 显示的函数组
     * 与type 互斥，如果type有值，当前参数无效。
     */
    categorys: Array<string>;
    typeList: any;
    preserveScrollPosition: boolean;
    labelMap: any;
    _fieldData: any;
    cursorActivity: EventEmitter<Editor>;
    focusChange: EventEmitter<boolean>;
    scroll: EventEmitter<ScrollInfo>;
    drop: EventEmitter<[Editor, DragEvent]>;
    textChange: EventEmitter<any>;
    ref: ElementRef;
    value: string;
    disabled: boolean;
    isFocused: boolean;
    codeMirror?: EditorFromTextArea;
    /**
     * 存放匹配的变量集合
     */
    variableSearchList: any[];
    /**
     * 存放匹配的函数集合
     */
    usageFunSearchList: any[];
    FormulaUsage: any[];
    /**
     * 查询可用变量
     */
    _variableSearch: any;
    /**
     * 查询可用函数
     */
    _usageFunSearch: any;
    /**
     * 函数描述
     */
    usageDescription: string;
    private _codeMirror;
    private _differ?;
    private _options;
    private _fomulaContext;
    constructor(_differs: KeyValueDiffers, _ngZone: NgZone, el: ElementRef, message: NzMessageService, nzConfigService: NzConfigService);
    ngOnInit(): void;
    /**
     * 根据黑名单过滤公式
     */
    filterUsageByBlackList(formulaUsage: any): any[];
    /**
     * 组装显示的函数
     */
    resolveDisplayFormula(): string[];
    /**
     * 组装FomulaContext
     */
    resolveFomulaContext(): string[];
    ngAfterViewInit(): void;
    ngDoCheck(): void;
    ngOnDestroy(): void;
    codemirrorValueChanged(cm: any, change: any): void;
    setOptionIfChanged(optionName: string, newValue: any): void;
    focusChanged(focused: boolean): void;
    scrollChanged(cm: Editor): void;
    cursorActive(cm: Editor): void;
    dropFiles(cm: Editor, e: DragEvent): void;
    writeValue(value: string): void;
    registerOnChange(fn: (value: string) => void): void;
    registerOnTouched(fn: () => void): void;
    setDisabledState(isDisabled: boolean): void;
    /**
     * 函数鼠标滑动时事件
     * @param e
     */
    usageMouseover(e: any): void;
    /**
     * 插入函数
     * @param e
     */
    insertUsageFun(e: any): void;
    /**
     * 插入可用变量
     * @param event
     */
    insertField(event: any): void;
    copy(): void;
    paste(): void;
    private onChange;
    private onTouched;
    private markField;
    private insertBarcket;
    private getValue;
    private fakeLabel;
    private setValue;
}
