import { Binding, Parser, type Subscription } from "@akala/core"; import { type Composer } from "../template.js"; import { Control } from '../controlsv2/shared.js'; import { type Expressions } from "@akala/core/expressions"; export declare function databind(name: string): (target: new (element: Element, value: unknown) => T) => void; export interface WebComponent { connectedCallback(): void; disconnectedCallback(): void; adoptedCallback(): void; attributeChangedCallback(name: string, oldValue: string, newValue: string): void; } export type HtmlControlElement & Control, TElement extends HTMLElement = HTMLElement> = TElement & { control: T; }; declare global { interface Element { akala?: Partial; } } export declare function webComponent(tagName: string, options?: ElementDefinitionOptions): >(target: (new (element: HTMLElement) => T) & { observedAttributes?: string[]; }) => void; export declare function wcObserve(name: string): (target: (new (element: HTMLElement) => T) & { observedAttributes?: string[]; }) => void; export declare abstract class AttributeComposer implements Composer { protected readonly attribute: string; static readonly default: unique symbol; protected readonly parser: Parser; protected allowSubProperties: boolean; constructor(attribute: string, parser?: Parser); optionGetter(options: object): T; abstract getContext(item: Element, options?: T): Binding; readonly selector: string; readonly optionName: string; static toCamelCase(s: string): string; static fromCamlCase(s: string): string; abstract applyInternal(item: Element, options: T, subItem: TKey, value: unknown, oldValue: unknown): Subscription | void; apply(item: Element, options: T, _futureParent?: Element | DocumentFragment): { [Symbol.dispose](): void; }; getBindings(item: Element, options: T, context: Binding, member: TKey, source: Expressions): readonly [TKey, Binding unknown> | ((...args: unknown[]) => unknown)>]; }