import { ColorValue, FlexStyle, TextStyle, TransformsStyle, ViewStyle } from "react-native";
import { borderColorProperties, borderProperties, borderRadiusProperties, layoutProperties, layoutPropertiesShorthand, positionProperties, shadowProperties, spacingProperties, spacingPropertiesShorthand, textShadowProperties, transformProperties, typographyProperties } from "./style-properties";
import { FinalPearlTheme, ColorModeColor, ResponsiveValue, RNStyleProperty, StyleFunctionContainer, PaletteColors } from "./types";
import { ColorMode } from "./theme-context";
interface CreateStyleFunctionProps {
    property: string;
    transform?: any;
    styleProperty?: RNStyleProperty | "skip" | string;
    themeKey?: keyof FinalPearlTheme | undefined;
}
/**
 * Creates a style function container that can be used to create a style function.
 * @param property - The name of the property to create a style function for.
 * @param transform - An optional transformation function to apply to the value of the property.
 * @param styleProperty - An optional name of the style property to use instead of the property name.
 * @param themeKey - An optional name of the theme key to use for the property value.
 * @returns A style function container that can be used to create a style function.
 */
export declare const createStyleFunction: ({ property, transform, styleProperty, themeKey, }: CreateStyleFunctionProps) => StyleFunctionContainer;
/**
 * Transforms a color value based on the current color mode.
 * @param value - The color value to transform.
 * @returns The transformed color value.
 */
export declare const transformColorValue: (value: ColorModeColor | ColorValue, colorMode: ColorMode) => number | ColorValue;
export declare const backgroundColorStyleFunction: StyleFunctionContainer[];
export declare const colorStyleFunction: StyleFunctionContainer;
export declare const opacityStyleFunction: StyleFunctionContainer;
export declare const visibleStyleFunction: StyleFunctionContainer;
export declare const typographyStyleFunction: StyleFunctionContainer[];
export declare const layoutStyleFunction: StyleFunctionContainer[];
export declare const transformStyleFunction: StyleFunctionContainer[];
export declare const spacingStyleFunction: StyleFunctionContainer[];
export declare const positionStyleFunction: StyleFunctionContainer[];
export declare const borderStyleFunction: StyleFunctionContainer[];
export declare const shadowStyleFunction: StyleFunctionContainer[];
export declare const textShadowStyleFunction: StyleFunctionContainer[];
export declare const allStyleFunctions: StyleFunctionContainer[];
export declare const boxStyleFunctions: StyleFunctionContainer[];
export declare const textStyleFunctions: StyleFunctionContainer[];
export interface ColorProps {
    color?: ResponsiveValue<PaletteColors>;
}
export interface OpacityProps {
    opacity?: ResponsiveValue<number>;
}
export interface VisibleProps {
    visible?: ResponsiveValue<boolean>;
}
export interface BackgroundColorProps {
    backgroundColor?: ResponsiveValue<PaletteColors>;
    bgColor?: ResponsiveValue<PaletteColors>;
}
type SpacingPropsBase = {
    [Key in keyof typeof spacingProperties]?: ResponsiveValue<keyof FinalPearlTheme["spacing"]>;
};
type SpacingShorthandProps = {
    [Key in keyof typeof spacingPropertiesShorthand]?: ResponsiveValue<keyof FinalPearlTheme["spacing"]>;
};
export type SpacingProps = SpacingPropsBase & SpacingShorthandProps;
export type TypographyProps = Omit<{
    [Key in keyof typeof typographyProperties]?: TextStyle[Key];
}, "fontWeight" | "letterSpacing" | "fontSize" | "lineHeight" | "fontFamily"> & {
    letterSpacing?: ResponsiveValue<keyof FinalPearlTheme["letterSpacings"]>;
    fontSize?: ResponsiveValue<keyof FinalPearlTheme["fontSizes"]>;
    lineHeight?: ResponsiveValue<keyof FinalPearlTheme["lineHeights"]>;
    fontWeight?: ResponsiveValue<keyof FinalPearlTheme["fontWeights"] | string | number>;
    fontFamily?: ResponsiveValue<keyof FinalPearlTheme["fonts"]>;
};
type LayoutPropsBase = {
    [Key in keyof typeof layoutProperties]?: ResponsiveValue<FlexStyle[Key]>;
};
type LayoutShorthandProps = {
    [Key in keyof typeof layoutPropertiesShorthand]?: ResponsiveValue<FlexStyle[(typeof layoutPropertiesShorthand)[Key]]>;
};
export type LayoutProps = LayoutPropsBase & LayoutShorthandProps;
export type TransformProps = {
    [Key in keyof typeof transformProperties]?: ResponsiveValue<TransformsStyle[Key]>;
};
export type PositionProps = {
    [Key in keyof typeof positionProperties]?: ResponsiveValue<FlexStyle[Key]>;
} & {
    zIndex?: ResponsiveValue<keyof FinalPearlTheme["zIndices"]>;
};
export type BorderProps = {
    [Key in keyof typeof borderProperties]?: ResponsiveValue<ViewStyle[Key]>;
} & {
    [Key in keyof typeof borderColorProperties]?: ResponsiveValue<PaletteColors>;
} & {
    [Key in keyof typeof borderRadiusProperties]?: ResponsiveValue<keyof FinalPearlTheme["borderRadii"]>;
};
export type ShadowProps = {
    [Key in keyof typeof shadowProperties]?: ResponsiveValue<ViewStyle[Key]>;
} & {
    boxShadow?: ResponsiveValue<keyof FinalPearlTheme["elevation"]>;
    shadowColor?: ResponsiveValue<PaletteColors>;
};
export type TextShadowProps = {
    [Key in keyof typeof textShadowProperties]?: ResponsiveValue<TextStyle[Key]>;
} & {
    textShadowColor?: ResponsiveValue<PaletteColors>;
};
export type AllProps = BackgroundColorProps & ColorProps & OpacityProps & SpacingProps & TypographyProps & LayoutProps & TransformProps & PositionProps & BorderProps & ShadowProps & TextShadowProps;
export type BoxStyleProps = BackgroundColorProps & OpacityProps & VisibleProps & LayoutProps & TransformProps & SpacingProps & BorderProps & ShadowProps & PositionProps;
export type TextStyleProps = ColorProps & BackgroundColorProps & OpacityProps & VisibleProps & LayoutProps & TransformProps & TypographyProps & SpacingProps & TextShadowProps;
export {};
//# sourceMappingURL=style-functions.d.ts.map