import { FullToken, GenStyleFn } from "../../theme/interface/cssinjs-utils.js";
import { GenerateStyle } from "../../theme/interface/index.js";
import "../../theme/internal.js";
import * as vue545 from "vue";

//#region src/notification/style/index.d.ts
type WidthKey<Token extends NotificationToken> = { [Key in keyof Token]: Token[Key] extends number | string ? Key : never }[keyof Token];
interface SharedStyleConfig<Token extends NotificationToken> {
  listWidthKey?: WidthKey<Token>;
  stackVisibleCount?: number;
  itemStyle?: GenerateStyle<Token>;
}
/** Component only token. Which will handle additional calculation of alias token */
interface ComponentToken {
  /**
   * @desc 提醒框 z-index
   * @descEN z-index of Notification
   */
  zIndexPopup: number;
  /**
   * @desc 提醒框宽度
   * @descEN Width of Notification
   */
  width: number | string;
  /**
   * @desc 提醒框进度条背景色
   * @descEN Background color of Notification progress bar
   */
  progressBg: string;
  /**
   * @desc 成功提醒框容器背景色
   * @descEN Background color of success notification container
   */
  colorSuccessBg?: string;
  /**
   * @desc 错误提醒框容器背景色
   * @descEN Background color of error notification container
   */
  colorErrorBg?: string;
  /**
   * @desc 信息提醒框容器背景色
   * @descEN Background color of info notification container
   */
  colorInfoBg?: string;
  /**
   * @desc 警告提醒框容器背景色
   * @descEN Background color of warning notification container
   */
  colorWarningBg?: string;
}
/**
 * @desc Notification 组件的 Token
 * @descEN Token for Notification component
 */
interface NotificationToken extends FullToken<'Notification'> {
  /**
   * @desc 提醒框背景色
   * @descEN Background color of Notification
   */
  notificationBg: string;
  /**
   * @desc 提醒框内边距
   * @descEN Padding of Notification
   */
  notificationPadding: string;
  /**
   * @desc 提醒框垂直内边距
   * @descEN Vertical padding of Notification
   */
  notificationPaddingVertical: number | string;
  /**
   * @desc 提醒框水平内边距
   * @descEN Horizontal padding of Notification
   */
  notificationPaddingHorizontal: number;
  /**
   * @desc 提醒框图标尺寸
   * @descEN Icon size of Notification
   */
  notificationIconSize: number | string;
  /**
   * @desc 提醒框关闭按钮尺寸
   * @descEN Close button size of Notification
   */
  notificationCloseButtonSize: number | string;
  /**
   * @desc 提醒框底部外边距
   * @descEN Bottom margin of Notification
   */
  notificationMarginBottom: number;
  /**
   * @desc 提醒框边缘外边距
   * @descEN Edge margin of Notification
   */
  notificationMarginEdge: number;
  /**
   * @desc 提醒框进度条高度
   * @descEN Height of Notification progress bar
   */
  notificationProgressHeight: number;
  /**
   * @desc 提醒框入场动画偏移
   * @descEN Motion offset of Notification
   */
  notificationMotionOffset: number;
}
/** Derive internal Notification style tokens from alias and component tokens. */
declare const prepareNotificationToken: (token: Parameters<GenStyleFn<'Notification'>>[0]) => NotificationToken;
/** Register the PurePanel sub-style component for Notification. */
declare const PurePanelStyle: vue545.DefineComponent<vue545.ExtractPropTypes<{
  prefixCls: StringConstructor;
  rootCls: StringConstructor;
}>, () => null, {}, {}, {}, vue545.ComponentOptionsMixin, vue545.ComponentOptionsMixin, {}, string, vue545.PublicProps, Readonly<vue545.ExtractPropTypes<{
  prefixCls: StringConstructor;
  rootCls: StringConstructor;
}>> & Readonly<{}>, {}, {}, {}, {}, string, vue545.ComponentProvideOptions, true, {}, any>;
/** Compose the shared list, item, and placement styles. */
declare function sharedGenerateStyle<Token extends NotificationToken>(token: Token, config: SharedStyleConfig<Token>): ReturnType<GenerateStyle<Token>>;
/** Register the main style hook for Notification. */
declare const _default: (prefixCls: vue545.Ref<string>, rootCls?: vue545.Ref<string | undefined>) => readonly [vue545.Ref<string, string>, vue545.ComputedRef<string | undefined>];
//#endregion
export { ComponentToken, NotificationToken, PurePanelStyle, _default as default, prepareNotificationToken, sharedGenerateStyle };