import { type Attachment } from "svelte/attachments";
export declare function createId(): string;
type DataIds<Name extends string, Parts extends string[]> = {
    [P in Parts[number]]: `data-melt-${Name}-${P}`;
};
/**
 * @deprecated use `createBuilderMetaData` instead
 */
export declare function createDataIds<const Name extends string, const Parts extends string[]>(name: Name, parts: Parts): DataIds<Name, Parts>;
type Ids<T extends DataIds<string, string[]>> = {
    [P in keyof T]: string;
};
export declare function createIds<const T extends DataIds<string, string[]>>(identifiers: T): Ids<T>;
export type BuilderMetadata<Name extends string, Parts extends string[]> = {
    dataAttrs: {
        [P in Parts[number]]: `data-melt-${Name}-${P}`;
    };
    dataSelectors: {
        [P in Parts[number]]: `[data-melt-${Name}-${P}]`;
    };
    createIds: () => {
        [P in Parts[number]]: string;
    };
    createReferences: () => {
        get: (key: Parts[number]) => HTMLElement | undefined;
        attach: (key: Parts[number]) => Attachment<HTMLElement>;
        key: any;
    };
};
export declare function createBuilderMetadata<const Name extends string, const Parts extends string[]>(name: Name, parts: Parts): BuilderMetadata<Name, Parts>;
export declare function createReferences<const Parts extends string[]>(): {
    get(key: Parts[number]): HTMLElement | undefined;
    attach(key: Parts[number]): Attachment<HTMLElement>;
    key: symbol;
};
export {};
