import { Subject } from 'rxjs';
import { IFormConfig, PieceDefinition } from '../../interfaces/form-config.interface';
export declare abstract class FormPiece {
    protected destroy$: Subject<void>;
    protected _formState: string;
    protected _visibleForced: boolean;
    protected _isForced: boolean;
    protected _absoluteVisible: boolean;
    protected _absoluteDisabled: boolean;
    protected _widget: any;
    protected visibleStates: string[];
    protected enabledStates: string[];
    protected _form: any;
    protected _formConfig: IFormConfig;
    protected _visible: boolean;
    protected _disabled: boolean;
    customAttributes: Record<string, any>;
    constructor(pieceDefinition: PieceDefinition, formConfig: IFormConfig);
    getCustomAttribute(name: string): any;
    setCustomAttribute(name: string, value: any): void;
    setCustomAttributes(attributes: Record<string, any>): FormPiece;
    matchAttribute(name: string, value: string): boolean;
    setVisibleStates(newStates: any): void;
    addVisibleState(state: string): void;
    removeVisibleState(state: string): void;
    setEnabledStates(newStates: any): void;
    addEnabledState(state: string): void;
    removeEnabledState(state: string): void;
    viewOnState(state: string): boolean;
    enabledOnState(state: string): boolean;
    get absoluteVisible(): boolean;
    get absoluteDisabled(): boolean;
    get visible(): boolean;
    set visible(visible: boolean);
    visibleOn(state: string): boolean;
    enabledOn(state: string): boolean;
    setVisibility(visible: boolean, forced?: boolean | null): void;
    show(forced?: boolean | null): void;
    hide(forced?: boolean | null): void;
    get enabled(): boolean;
    set enabled(enabled: boolean);
    get editable(): boolean;
    get disabled(): boolean;
    set disabled(disabled: boolean);
    enable(): void;
    disable(): void;
    formStateChangeCustomSubscribe(form: any, formChangeSubject: any): void;
    formStateChange(state: any): void;
    connectWithParentForm(form: any, formChangeSubject: any): void;
    get form(): any;
    get formConfig(): IFormConfig;
    set widget(widget: any);
    get widget(): any;
    destroy(): void;
}
