import { ElementRef, Injector, OnInit, TemplateRef } from '@angular/core';
import { WrappedBoolean } from './models/wrapped-boolean';
import { DataField } from '../models/abstract-data-field';
import { PaperViewService } from '../../navigation/quick-panel/components/paper-view.service';
import { ConfigurationService } from '../../configuration/configuration.service';
import { FormControl } from "@angular/forms";
import { ComponentPortal } from "@angular/cdk/portal";
import { ComponentRegistryService } from "../../registry/component-registry.service";
import * as i0 from "@angular/core";
/**
 * Provides a responsive layout to data fields where their appearance can change based on the width of space they have available.
 *
 * If the width of the available space is less than the `layoutChangeWidthBreakpoint` then the provided `dataFieldTemplate` is displayed at
 * 100% width. If the width is greater or equal to the breakpoint the datafield template occupies the right half and the left half contains
 * it's title.
 *
 * If the datafield's layout is set to `TemplateAppearance.MATERIAL` the field always occupies 100% of the available space
 * regardless of it's width.
 *
 * See {@link DataField} and {@link TemplateAppearance} for more information.
 */
export declare abstract class AbstractDataFieldTemplateComponent implements OnInit {
    protected _paperView: PaperViewService;
    protected _config: ConfigurationService;
    protected _componentRegistry: ComponentRegistryService;
    protected injector: Injector;
    /**
     * Content of the datafield that should be displayed in the template
     */
    dataFieldTemplate: TemplateRef<any>;
    /**
     * If the available space has a width smaller that this breakpoint the datafield will fill 100% of the available space.
     *
     * The breakpoint is only taken into consideration if `TemplateAppearance.NETGRIF` is set on the data field.
     *
     * See [DataField.layout]{@link DataField#layout} for more information.
     */
    layoutChangeWidthBreakpoint: number;
    /**
     * Field offset defined by task
     */
    offset: number;
    private _additionalFieldProperties;
    container: ElementRef;
    protected _dataField: DataField<any>;
    protected _isConfiguredNetgrifTemplate: boolean;
    protected _isNetgrifTemplate: boolean;
    protected _componentPortal: ComponentPortal<any>;
    /**
     * @ignore
     * The value determines whether the layout should be "small" or not. Data field fills 100% of the width in "small" layout.
     */
    protected _showLargeLayout: WrappedBoolean;
    protected constructor(_paperView: PaperViewService, _config: ConfigurationService, _componentRegistry: ComponentRegistryService, injector: Injector);
    ngOnInit(): void;
    get showLargeLayout(): WrappedBoolean;
    /**
     * Datafield model object that should be displayed in the template
     */
    set dataField(dataField: DataField<any>);
    get dataField(): DataField<any>;
    get componentPortal(): ComponentPortal<any>;
    get additionalFieldProperties(): {
        [k: string]: string | number;
    };
    set additionalFieldProperties(value: {
        [k: string]: string | number;
    });
    /**
     * Function that is called when the Component changes dimension and
     * determines whether the "small" or "large" layout should be displayed.
     * @param event - event containing the new width of this Component
     */
    evaluateTemplateCondition(): boolean;
    hasComponent(): boolean;
    resolveComponentPortal(dataField: DataField<any>, showLargeLayout: WrappedBoolean, formControlRef: FormControl, additionalFieldProperties?: {
        [k: string]: string | number;
    }): ComponentPortal<any>;
    /**
     * @returns `false` if the data field uses the `TemplateAppearance.MATERIAL` and `true` otherwise.
     */
    protected evaluateTemplate(): boolean;
    isPaperView(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractDataFieldTemplateComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractDataFieldTemplateComponent, "ncc-abstract-datafield-template", never, { "dataFieldTemplate": { "alias": "dataFieldTemplate"; "required": false; }; "layoutChangeWidthBreakpoint": { "alias": "layoutChangeWidthBreakpoint"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "_additionalFieldProperties": { "alias": "_additionalFieldProperties"; "required": false; }; "dataField": { "alias": "dataField"; "required": false; }; "additionalFieldProperties": { "alias": "additionalFieldProperties"; "required": false; }; }, {}, never, never, false, never>;
}
