import { App, ComputedRef, MaybeRef } from 'vue';
import { ClassType, StyleType } from './props';
export declare const PROVIDED_ICONS = "__vxp-provided-icons";
export type IconValue = Record<string, any> | (() => any);
export interface IconOptions extends Record<string, any> {
    class?: ClassType;
    style?: StyleType;
    scale?: number | string;
    title?: string;
    label?: string;
    flip?: 'horizontal' | 'vertical' | 'both';
    effect?: string;
    size?: string;
    color?: string;
    rotate?: number | string;
}
export type IconArrayValue = [IconValue, IconOptions?];
export type IconConfig = IconValue | IconArrayValue;
export interface IconsOptions {
    loading?: IconConfig;
    clear?: IconConfig;
    close?: IconConfig;
    calendar?: IconConfig;
    clock?: IconConfig;
    exchange?: IconConfig;
    angleUp?: IconConfig;
    angleRight?: IconConfig;
    angleDown?: IconConfig;
    angleLeft?: IconConfig;
    anglesRight?: IconConfig;
    anglesLeft?: IconConfig;
    retweet?: IconConfig;
    refresh?: IconConfig;
    filter?: IconConfig;
    ellipsis?: IconConfig;
    upload?: IconConfig;
    uploadCloud?: IconConfig;
    check?: IconConfig;
    help?: IconConfig;
    alert?: IconConfig;
    question?: IconConfig;
    info?: IconConfig;
    success?: IconConfig;
    warning?: IconConfig;
    error?: IconConfig;
    delete?: IconConfig;
    preview?: IconConfig;
    image?: IconConfig;
    plus?: IconConfig;
    minus?: IconConfig;
    plusSquare?: IconConfig;
    minusSquare?: IconConfig;
    cipherText?: IconConfig;
    plainText?: IconConfig;
    user?: IconConfig;
    light?: IconConfig;
    dark?: IconConfig;
    signOut?: IconConfig;
    indent?: IconConfig;
    outdent?: IconConfig;
    search?: IconConfig;
    rotateRight?: IconConfig;
    rotateLeft?: IconConfig;
    flipX?: IconConfig;
    flipY?: IconConfig;
    zoomIn?: IconConfig;
    zoonOut?: IconConfig;
    fullScreen?: IconConfig;
    resetScreen?: IconConfig;
    dragger?: IconConfig;
    file?: IconConfig;
    fileText?: IconConfig;
    fileCode?: IconConfig;
    fileImage?: IconConfig;
    fileAudio?: IconConfig;
    fileVideo?: IconConfig;
    fileZip?: IconConfig;
    volume?: IconConfig;
    volumeLow?: IconConfig;
    volumeMute?: IconConfig;
    play?: IconConfig;
    pause?: IconConfig;
    fullWindow?: IconConfig;
    pip?: IconConfig;
    playState?: IconConfig;
    pauseState?: IconConfig;
    playPrev?: IconConfig;
    playNext?: IconConfig;
}
export type IconName = keyof IconsOptions;
export type IconsConfig = {
    [K in keyof IconsOptions]-?: IconConfig;
};
export type NormalizedIconsConfig = Record<IconName, IconOptions & {
    icon: IconValue;
}>;
export declare const iconNames: readonly (keyof IconsOptions)[];
export declare const globalIcons: ComputedRef<NormalizedIconsConfig>;
/**
 * Provide a icons config for under components.
 *
 * @param icons icons config
 * @param app the app of Vue, will use app.provide if specify
 */
export declare function configIcons(icons: MaybeRef<IconsOptions>, app?: App): void;
export declare function useIcons(): ComputedRef<NormalizedIconsConfig>;
