import { ComponentProps } from "react";
import { AccessibilityRole, GestureResponderEvent, Text, TextStyle, View } from "react-native";
import { IOColors } from "../../core";
import { IOFontFamily, IOFontWeight } from "../../utils/fonts";
/**
 * We exclude all of the following props when we define a new
 * typographic style in which all of these visual attributes
 * are already defined.
 */
export type IOTextStyle = Omit<TextStyle, "fontFamily" | "fontSize" | "fontWeight" | "lineHeight" | "fontStyle">;
export type TypographicStyleProps = Omit<IOTextProps, "style" | "font" | "size" | "weight" | "color" | "lineHeight" | "fontStyle"> & {
    textStyle?: IOTextStyle;
    style?: IOTextStyle;
} & {
    color?: IOTextBaseProps["color"];
};
/**
 * The specific properties needed to calculate the font style using {@link makeFontStyleObject} (these information
 * cannot be included in the default StyleProp<TextStyle>
 */
type IOTextBaseProps = {
    size?: number;
    weight?: IOFontWeight;
    color?: IOColors;
    font?: IOFontFamily;
    lineHeight?: TextStyle["lineHeight"];
    fontStyle?: TextStyle["fontStyle"];
    textStyle?: IOTextStyle;
    style?: IOTextStyle;
};
type IOTextExcludedProps = Omit<ComponentProps<typeof Text>, "style">;
export type IOTextProps = IOTextBaseProps & IOTextExcludedProps;
/**
 * Extend `TypographicStyleProps` with extra props for styles that
 * can be used as links
 */
export type TypographicStyleAsLinkProps = {
    color?: IOColors;
    asLink: true;
    avoidPressable?: true;
    onPress: (event: GestureResponderEvent) => void;
    accessibilityRole?: Extract<AccessibilityRole, "button" | "link">;
} | {
    color?: IOColors;
    asLink?: false;
    avoidPressable?: false;
};
/**
 * `IOText` is the core Typography component used to render a text.
 * It accepts all the default text style `StyleProp<TextStyle>` (excluding the ones already applied) in addition with {@link IOTextBaseProps}
 * used to calculate at runtime the platform-dependent styles.
 * @param props
 * @constructor
 */
export declare const IOText: import("react").ForwardRefExoticComponent<IOTextBaseProps & IOTextExcludedProps & import("react").RefAttributes<View>>;
export declare const AnimatedIOText: import("react-native-reanimated/lib/typescript/createAnimatedComponent").AnimatedComponentType<Readonly<IOTextBaseProps & IOTextExcludedProps & import("react").RefAttributes<View>>, import("react").ForwardRefExoticComponent<IOTextBaseProps & IOTextExcludedProps & import("react").RefAttributes<View>>>;
export {};
//# sourceMappingURL=IOText.d.ts.map