import { ImageStyle, TextStyle, ViewStyle } from 'react-native'; import { MaybeThunk } from '../utils'; import { Palette, PaletteInput } from './Palette'; import { ThemeTypography, ThemeTypographyInput } from './Typography'; export interface ComponentStyles { [key: string]: ViewStyle | TextStyle | ImageStyle | { [prop: string]: string; }; } export interface ThemeVariant { [key: string]: any; /** Component styles */ components: { [key: string]: MaybeThunk; }; elevation: (value: number) => Partial; shape: { [key: string]: any; borderRadius: number; }; spacing: { [key: string]: any; unit: number; }; typography: ThemeTypography; palette: Palette; } export interface ThemeVariantInput extends Omit, 'palette' | 'typography'> { palette?: PaletteInput; typography?: ThemeTypographyInput; } export interface BaseTheme { name: string; key: string; light: ThemeVariant; dark: ThemeVariant; } export interface ThemeInput { name?: string; key?: string; light?: ThemeVariantInput; dark?: ThemeVariantInput; } export declare function createThemeVariant(palette: Palette, typography: ThemeTypography): ThemeVariant; export declare class Theme implements BaseTheme { name: string; key: string; light: ThemeVariant; dark: ThemeVariant; mode: 'light' | 'dark'; constructor(input?: ThemeInput, ...overrides: ThemeInput[]); get components(): { [key: string]: MaybeThunk; }; get elevation(): (value: number) => Partial; get palette(): Palette; get shape(): { [key: string]: any; borderRadius: number; }; get spacing(): { [key: string]: any; unit: number; }; get typography(): ThemeTypography; }