import type { Action } from 'svelte/action'; import { type Readable, type Stores, type StoresValues } from 'svelte/store'; export declare function getElementByMeltId(id: string): HTMLElement | null; export declare const hiddenAction: >(obj: T) => T; type ElementCallback = S extends Stores ? (values: StoresValues) => Record | ((...args: any[]) => Record) : () => Record | ((...args: any[]) => Record); type MeltElementStore, R extends ElementCallback, Name extends string> = Readable extends infer F extends (...args: any) => any ? ((...args: Parameters) => ReturnType & { [K in `data-melt-${Name}`]: ''; } & { action: A; }) & { action: A; } : ReturnType & { [K in `data-melt-${Name}`]: ''; } & { action: A; }>; type MakeElementArgs, R extends ElementCallback> = { stores?: S; action?: A; returned?: R; }; export type MeltElement, R extends ElementCallback, Name extends string> = MeltElementStore & A; export type AnyMeltElement = MeltElement, string>; export declare const emptyMeltElement: MeltElement>, (() => Record | ((...args: any[]) => Record)) | ((values: any) => Record | ((...args: any[]) => Record)) | ((values: any[]) => Record | ((...args: any[]) => Record)) | ((values: [any, ...any[]]) => Record | ((...args: any[]) => Record)), "empty">; export declare function makeElement, R extends ElementCallback, Name extends string>(name: Name, args?: MakeElementArgs): MeltElement; type ElementArrayStore, R extends object[], Name extends string> = Readable<{ [K in keyof R]: R[K] & { [K in `data-melt-${Name}`]: ''; } & { action: A; }; }>; type BuilderArrayArgs, R extends object[]> = { stores: S; returned: (values: StoresValues) => R; action?: A; }; export type ExplicitMakeElementArrayReturn, R extends object[], Name extends string> = ElementArrayStore & A; export declare function makeElementArray, R extends object[], Name extends string>(name: Name, args: BuilderArrayArgs): ExplicitMakeElementArrayReturn; export declare function createElHelpers(prefix: string): { name: (part?: Part) => string; attribute: (part?: Part) => string; selector: (part?: Part) => string; getEl: (part?: Part) => Element | null; }; export {};