import { Component } from 'react';
import { Status, Size } from '../common';
export type ProcessIndicatorStatus = `${Status.PROCESSING | Status.FAILED | Status.SUCCEEDED | Status.HIDDEN}`;
export interface ProcessIndicatorProps {
    /** @default 'processing' */
    status?: ProcessIndicatorStatus;
    /** @default 'sm' */
    size?: 'xxs' | `${Size.EXTRA_SMALL | Size.SMALL | Size.EXTRA_LARGE}`;
    className?: string;
    'data-testid'?: string;
    onAnimationCompleted?: (status: ProcessIndicatorStatus) => void;
}
type ProcessIndicatorState = Required<Pick<ProcessIndicatorProps, 'status' | 'size'>>;
export default class ProcessIndicator extends Component<ProcessIndicatorProps, ProcessIndicatorState> {
    props: ProcessIndicatorProps & Required<Pick<ProcessIndicatorProps, keyof typeof ProcessIndicator.defaultProps>>;
    static defaultProps: {
        status: "processing";
        size: "sm";
    };
    interval: number;
    timeout: number;
    constructor(props: ProcessIndicator['props']);
    /**
     * Create interval for animation duration (1500ms)
     * Update state only at the end of every interval
     * (end of animation loop) if props changed before end of animation
     */
    componentDidMount(): void;
    /**
     * Only trigger render if comopnent's state got
     * updated from interval callback
     */
    shouldComponentUpdate(nextProps: ProcessIndicator['props'], nextState: ProcessIndicatorState): boolean;
    componentWillUnmount(): void;
    render(): import("react").JSX.Element;
}
export {};
//# sourceMappingURL=ProcessIndicator.d.ts.map