/** * Equivalent to Lit's "nothing", but has type "never" to allow it to be set as a * value for any JSX attribute. * * By default in Lit, nullish attribute value renders to an attribute without a * value (which is interpreted by HTML as "true"). To tell Lit that you don't * want the attribute to be present, use the `nothing` value. * * @example * ```tsx * {this.label} * ``` * * @remarks * This is not a concern for properties as they are passed as is without * serialization. For this reason, during _JSX to lit-html_ conversion, most JSX * props are converted properties, except for the few cases when an attribute * has no equivalent property. */ export declare const nothing: never; /** * A sentinel value that signals that a value was handled by a directive and * should not be written to the DOM. * * @remarks * This is equivalent to Lit's native "noChange", but has type "never" to allow * it be set as a value for any JSX attribute. */ export declare const noChange: never; /** * Like native element.setAttribute(), but instead of stringifying nullish * values, will call element.removeAttribute() */ export declare function setAttribute(element: Element, attributeName: string, value: unknown): void; /** * If you have a property that can be both of string or boolean type, there is * no automatic boolean conversion in place - that means the attribute is * treated as a string. * * This converter improves that handling by converting `true` property value to * an empty attribute, and `false` to removing the attribute. * * When setting the boolean attribute, the value is still not parsed (and will * be either `null` or `""`). This matches the behavior in Stencil. * * ```tsx * @property({ reflects:true, converter: stringOrBoolean }) icon: string | boolean; * // ... * this.icon = false; // attribute is removed * this.icon = true; // attribute is "" * this.icon = "name"; // attribute is "name" * ``` */ export declare const stringOrBoolean: { toAttribute: (value: unknown) => string | null; };