import type { Sink } from '../types/sink';
import type { AttributeObject } from '../types/internal';
export type ElementAttribute = 'className' | 'id' | 'nodeName' | 'nodeValue' | 'textContent' | 'innerHTML' | 'outerHTML' | 'namespaceURI' | 'localName' | 'tagName' | 'attributes' | 'childNodes' | 'firstChild' | 'lastChild' | 'nextSibling' | 'previousSibling' | 'parentNode' | 'parentElement' | 'baseURI' | 'isConnected' | 'ownerDocument' | 'style' | 'dataset' | 'classList' | 'scrollTop' | 'scrollLeft' | 'scrollWidth' | 'scrollHeight' | 'clientTop' | 'clientLeft' | 'clientWidth' | 'clientHeight' | 'offsetParent' | 'offsetTop' | 'offsetLeft' | 'offsetWidth' | 'offsetHeight' | 'onclick' | 'ondblclick' | 'onmousedown' | 'onmouseup' | 'onmouseover' | 'onmousemove' | 'onmouseout' | 'onmouseenter' | 'onmouseleave' | 'onkeydown' | 'onkeypress' | 'onkeyup' | 'onabort' | 'onbeforeinput' | 'oninput' | 'onchange' | 'onreset' | 'onsubmit' | 'onfocus' | 'onblur' | 'onfocusin' | 'onfocusout' | 'onload' | 'onloadeddata' | 'onloadedmetadata' | 'onloadstart' | 'onprogress' | 'onerror' | 'onresize' | 'onscroll' | 'onselect' | 'onwheel';
export type WritableElementAttribute = 'className' | 'id' | 'innerHTML' | 'outerHTML' | 'scrollLeft' | 'scrollTop' | 'slot' | 'nodeValue' | 'textContent';
export type WritableHTMLElementAttribute = 'accessKey' | 'contentEditable' | 'dir' | 'draggable' | 'hidden' | 'innerText' | 'lang' | 'spellcheck' | 'tabIndex' | 'title' | 'translate';
export declare const FixedAttributeSink: Sink<Element>;
export declare const FixedAttributePreSink: (attributeName: string) => Sink<Element>;
export declare const ToggleAttributePreSink: (attributeName: string) => Sink<Element>;
/**
 * Set a boolean attribute via direct DOM property
 **/
export declare const BooleanAttributeSink: Sink<Element>;
/**
 * Set an attribute via direct DOM property, rather than setAttribute
 **/
export declare const DOMAttributeSink: Sink<Element>;
/**
 * Set the value of a form's element, given its name
 **/
export declare const FormElementSink: Sink<HTMLFormElement>;
/**
 * An implicit sink for any DOM Attributes (the ones that can be set via node[attr] = value)
 * @example <div contenteditable="${stream}">...</div>
 **/
export declare const DOMAttributePreSink: (attributeName: WritableElementAttribute) => Sink<Element>;
export declare const AttributeObjectSink: <T extends HTMLElement | SVGElement | MathMLElement>(node: T) => (attributeobject: AttributeObject) => void;
//# sourceMappingURL=attribute-sink.d.ts.map