import { LitElement, PropertyValues } from "lit";
import { Asset, AssetDescriptor, AssetTypeInfo, Attribute, AttributeDescriptor, AttributePredicate, LogicGroup, RuleCondition, ValueDescriptor, ValuePredicateUnion, AssetQuery } from "@openremote/model";
import { AssetQueryOperator, RulesConfig } from "../index";
import "@openremote/or-mwc-components/or-mwc-input";
import "@openremote/or-attribute-input";
import "./modals/or-rule-radial-modal";
declare const OrRuleAssetQuery_base: (new (...args: any[]) => {
    _i18nextJustInitialized: boolean;
    _language: string;
    connectedCallback(): void;
    disconnectedCallback(): void;
    shouldUpdate(changedProps: PropertyValues): any;
    initCallback: (options: import("i18next").InitOptions) => void;
    langChangedCallback: () => void;
    readonly isConnected: boolean;
}) & typeof LitElement;
export declare class OrRuleAssetQuery extends OrRuleAssetQuery_base {
    condition: RuleCondition;
    readonly?: boolean;
    config?: RulesConfig;
    assetInfos?: AssetTypeInfo[];
    assetProvider: (type: string, query?: AssetQuery) => Promise<Asset[] | undefined>;
    protected _cache?: {
        query: AssetQuery;
        assets: Asset[];
    };
    protected _selected?: Asset;
    protected _loading: boolean;
    protected _queryOperatorsMap: {
        [type: string]: AssetQueryOperator[];
    };
    constructor();
    refresh(): void;
    protected attributePredicateEditorTemplate(assetTypeInfo: AssetTypeInfo, asset: Asset | undefined, attributePredicate: AttributePredicate): import("lit").TemplateResult<1>;
    protected attributePredicateValueEditorTemplate(assetDescriptor: AssetDescriptor, asset: Asset | undefined, attributePredicate: AttributePredicate): import("lit").TemplateResult<1> | "";
    protected attributeDurationTemplate(durationMap: Map<number, string | undefined>, index: number, onAdd: (index: number) => void, onChange: (index: number, duration: string | undefined) => void): import("lit").TemplateResult<1>;
    static get styles(): import("lit").CSSResult;
    shouldUpdate(changedProps: PropertyValues): boolean;
    protected get query(): AssetQuery;
    /**
     * Returns a Map<number, string> with all configured durations of a {@link RuleCondition}.
     * The number represents an index of the attribute array, and the string an ISO8601 duration expression.
     */
    protected get duration(): Map<number, string | undefined>;
    /**
     * Updates the duration property in {@link condition}, based on the {@link durationMap} parameter.
     * The number represents an index of the attribute array, and the string an ISO8601 duration expression.
     */
    protected set duration(durationMap: Map<number, string | undefined>);
    protected render(): import("lit").TemplateResult<1>;
    protected set _assetId(assetId: string | undefined);
    protected getAttributeName(attributePredicate: AttributePredicate): string | undefined;
    protected setAttributeName(attributePredicate: AttributePredicate, attributeName: string | undefined): void;
    protected getOperatorMapValue(operatorMap: {
        [type: string]: AssetQueryOperator[];
    }, assetType?: string, attributeName?: string, _attributeDescriptor?: AttributeDescriptor, valueDescriptor?: ValueDescriptor): AssetQueryOperator[] | undefined;
    protected getOperators(_assetDescriptor: AssetDescriptor, attributeDescriptor: AttributeDescriptor | undefined, valueDescriptor: ValueDescriptor | undefined, _attribute: Attribute<any> | undefined, attributeName: string): [string, string][];
    protected getOperator(attributePredicate: AttributePredicate): string | undefined;
    protected updateDurationMap(index: number): void;
    protected setOperator(assetDescriptor: AssetDescriptor, attribute: Attribute<any> | undefined, attributeName: string, attributePredicate: AttributePredicate, operator: string | undefined): void;
    protected get attributePredicate(): AttributePredicate | undefined;
    protected setValuePredicateProperty(valuePredicate: ValuePredicateUnion | undefined, propertyName: string, value: any): void;
    protected removeAttributePredicate(group: LogicGroup<AttributePredicate>, attributePredicate: AttributePredicate): void;
    protected addAttributePredicate(group: LogicGroup<AttributePredicate>): void;
    protected toggleAttributeGroup(group: LogicGroup<AttributePredicate>): void;
    /**
     * Fetches assets using the {@link assetProvider} from the parent component.
     * This is often linked to the OpenRemote HTTP API to request assets from using an {@link AssetQuery} object.
     * @param type - The asset type name to filter by
     * @param search - The asset name to filter by (acts as a search)
     * @param idValue - Selected asset ID to query along
     * @protected
     */
    protected loadAssets(type: string, search?: string, idValue?: string): Promise<Asset[] | undefined>;
}
export {};
//# sourceMappingURL=or-rule-asset-query.d.ts.map