import { type Animated, type StyleProp, type ViewProps, type ViewStyle } from 'react-native';
import type { ThemeVars } from '@coinbase/cds-common/core/theme';
import type { ElevationLevels } from '@coinbase/cds-common/types/ElevationLevels';
import { type BoxBaseProps } from '../layout/Box';
/**
* Custom color overrides for different interaction states.
* Base colors (background, borderColor) are used directly, while interaction
* state colors (pressed, disabled) are used as alternative base colors
* for blending calculations with blend strength and color scheme considerations.
*
* @example
* ```tsx
*
* ```
*/
export type InteractableBlendStyles = {
background?: string;
pressedBackground?: string;
disabledBackground?: string;
borderColor?: string;
pressedBorderColor?: string;
disabledBorderColor?: string;
};
export type InteractableBaseProps = Omit & {
/** Apply animated styles to the outer container. */
style?: Animated.WithAnimatedValue>[];
/** Background color of the overlay (element being interacted with). */
background?: ThemeVars.Color;
/** Set element to block and expand to 100% width. */
block?: boolean;
/** Is the element currently disabled. */
disabled?: boolean;
/** Is the element elevated. */
elevation?: ElevationLevels;
/**
* Is the element currenty loading.
* When set to true, will disable element from press and keyboard events
*/
loading?: boolean;
/** Is the element being pressed. Primarily a mobile feature, but can be used on the web. */
pressed?: boolean;
/**
* Mark the background and border as transparent until the element is interacted with (hovered, pressed, etc).
* Must be used in conjunction with the "pressed" prop
* */
transparentWhileInactive?: boolean;
/**
* Mark the background and border as transparent even while element is interacted with (elevation underlay issue).
* Must be used in conjunction with the "pressed" prop
* */
transparentWhilePressed?: boolean;
blendStyles?: InteractableBlendStyles;
/** Apply animated styles to the inner container. */
contentStyle?: StyleProp;
/** Apply styles to the outer container. */
wrapperStyles?: {
base?: StyleProp;
pressed?: StyleProp;
disabled?: StyleProp;
};
};
export type InteractableProps = InteractableBaseProps & Omit;
export declare const Interactable: import('react').NamedExoticComponent;
//# sourceMappingURL=Interactable.d.ts.map