import { Nil } from '@arcgis/components-utils';
import { Properties as CssProperties } from 'csstype';
import { ClassInfo } from 'lit-html/directives/class-map.js';
import { DirectiveResult } from 'lit/directive.js';
import { ClassMapDirective } from 'lit/directives/class-map.js';
import { StyleMapDirective } from 'lit/directives/style-map.js';
import { DirectiveClass, ElementPart, Directive } from 'lit-html/directive.js';
import { noChange } from 'lit';
/**
* You likely won't have to import this directly. It will be added during
* _JSX to lit-html_ conversion.
*
* @remarks
* In JSX we allow both of the following:
* ```tsx
* const myString = "foo";
* const myObject = { foo: true, bar: false };
* render(
);
* render();
* ```
*
* One of the above needs to call `classMap` directive, the other must not.
*
* To keep the build fast, and to guard against types being possibly incorrect,
* we are not relying on the TypeScript type-checker to check if the provided
* variable is a string or an object.
* Instead, if the prop value is a object definition, variable reference,
* ternary expression or etc, the `safeClassMap` will be called, which will
* determine at runtime if directive should be called
*
* @private
*/
export declare const safeClassMap: (parameters: ClassInfo | Nil | string) => DirectiveResult | Nil | string;
/**
* You likely won't have to import this directly. It will be added during
* _JSX to lit-html_ conversion.
*
* @remarks
* In JSX we allow both of the following:
* ```tsx
* const myString = "font-size:'2px'";
* const myObject = { fontSize: "2px" };
* render();
* render();
* ```
*
* One of the above needs to call `styleMap` directive, the other must not.
*
* To keep the build fast, and to guard against types being possibly incorrect,
* we are not relying on the TypeScript type-checker to check if the provided
* variable is a string or an object.
* Instead, if the prop value is a object definition, variable reference,
* ternary expression or etc, the `safeStyleMap` will be called, which will
* determine at runtime if directive should be called
*
* @private
*/
export declare const safeStyleMap: (parameters: CssProperties | Nil | string) => DirectiveResult | Nil | string;
declare class DeferLoad extends Directive {
update(part: ElementPart): void;
render(): typeof noChange;
}
/**
* @private
* Do not use this directive directly. Use the `deferLoad` JSX prop instead.
* [Documentation](https://qawebgis.esri.com/components/lumina/jsx#deferring-web-component-load)
*/
export declare const deferLoad: DirectiveResult;
/**
* @private
* Do not use this directly. Use the `deferLoad` JSX prop instead.
* [Documentation](https://qawebgis.esri.com/components/lumina/jsx#deferring-web-component-load)
*/
export declare const deferredLoaders: Map Promise>;
/**
* Creates a user-facing directive function from a Directive class. This
* function has the same parameters as the directive's render() method.
*
* @remarks
* This is equivalent to Lit's native "directive()", but has return type
* "never" to allow it be set as a value for any JSX attribute.
*/
export declare const directive: (c: C) => (...values: Parameters["render"]>) => never;
/**
* Checks binding values against live DOM values, instead of previously bound
* values, when determining whether to update the value.
*
* @see https://lit.dev/docs/templates/directives/#live
*
* @remarks
* This is equivalent to Lit's native "directive()", but has return type
* "never" to allow it be set as a value for any JSX attribute.
*/
export declare const live: (value: unknown) => never;
export {};