import type { PickClassStyleType, ReactPropsBase } from 'jamis-core';
import type { BaseSchema, SchemaClassName, SchemaCollection, SchemaExpression } from '../types';
export interface SpinnerProps extends ReactPropsBase, PickClassStyleType {
    show?: boolean;
    className?: SchemaClassName;
    spinnerClassName?: SchemaClassName;
    /**
     * @deprecated 已废弃，没有作用
     */
    mode?: string;
    size?: 'sm' | 'lg' | '';
    icon?: string | React.ReactNode;
    tip?: string;
    tipPlacement?: 'top' | 'right' | 'bottom' | 'left';
    /** 延迟显示 */
    delay?: number;
    /** 是否显示遮罩层，有children属性才生效 */
    overlay?: boolean;
    /** 多少毫秒后自动关闭 */
    closeAfter?: number;
    /** 是否是全局性的spin */
    asGlobalSpin?: boolean;
}
export interface SpinnerSchema extends BaseSchema {
    /**
     * 组件类型
     */
    type: 'spinner';
    /**
     * 控制Spinner显示与隐藏
     */
    show?: boolean;
    /**
     * 控制Spinner显示与隐藏
     */
    showOn?: SchemaExpression;
    /**
     * 自定义spinner的class
     */
    className?: SchemaClassName;
    /**
     * spin图标位置包裹元素的自定义class
     */
    spinnerClassName?: SchemaClassName;
    /**
     * 作为容器使用时最外层元素的class
     */
    spinnerWrapClassName?: SchemaClassName;
    /**
     * @deprecated 已废弃，没有作用
     */
    mode?: string;
    /**
     * spinner Icon 大小
     */
    size?: 'sm' | 'lg' | '';
    /**
     * 自定义icon
     */
    icon?: string;
    /**
     * spinner文案
     */
    tip?: string;
    tipExpr?: SchemaExpression;
    /**
     * spinner文案位置
     */
    tipPlacement?: 'top' | 'right' | 'bottom' | 'left';
    /**
     * 延迟显示
     */
    delay?: number;
    /**
     * 是否显示遮罩层
     */
    overlay?: boolean;
    /**
     * 作为容器使用时内容
     */
    body?: SchemaCollection;
}
export interface SpinnerRef {
    show: (tip?: string, closeAfter?: number) => void;
    close: () => void;
}
