import type { IArcGISContext } from "../../types/IArcGISContext";
import { IHubSearchResult } from "../../search/types/IHubSearchResult";
import { AccessLevel } from "./types";
export interface IHubCardViewModel {
    access?: AccessLevel;
    id?: string;
    title?: string;
    source?: string;
    summary?: string;
    thumbnailUrl?: string;
    titleUrl?: string;
    type?: string;
    family?: string;
    badges?: IBadgeConfig[];
    additionalInfo?: IInfoConfig[];
    actionLinks?: ICardActionLink[];
    index?: number;
}
export interface IBadgeConfig {
    i18nKey?: string;
    label?: string;
    /**
     * whether the label or translated i18nKey
     * should actually render or just be used
     * for a11y purposes. By default, the label
     * IS rendered
     */
    hideLabel?: boolean;
    icon?: string;
    color: string;
    tooltip?: {
        i18nKey?: string;
        label?: string;
    };
}
export interface IInfoConfig {
    i18nKey?: string;
    label?: string;
    value: string;
}
export interface ICardActionLink {
    action?: string;
    ariaLabel?: string;
    href?: string;
    i18nKey?: string;
    label?: string;
    /**
     * whether the label or translated i18nKey
     * should actually render or just be used
     * for a11y purposes
     */
    showLabel?: boolean;
    icon?: string;
    buttonStyle?: "outline" | "outline-fill" | "solid" | "transparent";
    buttonKind?: "brand" | "danger" | "inverse" | "neutral";
    disabled?: boolean;
    tooltip?: string;
}
export type CardModelTarget = "self" | "siteRelative" | "workspaceRelative" | "none" | "event";
export type EntityToCardModelFn<T> = (entity: T, context: IArcGISContext, opts?: IConvertToCardModelOpts) => IHubCardViewModel;
export type ResultToCardModelFn = (result: IHubSearchResult, opts?: IConvertToCardModelOpts) => IHubCardViewModel;
export interface IConvertToCardModelOpts {
    actionLinks?: ICardActionLink[];
    baseUrl?: string;
    /**
     * TODO: move transform logic to FE so we don't need to pass
     * locale down (follow https://devtopia.esri.com/dc/hub/issues/7255)
     */
    locale?: string;
    target?: CardModelTarget;
}
