import { AriaAttributes, ReactNode } from 'react';
import type { Theme } from '@mui/material/styles';
export type ThemeColor = string | ((theme: Theme) => string);
export type BannerColor = 'white' | 'info';
export type BannerVariant = 'primary' | 'secondary' | 'tertiary';
export type BannerDirection = 'horizontal' | 'vertical';
export type CtaKind = 'naked' | 'contained';
export type BannerColorStyle = {
    background: ThemeColor;
    border: ThemeColor;
};
export type BannerCTA = {
    label: string;
    onClick: () => void;
} | {
    label: string;
    href: string;
    target?: '_self' | '_blank';
    rel?: string;
};
export type BannerCTAWithId = BannerCTA & {
    id: string;
};
type DataAttributes = {
    [key: `data-${string}`]: string | number | boolean | undefined;
};
export interface BannerProps extends DataAttributes, AriaAttributes {
    color?: BannerColor;
    variant?: BannerVariant;
    title: string;
    message?: string;
    badge?: string;
    onClose?: () => void;
    closeAriaLabel?: string;
    cta?: BannerCTA;
    icon?: ReactNode;
    illustration?: ReactNode;
}
export type BannerModel = {
    colorStyle: BannerColorStyle;
    direction: BannerDirection;
    textAlign: 'left' | 'center';
    hasClose: boolean;
    hasCta: boolean;
    ctaKind: CtaKind;
    badgeText?: string;
    topIcon?: ReactNode;
    illustrationNode?: ReactNode;
};
export type ViewState = {
    variant: BannerVariant;
    isHorizontal: boolean;
    contentGapPx: number;
    primaryIllustrationSizePx: number;
};
export declare function normalizeProps(props: BannerProps): {
    variant: BannerVariant;
    color?: BannerColor | undefined;
    title: string;
    message?: string | undefined;
    badge?: string | undefined;
    onClose?: (() => void) | undefined;
    closeAriaLabel?: string | undefined;
    cta?: BannerCTA | undefined;
    icon?: ReactNode;
    illustration?: ReactNode;
    "aria-activedescendant"?: string | undefined;
    "aria-atomic"?: (boolean | "true" | "false") | undefined;
    "aria-autocomplete"?: "list" | "inline" | "none" | "both" | undefined;
    "aria-braillelabel"?: string | undefined;
    "aria-brailleroledescription"?: string | undefined;
    "aria-busy"?: (boolean | "true" | "false") | undefined;
    "aria-checked"?: boolean | "true" | "false" | "mixed" | undefined;
    "aria-colcount"?: number | undefined;
    "aria-colindex"?: number | undefined;
    "aria-colindextext"?: string | undefined;
    "aria-colspan"?: number | undefined;
    "aria-controls"?: string | undefined;
    "aria-current"?: boolean | "time" | "page" | "step" | "true" | "false" | "location" | "date" | undefined;
    "aria-describedby"?: string | undefined;
    "aria-description"?: string | undefined;
    "aria-details"?: string | undefined;
    "aria-disabled"?: (boolean | "true" | "false") | undefined;
    "aria-dropeffect"?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
    "aria-errormessage"?: string | undefined;
    "aria-expanded"?: (boolean | "true" | "false") | undefined;
    "aria-flowto"?: string | undefined;
    "aria-grabbed"?: (boolean | "true" | "false") | undefined;
    "aria-haspopup"?: boolean | "dialog" | "menu" | "grid" | "true" | "listbox" | "tree" | "false" | undefined;
    "aria-hidden"?: (boolean | "true" | "false") | undefined;
    "aria-invalid"?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
    "aria-keyshortcuts"?: string | undefined;
    "aria-label"?: string | undefined;
    "aria-labelledby"?: string | undefined;
    "aria-level"?: number | undefined;
    "aria-live"?: "off" | "assertive" | "polite" | undefined;
    "aria-modal"?: (boolean | "true" | "false") | undefined;
    "aria-multiline"?: (boolean | "true" | "false") | undefined;
    "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
    "aria-orientation"?: "vertical" | "horizontal" | undefined;
    "aria-owns"?: string | undefined;
    "aria-placeholder"?: string | undefined;
    "aria-posinset"?: number | undefined;
    "aria-pressed"?: boolean | "true" | "false" | "mixed" | undefined;
    "aria-readonly"?: (boolean | "true" | "false") | undefined;
    "aria-relevant"?: "text" | "all" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
    "aria-required"?: (boolean | "true" | "false") | undefined;
    "aria-roledescription"?: string | undefined;
    "aria-rowcount"?: number | undefined;
    "aria-rowindex"?: number | undefined;
    "aria-rowindextext"?: string | undefined;
    "aria-rowspan"?: number | undefined;
    "aria-selected"?: (boolean | "true" | "false") | undefined;
    "aria-setsize"?: number | undefined;
    "aria-sort"?: "none" | "other" | "ascending" | "descending" | undefined;
    "aria-valuemax"?: number | undefined;
    "aria-valuemin"?: number | undefined;
    "aria-valuenow"?: number | undefined;
    "aria-valuetext"?: string | undefined;
};
export declare function computeModel(props: BannerProps, direction: BannerDirection): BannerModel;
export declare function computeViewState(props: BannerProps, direction: BannerDirection): ViewState;
export {};
