export default _export;
/** @type {typeof ObjectBrowser} */
declare const _export: typeof ObjectBrowser;
/**
 * @extends {React.Component<import('./types').ObjectBrowserProps>}
 */
declare class ObjectBrowser extends React.Component<import("./types").ObjectBrowserProps, any, any> {
    /**
     * @private
     * @param {import('./types').ObjectBrowserProps} props
     * @param {any} state
     */
    private static getDerivedStateFromProps;
    /**
     * @param {import('./types').ObjectBrowserProps} props
     */
    constructor(props: import('./types').ObjectBrowserProps);
    lastSelectedItems: any;
    tableRef: React.RefObject<any>;
    filterRefs: {};
    lastAppliedFilter: any;
    pausedSubscribes: boolean;
    selectedFound: boolean;
    root: {
        data: {
            name: string;
            id: string;
        };
        children: any[];
    };
    states: {};
    subscribes: any[];
    statesUpdateTimer: any;
    objectsUpdateTimer: any;
    visibleCols: any[];
    possibleCols: string[];
    imagePrefix: string;
    state: {
        loaded: boolean;
        foldersFirst: string;
        selected: string[];
        selectedNonObject: string;
        filter: string | import("./types").ObjectBrowserTableFilter;
        filterKey: number;
        depth: number;
        expandAllVisible: boolean;
        expanded: string;
        toast: string;
        lang: ioBroker.Languages;
        scrollBarWidth: number;
        customDialog: any[];
        editObjectDialog: string;
        viewFileDialog: string;
        enumDialog: any;
        roleDialog: any;
        modalEmptyId: any;
        statesView: any;
        columns: string;
        columnsForAdmin: any;
        columnsSelectorShow: boolean;
        columnsAuto: boolean;
        columnsWidths: string;
        columnsDialogTransparent: number;
        columnsEditCustomDialog: any;
        customColumnDialogValueChanged: boolean;
        showExportDialog: boolean;
        linesEnabled: boolean;
    };
    edit: {};
    texts: {
        value: string;
        ack: string;
        ts: string;
        lc: string;
        from: string;
        user: string;
        quality: string;
        editObject: string;
        deleteObject: string;
        customConfig: string;
        copyState: string;
        editState: string;
        close: string;
        filter_id: string;
        filter_name: string;
        filter_type: string;
        filter_role: string;
        filter_room: string;
        filter_func: string;
        filter_custom: string;
        objectChangedByUser: string;
        objectChangedBy: string;
        objectChangedFrom: string;
        stateChangedBy: string;
        stateChangedFrom: string;
        ownerGroup: string;
        ownerUser: string;
        deviceError: string;
        deviceDisconnected: string;
        deviceConnected: string;
        aclOwner_read_object: string;
        aclOwner_read_state: string;
        aclOwner_write_object: string;
        aclOwner_write_state: string;
        aclGroup_read_object: string;
        aclGroup_read_state: string;
        aclGroup_write_object: string;
        aclGroup_write_state: string;
        aclEveryone_read_object: string;
        aclEveryone_read_state: string;
        aclEveryone_write_object: string;
        aclEveryone_write_state: string;
    };
    levelPadding: any;
    loadAllObjects(update: any): Promise<void>;
    systemConfig: any;
    objects: any;
    defaultHistory: any;
    info: {
        funcEnums: any[];
        roomEnums: any[];
        roles: any[];
        ids: any[];
        types: any[];
        objects: any;
        customs: any[];
        enums: any[];
        hasSomeCustoms: boolean;
    };
    /**
     * @private
     * @param {ioBroker.EmptyCallback} cb
     */
    private expandAllSelected;
    /**
     * @private
     * @param {boolean} [isDouble]
     */
    private onAfterSelect;
    /**
     * Called when component is mounted.
     */
    componentDidMount(): void;
    /**
     * Called when component is unmounted.
     */
    componentWillUnmount(): void;
    /**
     * Called when component is mounted.
     */
    refreshComponent(): void;
    /**
     * Renders the error dialog.
     * @returns {JSX.Element | null}
     */
    renderErrorDialog(): JSX.Element | null;
    /**
     * Show the error dialog.
     * @param {any} error
     */
    showError(error: any): void;
    /**
     * Called when an item is selected/deselected.
     * @param {string} toggleItem
     * @param {boolean} [isDouble]
     */
    onSelect(toggleItem: string, isDouble?: boolean): void;
    /**
     * @private
     * @param {boolean} isLast
     */
    private _renderDefinedList;
    /**
     * Renders the columns selector.
     * @returns {JSX.Element | null}
     */
    renderColumnsSelectorDialog(): JSX.Element | null;
    /**
     * @private
     */
    private getAdditionalColumns;
    /**
     * @private
     */
    private checkUnsubscribes;
    recordStates: any[];
    /**
     * Find an item.
     * @param {string} id
     * @param {string[] | undefined} [_parts]
     * @param {{ data: { name: string; id: string; }; children: never[]; } | null | undefined} [_root]
     * @param {string | undefined} [_partyId]
     * @returns {any}
     */
    findItem(id: string, _parts?: string[] | undefined, _root?: {
        data: {
            name: string;
            id: string;
        };
        children: never[];
    }, _partyId?: string | undefined): any;
    /**
     * Called when a state changes.
     * @param {string} id
     * @param {ioBroker.State} state
     */
    onStateChange: (id: string, state: ioBroker.State) => void;
    /**
     * @private
     * @param {{ [x: string]: any; }} columnsForAdmin
     * @param {any} obj
     */
    private parseObjectForAdmins;
    /**
     * @param {string} id
     * @param {ioBroker.Object} obj
     * @param {import('./types').OldObject} oldObj
     */
    onObjectChange: (id: string, obj: ioBroker.Object, oldObj: any) => void;
    /**
     * @private
     * @param {string} id
     */
    private subscribe;
    /**
     * @private
     * @param {string} id
     */
    private unsubscribe;
    /**
     * @private
     * @param {boolean} isPause
     */
    private pauseSubscribe;
    /**
     * @private
     * @param {string} [name]
     * @param {boolean} [value]
     */
    private onFilter;
    filterTimer: NodeJS.Timeout;
    clearFilter(): void;
    isFilterEmpty(): boolean;
    /**
     * @private
     * @param {string} name
     */
    private getFilterInput;
    /**
     * @private
     * @param {string} name
     * @param {any[]} values
     */
    private getFilterSelect;
    /**
     * @private
     */
    private getFilterSelectRole;
    /**
     * @private
     */
    private getFilterSelectRoom;
    /**
     * @private
     */
    private getFilterSelectFunction;
    /**
     * @private
     */
    private getFilterSelectType;
    /**
     * @private
     */
    private getFilterSelectCustoms;
    /**
     * @private
     * @param {any} [root]
     * @param {any[]} [expanded]
     */
    private onExpandAll;
    /**
     * @private
     */
    private onCollapseAll;
    /**
     * @private
     * @param {any} root
     * @param {number} depth
     * @param {any[]} expanded
     */
    private expandDepth;
    /**
     * @private
     * @param {number} depth
     * @param {any[]} expanded
     */
    private collapseDepth;
    /**
     * @private
     */
    private onExpandVisible;
    /**
     * @private
     */
    private onStatesViewVisible;
    /**
     * @private
     */
    private onCollapseVisible;
    /**
     * @private
     * @param {string} id
     */
    private getEnumsForId;
    /**
     * @private
     * @param {array} enums
     * @param {string} objId
     */
    private _createAllEnums;
    /**
     * @private
     * @param {any} callback
     */
    private loadObjects;
    _getSelectedIdsForExport(): string[];
    _exportObjects(isAll: any): void;
    renderExportDialog(): JSX.Element;
    /**
     * @private
     * @param {object} evt
     */
    private handleJsonUpload;
    toolTipObjectCreating: () => string | JSX.Element[];
    /**
     * Renders the toolbar.
     * @returns {JSX.Element}
     */
    getToolbar(): JSX.Element;
    /**
     * @private
     * @param {string} id
     */
    private toggleExpanded;
    /**
     * @private
     * @param {Event} e
     * @param {string} text
     */
    private onCopy;
    renderTooltipAccessControl: (acl: any) => "" | JSX.Element;
    /**
     * @param {string} id
     * @param {{ data: { obj: { type: string; }; hasCustoms: any; }; }} item
     * @param {{ cellButtonsButton: string | undefined; cellButtonsButtonAlone: any; cellButtonsButtonIcon: string | undefined; cellButtonsButtonWithCustoms: any; }} classes
     */
    renderColumnButtons(id: string, item: {
        data: {
            obj: {
                type: string;
            };
            hasCustoms: any;
        };
    }, classes: {
        cellButtonsButton: string | undefined;
        cellButtonsButtonAlone: any;
        cellButtonsButtonIcon: string | undefined;
        cellButtonsButtonWithCustoms: any;
    }): JSX.Element | JSX.Element[];
    /**
     * @private
     * @param {string} id
     */
    private readHistory;
    /**
     * @private
     * @param {string} id
     * @param {any} item
     * @param {Record<string, any>} classes
     * @returns {JSX.Element | null}
     */
    private renderColumnValue;
    /**
     * @private
     * @returns {undefined}
     */
    private _syncEnum;
    /**
     * @private
     * @returns {Promise}
     */
    private syncEnum;
    /**
     * @private
     * @returns {JSX.Element | null}
     */
    private renderEnumDialog;
    /**
     * @private
     * @returns {JSX.Element | null}
     */
    private renderEditRoleDialog;
    /**
     * @private
     * @param {boolean} [isSave]
     */
    private onColumnsEditCustomDialogClose;
    customColumnDialog: {
        type: any;
        initValue: any;
        value: any;
    };
    /**
     * @private
     */
    private renderColumnsEditCustomDialog;
    /**
     * @private
     * @param {any} obj
     * @param {any} it
     */
    private getCustomValue;
    /**
     * @private
     * @param {any} obj
     * @param {any} it
     * @param {any} value
     */
    private setCustomValue;
    /**
     * Renders a custom value.
     * @param {any} obj
     * @param {any} it
     * @param {any} item
     * @returns {JSX.Element | null}
     */
    renderCustomValue(obj: any, it: any, item: any): JSX.Element | null;
    /**
     * Renders a leaf.
     * @param {any} item
     * @param {boolean} isExpanded
     * @param {Record<string, any>} classes
     * @param {{ count: number; }} counter
     * @returns {JSX.Element}
     */
    renderLeaf(item: any, isExpanded: boolean, classes: Record<string, any>, counter: {
        count: number;
    }): JSX.Element;
    /**
     * Renders an item.
     * @param {any} root
     * @param {boolean} isExpanded
     * @param {Record<string, any>} classes
     * @param {{ count: any; }} [counter]
     * @returns {JSX.Element[]}
     */
    renderItem(root: any, isExpanded: boolean, classes: Record<string, any>, counter?: {
        count: any;
    }): JSX.Element[];
    /**
     * @private
     * @param {boolean} [columnsAuto]
     * @param {string[]} [columns]
     * @param {any} [columnsForAdmin]
     * @param {Record<string, number>} [columnsWidths]
     */
    private calculateColumnsVisibility;
    adapterColumns: any[];
    columnsVisibility: {
        id: string | number;
        name: any;
        type: any;
        role: any;
        room: any;
        func: any;
        changedFrom: any;
        qualityCode: any;
        timestamp: any;
        lastChange: any;
        val: any;
        buttons: any;
    } | {
        id: string | number;
        name: any;
        type: any;
        role: any;
        room: any;
        func: any;
        changedFrom?: undefined;
        qualityCode?: undefined;
        timestamp?: undefined;
        lastChange?: undefined;
        val?: undefined;
        buttons?: undefined;
    };
    /**
     * @private
     * @returns {JSX.Element}
     */
    private renderHeader;
    /**
     * @private
     * @returns {JSX.Element}
     */
    private renderToast;
    /**
     * Called when component is updated.
     */
    componentDidUpdate(): void;
    scrollToItem(id: any): void;
    /**
     * @private
     * @returns {JSX.Element | null}
     */
    private renderCustomDialog;
    changedIds: any[];
    /**
     * @private
     * @param {Partial<ioBroker.State>} valAck
     */
    private onUpdate;
    /**
     * @private
     * @returns {JSX.Element | null}
     */
    private renderEditObjectDialog;
    /**
     * @private
     * @returns {JSX.Element | null}
     */
    private renderViewObjectFileDialog;
    /**
     * @private
     * @returns {JSX.Element | null}
     */
    private renderEditValueDialog;
    extendObject: (id: any, data: any) => Promise<any>;
    setObject: (id: any, data: any) => Promise<void>;
    /**
     * The rendering method of this component.
     * @returns {JSX.Element}
     */
    render(): JSX.Element;
    unsubscribeTimer: any;
}
declare namespace ObjectBrowser {
    namespace defaultProps {
        const objectAddBoolean: boolean;
        const objectEditBoolean: boolean;
        const objectStatesView: boolean;
        const objectImportExport: boolean;
        const objectEditOfAccessControl: boolean;
        function modalNewObject(): void;
        function modalEditOfAccessControl(): void;
    }
    namespace propTypes {
        export const dialogName: PropTypes.Requireable<string>;
        export const classes: PropTypes.Requireable<object>;
        export const defaultFilters: PropTypes.Requireable<object>;
        export const selected: PropTypes.Requireable<string | any[]>;
        export const onSelect: PropTypes.Requireable<(...args: any[]) => any>;
        export const onFilterChanged: PropTypes.Requireable<(...args: any[]) => any>;
        export const socket: PropTypes.Requireable<object>;
        export const showExpertButton: PropTypes.Requireable<boolean>;
        export const expertMode: PropTypes.Requireable<boolean>;
        export const imagePrefix: PropTypes.Requireable<string>;
        export const themeName: PropTypes.Requireable<string>;
        export const themeType: PropTypes.Requireable<string>;
        export const theme: PropTypes.Requireable<object>;
        export const t: PropTypes.Requireable<(...args: any[]) => any>;
        export const lang: PropTypes.Validator<string>;
        export const multiSelect: PropTypes.Requireable<boolean>;
        export const notEditable: PropTypes.Requireable<boolean>;
        export const foldersFirst: PropTypes.Requireable<boolean>;
        export const disableColumnSelector: PropTypes.Requireable<boolean>;
        export const isFloatComma: PropTypes.Requireable<boolean>;
        export const dateFormat: PropTypes.Requireable<string>;
        export const levelPadding: PropTypes.Requireable<number>;
        export const objectCustomDialog: PropTypes.Requireable<object>;
        const objectAddBoolean_1: PropTypes.Requireable<boolean>;
        export { objectAddBoolean_1 as objectAddBoolean };
        const objectEditBoolean_1: PropTypes.Requireable<boolean>;
        export { objectEditBoolean_1 as objectEditBoolean };
        const objectStatesView_1: PropTypes.Requireable<boolean>;
        export { objectStatesView_1 as objectStatesView };
        const objectImportExport_1: PropTypes.Requireable<boolean>;
        export { objectImportExport_1 as objectImportExport };
        const objectEditOfAccessControl_1: PropTypes.Requireable<boolean>;
        export { objectEditOfAccessControl_1 as objectEditOfAccessControl };
        const modalNewObject_1: PropTypes.Requireable<(...args: any[]) => any>;
        export { modalNewObject_1 as modalNewObject };
        const modalEditOfAccessControl_1: PropTypes.Requireable<(...args: any[]) => any>;
        export { modalEditOfAccessControl_1 as modalEditOfAccessControl };
        export const onObjectDelete: PropTypes.Requireable<(...args: any[]) => any>;
        export const customFilter: PropTypes.Requireable<object>;
        export const objectBrowserValue: PropTypes.Requireable<object>;
        export const objectBrowserEditObject: PropTypes.Requireable<object>;
        export const objectBrowserEditRole: PropTypes.Requireable<object>;
        export const objectBrowserViewFile: PropTypes.Requireable<(...args: any[]) => any>;
        export const router: PropTypes.Requireable<object>;
        export const types: PropTypes.Requireable<any[]>;
        export const columns: PropTypes.Requireable<any[]>;
        export const objectsWorker: PropTypes.Requireable<object>;
        export const filterFunc: PropTypes.Requireable<(...args: any[]) => any>;
        export const dragSettings: PropTypes.Requireable<object>;
        export const DragWrapper: PropTypes.Requireable<(...args: any[]) => any>;
        export const dragEnabled: PropTypes.Requireable<boolean>;
        export const useDrag: PropTypes.Requireable<(...args: any[]) => any>;
    }
}
import React from "react";
import PropTypes from "prop-types";
