interface AnatomyPart { selector: string; attrs: Record<"data-scope" | "data-part", string>; } type AnatomyInstance = Omit, "parts">; type AnatomyPartName = T extends AnatomyInstance ? U : never; interface Anatomy { parts: (...parts: U[]) => AnatomyInstance; extendWith: (...parts: V[]) => AnatomyInstance; build: () => Record; rename: (newName: string) => Anatomy; keys: () => T[]; omit: (...values: U[]) => AnatomyInstance>; } declare const createAnatomy: (name: string, parts?: T[]) => Anatomy; export { type Anatomy, type AnatomyInstance, type AnatomyPart, type AnatomyPartName, createAnatomy };