import type { MaskDefinitions, PaletteDefinitions, Template, TemplateDefinitions, ThemeDefinitions } from '@tamagui/create-theme'; import type { Narrow } from '@tamagui/web'; export type ThemeBuilderInternalState = { palettes?: PaletteDefinitions; templates?: TemplateDefinitions; themes?: ThemeDefinitions; masks?: MaskDefinitions; }; type ObjectStringKeys = A extends object ? Exclude : never; type GetGeneratedThemeFromTemplate = { [key in keyof Template]: string; }; type GetParentTheme = P extends string ? P extends keyof Themes ? Themes[P] : GetParentName

extends keyof Themes ? Themes[GetParentName

] : GetParentName> extends keyof Themes ? Themes[GetParentName>] : GetParentName>> extends keyof Themes ? Themes[GetParentName>>] : never : never; type GetGeneratedTheme = TD extends { theme: infer T; } ? T : TD extends { parent: infer P; } ? GetGeneratedTheme, S> : TD extends { template: infer T; } ? T extends keyof S['templates'] ? GetGeneratedThemeFromTemplate : TD : TD; type ThemeBuilderBuildResult = Record> = Record extends FinalTheme ? FinalTheme extends Record ? { [Key in keyof S['themes']]: GetGeneratedTheme; } : { [Key in keyof S['themes']]: FinalTheme; } : { [Key in keyof S['themes']]: FinalTheme; }; type GetParentName = N extends `${infer A}_${infer B}_${infer C}_${infer D}_${string}` ? `${A}_${B}_${C}_${D}` : N extends `${infer A}_${infer B}_${infer C}_${string}` ? `${A}_${B}_${C}` : N extends `${infer A}_${infer B}_${string}` ? `${A}_${B}` : N extends `${infer A}_${string}` ? `${A}` : never; type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; type Prettify = { [K in keyof T]: T[K]; } & {}; type FlattenUnion> = Prettify<{ [K in keyof UnionToIntersection]: UnionToIntersection[K]; }> extends infer R extends Record ? R : never; export declare class ThemeBuilder = Record> { state: State; private _getThemeFn?; constructor(state: State); addPalettes(palettes: P): ThemeBuilder; addTemplates(templates: T): ThemeBuilder; addMasks(masks: M): ThemeBuilder; _addedThemes: { type: 'themes' | 'childThemes'; args: any; }[]; addThemes>>(themes: T): ThemeBuilder & { themes: T; }, FinalTheme>; addComponentThemes>>>(childThemeDefinition: CTD, options?: { avoidNestingWithin?: string[]; }): this; addChildThemes>>, const AvoidNestingWithin extends string[] = []>(childThemeDefinition: CTD, options?: { avoidNestingWithin?: AvoidNestingWithin; }): ThemeBuilder, number | symbol>}_${Exclude}`]: CTD & { parent: GetParentName; }; }; }, FinalTheme>; getTheme>(fn: (props: { name: string; theme: GetGeneratedTheme; scheme?: 'light' | 'dark'; parentName: string; parentNames: string[]; level: number; palette?: string[]; template?: Template; }) => NewTheme): ThemeBuilder>; build(): ThemeBuilderBuildResult; } export declare function createThemeBuilder(): ThemeBuilder<{}, Record>; export {}; //# sourceMappingURL=ThemeBuilder.d.ts.map