import { ComponentChildren } from 'preact';
import type { DsIcon } from '@bonniernews/dn-design-system-web/types-lib/ds-icon.d.ts';
import { ButtonToggleStandardProps } from '../button/button-types';
import { ButtonProps } from '../radio-button/radio-button';
import { SwitchInnerProps } from '../switch/switch';
export interface ListItemSharedProps {
    title?: string;
    subtitle?: string;
    meta?: string;
    border?: boolean;
    fontWeight?: 'regular' | 'semibold' | 'bold';
    attributes?: {
        [key: string]: string;
    };
    children?: ComponentChildren;
    forcePx?: boolean;
    classNames?: string;
}
export interface ListItemBaseProps extends ListItemSharedProps {
    listItemType: 'accordion' | 'checkbox' | 'radio' | 'switch' | 'image' | 'standard' | 'toggle';
    radioButtons?: ButtonProps[];
    href?: string;
    leadingIcon?: DsIcon;
    trailingIcon?: DsIcon;
    mediaHtml?: string;
    name?: string;
    id?: string;
    value?: string;
    accordionContent?: any;
    checked?: boolean;
    selected?: boolean;
    stripLabel?: boolean;
    disabled?: boolean;
}
export interface AccordionListItemProps extends ListItemSharedProps, Pick<ListItemBaseProps, 'accordionContent' | 'leadingIcon'> {
}
export interface CheckboxListItemProps extends ListItemSharedProps, Pick<ListItemBaseProps, 'href' | 'name' | 'checked' | 'stripLabel' | 'disabled'> {
}
export interface ImageListItemProps extends ListItemSharedProps, Pick<ListItemBaseProps, 'href' | 'trailingIcon'> {
    mediaHtml: string;
}
export interface RadioListItemProps extends ListItemSharedProps, Pick<ListItemBaseProps, 'href' | 'name' | 'id' | 'selected' | 'stripLabel' | 'value' | 'disabled'> {
    selected: boolean;
}
export interface StandardListItemProps extends ListItemSharedProps, Pick<ListItemBaseProps, 'href' | 'leadingIcon' | 'trailingIcon'> {
}
export interface SwitchListItemProps extends ListItemSharedProps, SwitchInnerProps, Pick<ListItemBaseProps, 'leadingIcon' | 'disabled' | 'checked' | 'stripLabel' | 'value'> {
    name: string;
}
export interface ToggleListItemProps extends ListItemSharedProps, ButtonToggleStandardProps, Pick<ListItemBaseProps, 'title' | 'subtitle' | 'disabled' | 'selected'> {
    name: string;
    titleHref?: string;
    toggleText: string;
    toggleSelectedText: string;
}
export type ListItemProps = ({
    listItemType: 'accordion';
} & AccordionListItemProps) | ({
    listItemType: 'checkbox';
} & CheckboxListItemProps) | ({
    listItemType: 'image';
} & ImageListItemProps) | ({
    listItemType: 'radio';
} & RadioListItemProps) | ({
    listItemType: 'standard';
} & StandardListItemProps) | ({
    listItemType: 'switch';
} & SwitchListItemProps) | ({
    listItemType: 'toggle';
} & ToggleListItemProps);
export interface InnerListItemProps extends ListItemSharedProps, Pick<ListItemBaseProps, 'listItemType' | 'href' | 'accordionContent' | 'name' | 'id' | 'checked' | 'selected' | 'value' | 'forcePx' | 'disabled'>, Pick<ButtonToggleStandardProps, 'variant'> {
    componentClassName: string;
    toggleText?: string;
    toggleSelectedText?: string;
}
export type TitleProps = Pick<ListItemBaseProps, 'title' | 'subtitle' | 'fontWeight' | 'attributes'> & {
    componentClassName: string;
};
