import { ComponentProps } from "react";
import { AccessibilityRole, GestureResponderEvent, Pressable, TextProps, TextStyle, View } from "react-native";
import { WithTestID } from "../../../utils/types";
import { IOIcons } from "../../icons";
export type IOButtonColor = "primary" | "danger" | "contrast";
export type IOButtonVariant = "solid" | "outline" | "link";
export type IOButtonBlockSpecificProps = Omit<ComponentProps<typeof IOButton>, "numberOfLines" | "textAlign">;
export type IOButtonLinkSpecificProps = Omit<ComponentProps<typeof IOButton>, "fullWidth" | "loading">;
type IOButtonSpecificProps = {
    variant?: "link";
    numberOfLines?: TextProps["numberOfLines"];
    textAlign?: TextStyle["textAlign"];
    fullWidth?: never;
    loading?: never;
} | {
    variant?: "solid" | "outline";
    fullWidth?: boolean;
    loading?: boolean;
    numberOfLines?: never;
    textAlign?: never;
};
export type IOButtonProps = WithTestID<IOButtonSpecificProps & {
    /**
     * @default primary
     */
    color?: IOButtonColor;
    label: string;
    icon?: IOIcons;
    /**
     * @default false
     */
    fullWidth?: boolean;
    /**
     * @default false
     */
    loading?: boolean;
    /**
     * @default start
     */
    iconPosition?: "start" | "end";
    /**
     * @default 1
     */
    numberOfLines?: number;
    /**
     * @default auto
     */
    textAlign?: TextStyle["textAlign"];
    onPress: (event: GestureResponderEvent) => void;
    /**
     * @default button
     */
    accessibilityRole?: Extract<AccessibilityRole, "button" | "link">;
} & Pick<ComponentProps<typeof Pressable>, "disabled" | "accessibilityLabel" | "accessibilityHint">>;
export declare const IOButton: import("react").ForwardRefExoticComponent<IOButtonProps & import("react").RefAttributes<View>>;
export {};
//# sourceMappingURL=IOButton.d.ts.map