import { OnInit, EventEmitter, ElementRef, ChangeDetectorRef } from '@angular/core';
import { LfFieldInfo, LfFieldValue } from '../../../utils/lf-field-types';
import { FormControl, ValidatorFn, FormGroup } from '@angular/forms';
import { LfFieldTokenData, LfFieldTokenService } from '../lf-field-token.service';
import { AppLocalizationService, ValidationRule } from '@laserfiche/lf-ui-components/internal-shared';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
/** @internal */
export declare abstract class BaseFieldDirective implements OnInit {
    tokenService: LfFieldTokenService;
    ref: ChangeDetectorRef;
    localizationService: AppLocalizationService;
    lf_field_info: LfFieldInfo;
    lf_field_form_control: FormControl;
    lf_field_value: LfFieldValue | undefined;
    parent_form: FormGroup | undefined;
    is_import_mode: boolean;
    fieldValueChange: EventEmitter<string>;
    tokenTarget?: ElementRef;
    dynamic_field_value_options: string[] | undefined;
    showTokenTextBox: boolean;
    private readonly CHARACTER_COUNT;
    private readonly NOT_AVAILABLE_WITH_TOKENS;
    private readonly REQUIRED_FIELD_IS_EMPTY;
    private THIS_FIELD_HAS_MAXIMUM_ALLOWED_LENGTH_0_CHARACTERS?;
    get containsToken(): boolean;
    get lfFieldTokenData(): LfFieldTokenData;
    get isDynamic(): boolean;
    readonly tokenCharacterCountHint: Observable<string>;
    readonly noTokenCharacterCountHint: Observable<string>;
    private getConcatenatedTokenLabel;
    private getTokenCharacterCountHint;
    private getNoTokenCharacterCountHint;
    private getFieldLengthRatio;
    constructor(tokenService: LfFieldTokenService, ref: ChangeDetectorRef, localizationService: AppLocalizationService);
    fieldValidationErrorMsg: Observable<string | undefined>;
    ngOnInit(): Promise<void>;
    abstract deserializeLfFieldValue(): string;
    abstract serializeFieldFormControlValue(): string;
    abstract getAdditionalValidatorsForFieldType(): ValidatorFn[];
    abstract getValidationTextForFieldType(validationRuleName: ValidationRule): Observable<string> | undefined;
    protected fieldOnValueChanged(): void;
    getLfFieldFormControlValue(): string;
    setLfFieldFormControlValue(newValue: string | undefined): void;
    onValueChanged(emitEvent?: boolean): void;
    getBrokenValidationRule(): ValidationRule | undefined;
    onDateOrTimeTokenValueChanged(): void;
    onFocusOutTokenInput(): void;
    protected getValidationErrorMsg(validationRuleName: ValidationRule | undefined): Observable<string> | undefined;
    onTokenChosen(token: string): void;
    createNewFieldValueWithToken(token: string): string;
    resetToDefaultValidators(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseFieldDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFieldDirective, never, never, { "lf_field_info": { "alias": "lf_field_info"; "required": false; }; "lf_field_form_control": { "alias": "lf_field_form_control"; "required": false; }; "lf_field_value": { "alias": "lf_field_value"; "required": false; }; "parent_form": { "alias": "parent_form"; "required": false; }; "is_import_mode": { "alias": "is_import_mode"; "required": false; }; "dynamic_field_value_options": { "alias": "dynamic_field_value_options"; "required": false; }; }, { "fieldValueChange": "fieldValueChange"; }, never, never, false, never>;
}
