import {
    type ImageProps,
    type TextStyle,
    type StyleProp
} from "react-native";
import type IAvatarProps from "../avatar/type";
import type {
    AvatarTitleAbbreviationTypes,
    AvatarSizeType
} from "../avatar/type";

export type AvatarGroupDynamicStyleType = {
    borderColor?: keyof NCoreUIKit.BorderContentColors | "transparent";
    avatarBackgroundColor: keyof NCoreUIKit.ContainerContentColors;
    borders: NCoreUIKit.ActivePalette["borders"];
    colors: NCoreUIKit.ActivePalette["colors"];
    avatars?: Array<AvatarGroupAvatarsType>;
    currentSize: AvatarGroupMeasuresKeys;
    isDisabled?: boolean;
    isLoading?: boolean;
};

export type AvatarGroupSizeConstantType = {
    size: AvatarGroupSizeType;
};

export type AvatarGroupMeasuresKeys = {
    fontSize: keyof NCoreUIKit.Typography;
    iconSize: number;
    size: number;
};

export type AvatarGroupTitleAbbreviationTypes = "first-last" | "first-next" | "every-first";

export type AvatarGroupSizeType = "xxSmall" | "xSmall" | "small" | "medium" | "large" | "xLarge" | "xxLarge" | "xxxLarge";

export type AvatarGroupAvatarsType = Omit<
    IAvatarProps, |
    "isShowStatusIndicatorSplicer" |
    "avatarBackgroundColor" |
    "titleAbbreviationType" |
    "isStatusIndicator" |
    "isWorkWithAction" |
    "isDisabled" |
    "imageProps" |
    "isLoading" |
    "onPress" |
    "size"
>;

interface IAvatarGroupProps {
    borderColor?: keyof NCoreUIKit.BorderContentColors | "transparent";
    avatarBackgroundColor?: keyof NCoreUIKit.ContainerContentColors;
    customTheme?: {
        gapPropagation?: keyof NCoreUIKit.GapPropagationKey;
        sharpness?: keyof NCoreUIKit.SharpnessKey;
        paletteKey?: keyof NCoreUIKit.PaletteKey;
        themeKey?: keyof NCoreUIKit.ThemeKey;
    };
    style?: StyleProp<TextStyle>[] | StyleProp<TextStyle>;
    titleAbbreviationType?: AvatarTitleAbbreviationTypes;
    avatars?: Array<AvatarGroupAvatarsType>;
    isShowStatusIndicatorSplicer?: boolean;
    isStatusIndicator?: boolean;
    isWorkWithAction?: boolean;
    imageProps?: ImageProps;
    size?: AvatarSizeType;
    isDisabled?: boolean;
    onPress?: () => void;
    isLoading?: boolean;
}
export type {
    IAvatarGroupProps as default
};
