import { type ArrayElement } from '@augment-vir/common'; import { type CustomElementTagName } from '../custom-tag-name.js'; /** * Base requirement for all string names with the element tag name prepended. * * @category Internal */ export type BaseStringName = `${ElementTagName}-${string}`; /** * Asserts that all the given string names for the given element are valid. * * @category Internal */ export declare function assertValidStringNames(elementTagName: CustomElementTagName, stringNames: ReadonlyArray): void; /** * Type safe mapping of string names to themself with the element tag name inserted. * * @category Internal */ export type StringNameMap> = Readonly<{ [StringName in ArrayElement]: `${ElementTagName}-${NameType}-${StringName}`; }>; /** * Converts an array of string names into a `StringNameMap`. * * @category Internal */ export declare function createStringNameMap>(elementTagName: ElementTagName, nameType: NameType, stringNames: StringNames | undefined): StringNameMap; /** * Map of slot names to their runtime values. Slot names that already start with the element's tag * name are kept as-is; legacy slot names without the tag-name prefix are auto-rewritten at runtime * to `${ElementTagName}-slot-${Name}` and this type reflects that. * * @category Internal */ export type SlotNamesMap> = Readonly<{ [Name in ArrayElement]: Name extends `${ElementTagName}-${string}` ? Name : `${ElementTagName}-slot-${Name}`; }>; /** * Converts an array of slot names into a {@link SlotNamesMap}. * * Slot names that start with the element's tag name pass through unchanged. Slot names that do not * are transformed into the legacy `${tagName}-slot-${name}` format so existing elements that * pre-date the tag prefix convention keep working. * * @category Internal */ export declare function createSlotNamesMap>(elementTagName: ElementTagName, slotNames: SlotNames | undefined): SlotNamesMap;