import { ElementRef, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { Property, PropertyType } from '@aztrix/models';
import { ProfilePropertyRepresentation, PropertyRepresentation } from '@aztrix/sdk';
import { ControlsOf, FormArray, FormControl, FormGroup } from '@ngneat/reactive-forms';
import * as i0 from "@angular/core";
export declare abstract class AbstractPropertyEdit implements OnInit, OnChanges, OnDestroy {
    form?: FormGroup<ControlsOf<Property | PropertyRepresentation>> | any | null;
    name: string;
    hint?: string;
    autofocus?: boolean;
    customLabel: string;
    required: boolean;
    showErrors: boolean;
    showIcon: boolean;
    autocompleteAttr?: string;
    autocompleteProperties?: (Property | ProfilePropertyRepresentation)[];
    autocomplete: boolean;
    prefix?: string;
    postfix?: string;
    published: boolean;
    readonly: boolean;
    icon?: string;
    hintElement: ElementRef;
    PropertyType: {
        USERNAME: PropertyType;
        FIRST_NAME: PropertyType;
        MIDDLE_NAME: PropertyType;
        LAST_NAME: PropertyType;
        AVATAR: PropertyType;
        GENDER: PropertyType;
        BIRTHDAY: PropertyType;
        FOUNDED: PropertyType;
        DISSOLVED: PropertyType;
        DAY: PropertyType;
        MONTH: PropertyType;
        YEAR: PropertyType;
        EMAIL: PropertyType;
        MOBILE_PHONE: PropertyType;
        PHONE: PropertyType;
        FAX: PropertyType;
        WEBSITE: PropertyType;
        BIC: PropertyType;
        JOB_TITLE: PropertyType;
        INDUSTRY: PropertyType;
        GROUP: PropertyType;
        REGION: PropertyType;
        ADDRESS: PropertyType;
        STREET: PropertyType;
        COUNTRY: PropertyType;
        BUILDING: PropertyType;
        BOX: PropertyType;
        LOCALITY: PropertyType;
        NUMBER: PropertyType;
        ZIP: PropertyType;
        DISTRICT: PropertyType;
        PROVINCE: PropertyType;
        SUBURB: PropertyType;
        STATE: PropertyType;
        COUNTY: PropertyType;
        LAT_LONG: PropertyType;
        FACEBOOK: PropertyType;
        TWITTER: PropertyType;
        TIKTOK: PropertyType;
        WHATSAPP: PropertyType;
        LINKEDIN: PropertyType;
        INSTAGRAM: PropertyType;
        SKYPE: PropertyType;
        YOUTUBE: PropertyType;
        WECHAT: PropertyType;
        FACEBOOK_MESSENGER: PropertyType;
        WEIBO: PropertyType;
        QQ: PropertyType;
        KUAISHOU: PropertyType;
        QZONE: PropertyType;
        SNAPCHAT: PropertyType;
        TELEGRAM: PropertyType;
        PINTEREST: PropertyType;
        REDDIT: PropertyType;
        DISCORD: PropertyType;
        TWITCH: PropertyType;
        TUMBLR: PropertyType;
        MASTODON: PropertyType;
        PATREON: PropertyType;
        KICKSTARTER: PropertyType;
        INDIEGOGO: PropertyType;
        GOFUNDME: PropertyType;
        VIMEO: PropertyType;
        NOTE: PropertyType;
        ORGANISATION_NAME: PropertyType;
        LEGAL_NAME: PropertyType;
        LEGAL_FORM: PropertyType;
        LEGAL_ID: PropertyType;
        COMPANY_NUMBER: PropertyType;
        JURISDICTION: PropertyType;
        IMPORT_SOURCE: PropertyType;
        PROPOSAL: PropertyType;
        CATEGORY: PropertyType;
        TAKEAWAY: PropertyType;
        DELIVEROO: PropertyType;
        SHIPTO: PropertyType;
        UBEREATS: PropertyType;
        OPENING_HOURS: PropertyType;
        CUSTOM: PropertyType;
        FILE: PropertyType;
        IMAGE: PropertyType;
        FILE_KEY: PropertyType;
        FILE_NAME: PropertyType;
        TERMS_AND_CONDITIONS: PropertyType;
        PRIVACY_POLICY: PropertyType;
        DOCUMENT: PropertyType;
        DOCUMENT_NAME: PropertyType;
        ORGANISATION_TYPE: PropertyType;
        NAME: PropertyType;
        BANK_ACCOUNT: PropertyType;
        IBAN: PropertyType;
        PAGE: PropertyType;
    };
    collapsed: boolean;
    overflowing: boolean;
    private _subscription;
    protected uniqueId: number;
    protected disabledChangesFn: (disabled: boolean) => unknown;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    registerOnDisabledChange(fn: (isDisabled: boolean) => void): void;
    ngOnDestroy(): void;
    getName(): string;
    get valueControl(): FormControl<string | undefined>;
    get typeControl(): FormControl<PropertyType>;
    get type(): PropertyType;
    get propertiesControl(): FormArray<Property>;
    get hasValue(): boolean;
    protected markAsDirty(): void;
    protected getPropertyControl(type: PropertyType): FormGroup<ControlsOf<Property>>;
    isOverflowing(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractPropertyEdit, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AbstractPropertyEdit, never, never, { "form": { "alias": "form"; "required": false; }; "name": { "alias": "name"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "customLabel": { "alias": "customLabel"; "required": false; }; "required": { "alias": "required"; "required": false; }; "showErrors": { "alias": "showErrors"; "required": false; }; "showIcon": { "alias": "showIcon"; "required": false; }; "autocompleteAttr": { "alias": "autocompleteAttr"; "required": false; }; "autocompleteProperties": { "alias": "autocompleteProperties"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; "postfix": { "alias": "postfix"; "required": false; }; "published": { "alias": "published"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; }, {}, never, never, false, never>;
}
