import { CSSResult, LitElement, PropertyValues, TemplateResult } from "lit";
import { Asset, AssetDescriptor, Attribute, AttributeRef } from "@openremote/model";
import "@openremote/or-translate";
export interface AttributeAction {
    icon: string;
    tooltip: string;
    active: boolean;
    disabled: boolean;
    color?: string;
}
export declare class AttributeActionEvent extends CustomEvent<{
    asset: Asset;
    attributeRef: AttributeRef;
    action: AttributeAction;
}> {
    static readonly NAME = "attribute-action";
    constructor(asset: Asset, attributeRef: AttributeRef, action: AttributeAction);
}
export declare class AttributesSelectEvent extends CustomEvent<{
    assets: Asset[];
    attributeRefs: AttributeRef[];
}> {
    static readonly NAME = "attribute-select";
    constructor(assets: Asset[], attributeRefs: AttributeRef[]);
}
export declare class AttributesPanel extends LitElement {
    attributeRefs: AttributeRef[];
    multi: boolean;
    onlyDataAttrs: boolean;
    protected attributeFilter?: (attribute: Attribute<any>) => boolean;
    protected attributeIconCallback?: (asset: Asset, attribute: Attribute<any>, descriptor?: AssetDescriptor) => TemplateResult;
    protected attributeLabelCallback?: (asset: Asset, attribute: Attribute<any>, attributeLabel: string) => TemplateResult;
    protected attributeActionCallback?: (attribute: AttributeRef) => AttributeAction[];
    protected loadedAssets: Asset[];
    static get styles(): CSSResult[];
    protected willUpdate(changedProps: PropertyValues): void;
    protected getLoadedAsset(attrRef: AttributeRef): Asset | undefined;
    protected removeWidgetAttribute(attributeRef: AttributeRef): void;
    protected loadAssets(): Promise<Asset[]>;
    fetchAssets(attributeRefs?: AttributeRef[]): Promise<Asset[]>;
    protected onAttributeActionClick(asset: Asset, attributeRef: AttributeRef, action: AttributeAction): void;
    protected openAttributeSelector(attributeRefs: AttributeRef[], multi: boolean, onlyDataAttrs?: boolean, attributeFilter?: (attribute: Attribute<any>) => boolean): void;
    protected render(): TemplateResult;
    protected _getAttributeActionsTemplate(asset: Asset, attributeRef: AttributeRef): TemplateResult;
    protected _getAttributeActionTemplate(action: AttributeAction, asset: Asset, attributeRef: AttributeRef): TemplateResult;
}
