import { TemplateResult } from "lit";
import "@openremote/or-asset-viewer";
import { OrAssetViewer, OrAssetViewerEditToggleEvent, OrAssetViewerRequestEditToggleEvent, OrAssetViewerLoadUserEvent, ViewerConfig, OrAssetViewerLoadAlarmEvent, OrAssetViewerRequestSaveEvent } from "@openremote/or-asset-viewer";
import { AssetTreeConfig, ChangeParentEventDetail, OrAssetTree, OrAssetTreeAssetEvent, OrAssetTreeRequestAddEvent, OrAssetTreeRequestSelectionEvent, OrAssetTreeToggleExpandEvent } from "@openremote/or-asset-tree";
import { AppStateKeyed, Page, PageProvider } from "@openremote/or-app";
import { Store } from "@reduxjs/toolkit";
import { Asset } from "@openremote/model";
import "@openremote/or-json-forms";
export interface PageAssetsConfig {
    viewer?: ViewerConfig;
    tree?: AssetTreeConfig;
}
export interface AssetsState {
    expandedAssetIds: string[];
}
export interface AssetsStateKeyed extends AppStateKeyed {
    assets: AssetsState;
}
export declare const pageAssetsReducer: import("redux").Reducer<AssetsState>;
export declare const PAGE_ASSETS_CONFIG_DEFAULT: PageAssetsConfig;
export declare function pageAssetsProvider(store: Store<AssetsStateKeyed>, config?: PageAssetsConfig): PageProvider<AssetsStateKeyed>;
export declare class PageAssets extends Page<AssetsStateKeyed> {
    static get styles(): import("lit").CSSResult;
    config?: PageAssetsConfig;
    protected _editMode: boolean;
    protected _assetIds?: string[];
    protected _expandedIds?: string[];
    protected _tree: OrAssetTree;
    protected _viewer?: OrAssetViewer;
    protected _addCallback?: (asset: Asset) => void;
    protected _realmSelector: (state: AssetsStateKeyed) => string;
    get name(): string;
    protected getRealmState: ((state: AssetsStateKeyed) => Promise<void>) & import("reselect").OutputSelectorFields<(args_0: string) => Promise<void>, {
        clearCache: () => void;
    }> & {
        clearCache: () => void;
    };
    constructor(store: Store<AssetsStateKeyed>);
    connectedCallback(): void;
    protected render(): TemplateResult | void;
    stateChanged(state: AssetsStateKeyed): void;
    protected _onParentChangeClick(): void;
    protected _onAssetSelectionRequested(event: OrAssetTreeRequestSelectionEvent): void;
    protected _onAssetSelectionChanged(userInitiated: boolean, assetIds: string[] | undefined): void;
    protected _onEditToggleRequested(event: OrAssetViewerRequestEditToggleEvent): void;
    protected _onEditToggle(event: OrAssetViewerEditToggleEvent): void;
    protected _confirmContinue(action: () => void): void;
    protected _onAssetAddRequested(ev: OrAssetTreeRequestAddEvent): void;
    protected _onAssetAdd(asset: Asset): Promise<void>;
    protected _onAssetViewerSaveRequested(ev: OrAssetViewerRequestSaveEvent): void;
    protected _doSaveAndLoad(asset: Asset): Promise<void>;
    protected _onAssetParentChange(parentChange: ChangeParentEventDetail): Promise<void>;
    protected _onAssetTreeAssetEvent(ev: OrAssetTreeAssetEvent): void;
    protected _onAssetExpandToggle(event: OrAssetTreeToggleExpandEvent): void;
    protected _updateRoute(silent?: boolean): void;
    protected _onLoadUserEvent(event: OrAssetViewerLoadUserEvent, silent?: boolean): void;
    protected _onLoadAlarmEvent(event: OrAssetViewerLoadAlarmEvent, silent?: boolean): void;
}
