import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, Renderer2, SimpleChanges } from "@angular/core";
import { FormBuilder, FormControl, FormGroup } from "@angular/forms";
import { Observable } from "rxjs";
import { FreeTypeQueryUtilsService } from "./helpers/freetype-query-utils.service";
import { CaretCoordinates, HelpEntry, HintEntry, QueryToken, RenderConfigurator, Tokenizer } from "./models";
import { SelectV2Component } from "../select-v2/select/select-v2.component";
import { ToastService } from "../toast/toast.service";
import * as i0 from "@angular/core";
export declare class FreetypeQueryBuilderComponent<T extends QueryToken> implements OnChanges, OnDestroy, AfterViewInit {
    private renderer2;
    private formBuilder;
    private cd;
    private toastService;
    private utils;
    private static pasteTextCommon;
    private readonly KEY_ENTER_CODE;
    private readonly KEY_ESC_CODE;
    maxLength: number;
    readonly: boolean;
    placeholder: string;
    value: string;
    renderer: RenderConfigurator<T>;
    tokenizer: Tokenizer<T>;
    currentHelp: HelpEntry[];
    cursorSetter$: Observable<any>;
    helpItemSelected: EventEmitter<{
        value: string;
    }>;
    currentValue: EventEmitter<{
        value: string;
        tokens: T[];
    }>;
    cursorPos: EventEmitter<number>;
    cursorCoords: EventEmitter<CaretCoordinates>;
    submitQuery: EventEmitter<any>;
    querySelect: SelectV2Component;
    messageTextarea: ElementRef;
    messageTextareaHolder: ElementRef;
    textHighlightOverlayHolder: ElementRef;
    textHighlightOverlay: ElementRef;
    private readonly ON_SCROLL_CALLBACK;
    private readonly BASE_LINE;
    private destroy$$;
    private tokens;
    private scrollValue;
    private cursorPosition;
    private bodyControl;
    private focusedToken;
    private lastHeight;
    formGroup: FormGroup;
    focusedTokenValue: string;
    highlightModel: {
        value: string;
        tokens: T[];
    };
    inputHeight: number;
    selectControl: FormControl;
    constructor(renderer2: Renderer2, formBuilder: FormBuilder, cd: ChangeDetectorRef, toastService: ToastService, utils: FreeTypeQueryUtilsService);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    private openOptions;
    ngOnDestroy(): void;
    onKeyDown($event: KeyboardEvent): void;
    onDrop($event: DragEvent): void;
    onKeyUp($event: KeyboardEvent): void;
    onClick($event: MouseEvent): void;
    itemSelected($event: {
        newValue: HintEntry;
        oldValue: HintEntry | undefined;
    }): void;
    private get textarea();
    private get textareaHolder();
    private clearNewLinesOnPaste;
    private scrollToCursor;
    private pasteTextFirefox;
    private onTextAreaScroll;
    private onValueChange;
    private setCursorToPos;
    private rerender;
    private getFocusedTokenIndex;
    private updateCursor;
    private textAreaHeightChanged;
    private registerListeners;
    private clearListeners;
    static ɵfac: i0.ɵɵFactoryDeclaration<FreetypeQueryBuilderComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FreetypeQueryBuilderComponent<any>, "nui-freetype-query-builder", never, { "maxLength": { "alias": "maxLength"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "renderer": { "alias": "renderer"; "required": false; }; "tokenizer": { "alias": "tokenizer"; "required": false; }; "currentHelp": { "alias": "currentHelp"; "required": false; }; "cursorSetter$": { "alias": "cursorSetter$"; "required": false; }; }, { "helpItemSelected": "helpItemSelected"; "currentValue": "currentValue"; "cursorPos": "cursorPos"; "cursorCoords": "cursorCoords"; "submitQuery": "submitQuery"; }, never, never, false, never>;
}
