import type { JsxNodeIr } from "./ir.js"; import type { ClientSpecializationFlags } from "./types.js"; /** * Runs one synchronous client emit with the given specializations switched * off. The emitter is synchronous, so a module-level flag set is restored * before this returns and never leaks into another transform. */ export declare function withClientSpecializations(overrides: Partial | undefined, run: () => T): T; /** The slice of the client emitter state that select binding emission needs. */ export interface SelectBindingEmitState { allocateName: (base: string) => string; helperNames: { bindSelectValue: string; bindSpreadProps: string; }; } /** * Reports whether a select can use the dedicated control binding. * * A real spread prop or a dynamic `multiple` keeps the generic spread binding, * because both can add, remove or reorder arbitrary props and the selection * has to be re-applied whenever `multiple` changes. */ export declare function usesDedicatedSelectBinding(node: Extract): boolean; export declare function emitSelectBindingLine(currentPath: string, selectControlEntries: readonly string[], selectBindingSources: readonly string[], state: SelectBindingEmitState): string | undefined; export declare function isSelectControlAttributeName(name: string): boolean; /** * Names the cell a text child is proven to read, so the emitter can hand the * cell itself to bindText instead of a thunk. bindText subscribes to a native * cell source directly and falls back to a tracked effect otherwise, so the * observable value, normalization and disposal contract are unchanged. */ export declare function provenNativeCellTextBinding(child: Extract): string | undefined; /** * Reports whether both branches of a conditional are proven never to produce a * list render value, so the narrow branch insertion helper can replace the * generic dynamic insertion and keep the keyed list runtime out of the graph. */ export declare function usesBranchInsertion(node: Extract): boolean; /** * Names whose generic applyDomProp handling provably reduces to writing one * element property and its attribute. * * Every entry is a plain string prop: never an event handler, never a URL * carrier, never a dangerous HTML sink, never a style object, never a * booleanish attribute, and never form state. The runtime helper decides * between the property and the attribute exactly as applyDomProp does. */ export declare const SPECIALIZED_ELEMENT_PROPERTIES: ReadonlyMap; /** Resolves the specialized property binding for one dynamic intrinsic attribute. */ export declare function specializedElementProperty(node: Extract, name: string): { attribute: string; property: string; } | undefined; //# sourceMappingURL=emit-client-specialization.d.ts.map