import { Component, CSSProperties, ReactElement, ReactNode } from 'react';
import { Size } from '../_util/enum';
import ConfigContext, { ConfigContextValue } from '../config-provider/ConfigContext';
export declare type SpinIndicator = ReactElement<any>;
export interface SpinProps {
    prefixCls?: string;
    className?: string;
    spinning?: boolean;
    style?: CSSProperties;
    size?: Size;
    tip?: string;
    delay?: number;
    wrapperClassName?: string;
    indicator?: SpinIndicator;
    children?: ReactNode;
}
export interface SpinState {
    spinning?: boolean;
    notCssAnimationSupported?: boolean;
}
export default class Spin extends Component<SpinProps, SpinState> {
    static displayName: string;
    static get contextType(): typeof ConfigContext;
    static defaultProps: {
        spinning: boolean;
        size: Size;
        wrapperClassName: string;
    };
    static setDefaultIndicator(indicator: ReactNode): void;
    context: ConfigContextValue;
    debounceTimeout: number;
    delayTimeout: number;
    originalUpdateSpinning: () => void;
    constructor(props: SpinProps, context: ConfigContextValue);
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    debouncifyUpdateSpinning: (props?: SpinProps | undefined) => void;
    updateSpinning: () => void;
    cancelExistingSpin(): void;
    render(): JSX.Element;
}
