import type {
    ReactNode
} from "react";
import type {
    DimensionValue,
    StyleProp,
    ViewStyle
} from "react-native";
import type IAvatarProps from "../avatar/type";
import type IButtonProps from "../button/type";

export type UserShortcutSpreadBehaviour = "baseline" | "stretch" | "free";

export type UserShortcutDynamicStyleType = {
    backgroundColor: keyof NCoreUIKit.ContainerContentColors | "transparent";
    radiuses: NCoreUIKit.ActivePalette["radiuses"];
    spreadBehaviour?: UserShortcutSpreadBehaviour;
    colors: NCoreUIKit.ActivePalette["colors"];
    spaces: NCoreUIKit.ActivePalette["spaces"];
    maxWidth?: DimensionValue;
    isDisabled?: boolean;
};

interface IUserShortcutProps {
    backgroundColor?: keyof NCoreUIKit.ContainerContentColors | "transparent";
    onLogoutPress?: (response?: unknown, error?: unknown) => void;
    customTheme?: {
        gapPropagation?: keyof NCoreUIKit.GapPropagationKey;
        sharpness?: keyof NCoreUIKit.SharpnessKey;
        paletteKey?: keyof NCoreUIKit.PaletteKey;
        themeKey?: keyof NCoreUIKit.ThemeKey;
    };
    style?: StyleProp<ViewStyle>[] | StyleProp<ViewStyle>;
    statusColor?: keyof NCoreUIKit.TextContentColors;
    spreadBehaviour?: UserShortcutSpreadBehaviour;
    isShowLoginButtonWhenNoSession?: boolean;
    avatarProps?: Omit<IAvatarProps, "size">;
    variant?: "default" | "compact";
    isWorkWithCoreComplex?: boolean;
    isShowRegisterButton?: boolean;
    actionButtons?: IButtonProps[];
    onRegisterPress?: () => void;
    isShowLogoutButton?: boolean;
    isShowArrowButton?: boolean;
    onLoginPress?: () => void;
    maxWidth?: DimensionValue;
    isSessionActive?: boolean;
    isDisabled?: boolean;
    onPress?: () => void;
    badges?: ReactNode[];
    statusText?: string;
    subTitle?: string;
    title: string;
}
export type {
    IUserShortcutProps as default
};
