import { ClassNameProps, GravityIconProps, QuoteType } from "../index.js";
import { ThemeSupporting } from "../../utils/index.js";
import { HubspotEventData, HubspotEventHandlers, HubspotFormDefaultValues } from "../../utils/hubspot.js";
import { AnalyticsEventsBase } from "../common.js";
import { ContentBlockProps } from "./blocks.js";
import { AuthorItem, ButtonProps, CardBaseProps, CardLayoutProps, ContentTheme, DividerSize, ImageCardMargins, ImageObjectProps, ImageProps, LayoutItemContentMargin, LinkProps, MediaProps, MediaView, PriceDetailedProps, TextTheme, Themable, ThemedImage } from "./common.js";
export declare enum SubBlockType {
    Divider = "divider",
    Quote = "quote",
    /**
     * @deprecated Will be removed
     */
    PriceDetailed = "price-detailed",
    MediaCard = "media-card",
    BannerCard = "banner-card",
    LayoutItem = "layout-item",
    BackgroundCard = "background-card",
    BasicCard = "basic-card",
    Content = "content",
    HubspotForm = "hubspot-form",
    /**
     * @deprecated Will be removed, use BasicCard instead
     */
    Card = "card",
    PriceCard = "price-card",
    ImageCard = "image-card"
}
export declare enum IconPosition {
    Top = "top",
    Left = "left"
}
export interface PositionedIcon {
    value: ImageProps;
    position?: IconPosition;
}
export interface PositionedGravityIcon {
    value: GravityIconProps;
    position?: IconPosition;
}
export interface IconWrapperProps {
    icon?: PositionedIcon;
    gravityIcon?: PositionedGravityIcon;
    size?: 's' | 'm' | 'l' | 'xl';
}
export declare enum ImageCardDirection {
    Direct = "direct",
    Reverse = "reverse"
}
export declare const SubBlockTypes: SubBlockType[];
export interface DividerProps {
    size?: DividerSize;
    border?: boolean;
}
export interface HubspotFormProps extends HubspotEventHandlers, AnalyticsEventsBase {
    className?: string;
    theme?: ContentTheme;
    isMobile?: boolean;
    region?: string;
    portalId: string;
    formId: string;
    formInstanceId?: string;
    formClassName?: string;
    /**
     * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame
     */
    onBeforeLoad?: (arg: HubspotEventData) => void;
    /**
     * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame
     */
    onBeforeSubmit?: (arg: HubspotEventData) => void;
    /**
     * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame
     */
    onSubmit?: (arg: HubspotEventData) => void;
    /**
     * To use this handler for component that is rendered in iframe, set up useLoopBackHubspotEvents hook on top level frame
     */
    onLoad?: (arg: HubspotEventData) => void;
    hubspotEvents?: string[];
    createDOMElement?: boolean;
    defaultValues?: HubspotFormDefaultValues;
}
export interface QuoteProps extends Themable, CardBaseProps {
    text?: string;
    yfmText?: string;
    image: ThemedImage;
    logo: ThemeSupporting<ImageProps>;
    color?: string;
    /**
     * @deprecated use property button instead
     */
    url?: string;
    /**
     * @deprecated use property button instead
     */
    urlTitle?: string;
    author?: AuthorItem;
    /**
     * @deprecated use property button instead
     */
    buttonText?: string;
    theme?: TextTheme;
    quoteType?: QuoteType;
    button?: ButtonProps;
}
export interface BackgroundCardProps extends CardBaseProps, AnalyticsEventsBase, CardLayoutProps, Omit<ContentBlockProps, 'centered' | 'controlPosition'> {
    url?: string;
    urlTitle?: string;
    background?: ThemeSupporting<ImageObjectProps>;
    paddingBottom?: 's' | 'm' | 'l' | 'xl';
    backgroundColor?: string;
}
export interface BasicCardProps extends CardBaseProps, AnalyticsEventsBase, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered' | 'theme' | 'controlPosition'> {
    url: string;
    urlTitle?: string;
    icon?: ThemeSupporting<ImageProps>;
    gravityIcon?: ThemeSupporting<GravityIconProps>;
    target?: string;
    iconPosition?: IconPosition;
    /**
     * @deprecated This property will be removed in future versions
     */
    hoverBackgroundColor?: string;
}
export interface BannerCardProps {
    title: string;
    subtitle?: string;
    className?: string;
    image?: ThemeSupporting<string>;
    disableCompress?: boolean;
    color?: ThemeSupporting<string>;
    theme?: TextTheme;
    button?: Pick<ButtonProps, 'text' | 'url' | 'target' | 'theme'>;
    mediaView?: MediaView;
}
export interface MediaCardProps extends MediaProps, AnalyticsEventsBase, CardBaseProps {
}
export interface PriceCardProps extends CardBaseProps, Pick<ContentBlockProps, 'theme'> {
    title: string;
    price: string;
    pricePeriod?: string;
    priceDetails?: string;
    description?: string;
    buttons?: ButtonProps[];
    links?: LinkProps[];
    backgroundColor?: string;
    list?: string[];
}
export interface LayoutItemProps extends ClassNameProps, CardLayoutProps, AnalyticsEventsBase {
    content: Omit<ContentBlockProps, 'colSizes' | 'centered'>;
    contentMargin?: LayoutItemContentMargin;
    media?: ThemeSupporting<MediaProps>;
    metaInfo?: string[];
    border?: boolean;
    fullscreen?: boolean;
    icon?: ThemeSupporting<PositionedIcon>;
}
export interface ImageCardProps extends CardBaseProps, CardLayoutProps, Omit<ContentBlockProps, 'colSizes' | 'centered' | 'controlPosition'> {
    image: ThemeSupporting<ImageProps>;
    enableImageBorderRadius?: boolean;
    margins?: ImageCardMargins;
    direction?: ImageCardDirection;
    backgroundColor?: string;
    url?: string;
    urlTitle?: string;
    target?: string;
}
export type DividerModel = {
    type: SubBlockType.Divider;
} & DividerProps;
export type QuoteModel = {
    type: SubBlockType.Quote;
} & QuoteProps;
export type LayoutItemModel = {
    type: SubBlockType.LayoutItem;
} & LayoutItemProps;
export type BackgroundCardModel = {
    type: SubBlockType.BackgroundCard;
} & BackgroundCardProps;
/** @deprecated */
export type PriceDetailedModel = {
    type: SubBlockType.PriceDetailed;
} & PriceDetailedProps;
export type MediaCardModel = {
    type: SubBlockType.MediaCard;
} & MediaCardProps;
export type HubspotFormModel = {
    type: SubBlockType.HubspotForm;
} & HubspotFormProps;
export type BannerCardModel = {
    type: SubBlockType.BannerCard;
} & BannerCardProps;
export type BasicCardModel = {
    type: SubBlockType.BasicCard;
} & BasicCardProps;
export type PriceCardModel = {
    type: SubBlockType.PriceCard;
} & PriceCardProps;
export type ImageCardModel = {
    type: SubBlockType.ImageCard;
} & ImageCardProps;
export type SubBlockModels = DividerModel | QuoteModel | PriceDetailedModel | MediaCardModel | BackgroundCardModel | HubspotFormModel | BannerCardModel | BasicCardModel | PriceCardModel | LayoutItemModel | ImageCardModel;
export type SubBlock = SubBlockModels;
