import type { PlatformIconAndroidDrawableResource, PlatformIconIOSSfSymbol, PlatformIconIOSTemplate, PlatformIconIOSXcasset, PlatformIconShared } from '../../../types';
/**
 * How the tab bar renders an `imageSource` icon on iOS. The names follow
 * `UIImage.RenderingMode`.
 *
 * - `default` - the tab bar's default for images, also used when
 *   `renderingMode` is unset: the image keeps its own colors, as with
 *   `original`. This is not UIKit's automatic mode, in which the tab bar would
 *   draw the image as a template image.
 * - `template` - the image is used as a template image: its shape is drawn in
 *   the state-dependent item icon color (`tabBarItemIconColor`,
 *   `tabBarTintColor`).
 * - `original` - the image keeps its own colors and ignores the item icon color.
 */
export type TabsScreenIconImageRenderingModeIOS = 'default' | 'template' | 'original';
/**
 * How the tab bar renders an `sfSymbol` icon on iOS. The names follow the
 * SF Symbols rendering modes.
 *
 * - `default` - the system behavior (UIKit's automatic mode), also used when
 *   `renderingMode` is unset: system symbols are rendered in a single color,
 *   the state-dependent item icon color; for custom symbols the rendering mode
 *   set in the asset catalog may change it.
 * - `monochrome` - the symbol is rendered in a single color: the
 *   state-dependent item icon color (`tabBarItemIconColor`, `tabBarTintColor`).
 * - `original` - the symbol keeps its own colors (Apple's "multicolor"
 *   rendering) and ignores the item icon color. A symbol without color layers
 *   is drawn as authored.
 */
export type TabsScreenIconSymbolRenderingModeIOS = 'default' | 'monochrome' | 'original';
type WithImageRenderingMode<Icon> = Icon & {
    /**
     * @summary How the tab bar renders this image. See
     * `TabsScreenIconImageRenderingModeIOS`.
     *
     * Defaults to `default`, which keeps the image's own colors.
     *
     * `icon` and `selectedIcon` may use different values.
     */
    renderingMode?: TabsScreenIconImageRenderingModeIOS | undefined;
};
type WithSymbolRenderingMode<Icon> = Icon & {
    /**
     * @summary How the tab bar renders this symbol. See
     * `TabsScreenIconSymbolRenderingModeIOS`.
     *
     * Defaults to `default`, the system behavior. Set `renderingMode`
     * explicitly to be independent of it.
     *
     * `icon` and `selectedIcon` may use different values.
     */
    renderingMode?: TabsScreenIconSymbolRenderingModeIOS | undefined;
};
/**
 * How the tab bar tints an `imageSource` or `drawableResource` icon on Android.
 *
 * - `default` - the tab bar's default, also used when `tinting` is unset: the
 *   icon is tinted, as with `tinted`.
 * - `tinted` - the icon is drawn in the state-dependent item icon color
 *   (`tabBarItemIconColor`).
 * - `original` - the icon keeps its own colors and ignores the item icon color,
 *   e.g. a multicolor VectorDrawable.
 */
export type TabsScreenIconTintingAndroid = 'default' | 'tinted' | 'original';
type WithTinting<Icon> = Icon & {
    /**
     * @summary How the tab bar tints this icon. See
     * `TabsScreenIconTintingAndroid`.
     *
     * Defaults to `default`, which tints the icon.
     *
     * `icon` and `selectedIcon` may use different values.
     */
    tinting?: TabsScreenIconTintingAndroid | undefined;
};
/**
 * @deprecated Use `{ type: 'imageSource', imageSource, renderingMode: 'template' }` instead.
 */
export type TabsScreenIconTemplateIOS = PlatformIconIOSTemplate;
/**
 * @deprecated Use `{ type: 'sfSymbol', name }` for custom symbols from the asset
 * catalog, or `{ type: 'imageSource', imageSource: { uri: 'name' } }` for asset
 * catalog images (append `.png` to names containing a dot). `imageSource` keeps
 * the image's own colors by default, so for an asset whose "Render As" is not
 * `Original Image`, add `renderingMode: 'template'`.
 */
export type TabsScreenIconXcassetIOS = PlatformIconIOSXcasset;
export type TabsScreenIconIOS = WithSymbolRenderingMode<PlatformIconIOSSfSymbol> | TabsScreenIconXcassetIOS | TabsScreenIconTemplateIOS | WithImageRenderingMode<PlatformIconShared>;
export type TabsScreenIconAndroid = WithTinting<PlatformIconAndroidDrawableResource> | WithTinting<PlatformIconShared>;
export {};
//# sourceMappingURL=TabsScreenIcon.types.d.ts.map