import type { VariantProps } from 'tailwind-variants';
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
declare const countdown: import("tailwind-variants").TVReturnType<{
    size: {
        xs: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        sm: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        md: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        lg: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        xl: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
    };
    leading: {
        true: string;
    };
    useCircle: {
        true: {
            base: string;
            circleBase: string;
        };
    };
}, {
    base: string;
    label: string;
    leadingIcon: string;
    leadingAvatar: string;
    leadingAvatarSize: string;
    circleBase: string;
    circleGroup: string;
    circleElement: string;
    circlePath: string;
}, undefined, {
    size: {
        xs: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        sm: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        md: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        lg: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        xl: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
    };
    leading: {
        true: string;
    };
    useCircle: {
        true: {
            base: string;
            circleBase: string;
        };
    };
}, {
    base: string;
    label: string;
    leadingIcon: string;
    leadingAvatar: string;
    leadingAvatarSize: string;
    circleBase: string;
    circleGroup: string;
    circleElement: string;
    circlePath: string;
}, import("tailwind-variants").TVReturnType<{
    size: {
        xs: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        sm: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        md: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        lg: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        xl: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
    };
    leading: {
        true: string;
    };
    useCircle: {
        true: {
            base: string;
            circleBase: string;
        };
    };
}, {
    base: string;
    label: string;
    leadingIcon: string;
    leadingAvatar: string;
    leadingAvatarSize: string;
    circleBase: string;
    circleGroup: string;
    circleElement: string;
    circlePath: string;
}, undefined, {
    size: {
        xs: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        sm: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        md: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        lg: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        xl: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
    };
    leading: {
        true: string;
    };
    useCircle: {
        true: {
            base: string;
            circleBase: string;
        };
    };
}, {
    base: string;
    label: string;
    leadingIcon: string;
    leadingAvatar: string;
    leadingAvatarSize: string;
    circleBase: string;
    circleGroup: string;
    circleElement: string;
    circlePath: string;
}, import("tailwind-variants").TVReturnType<{
    size: {
        xs: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        sm: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        md: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        lg: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
        xl: {
            base: string;
            leadingIcon: string;
            leadingAvatarSize: string;
        };
    };
    leading: {
        true: string;
    };
    useCircle: {
        true: {
            base: string;
            circleBase: string;
        };
    };
}, {
    base: string;
    label: string;
    leadingIcon: string;
    leadingAvatar: string;
    leadingAvatarSize: string;
    circleBase: string;
    circleGroup: string;
    circleElement: string;
    circlePath: string;
}, undefined, unknown, unknown, undefined>>>;
type CountdownVariants = VariantProps<typeof countdown>;
export interface CountdownData {
    days: number;
    hours: number;
    minutes: number;
    seconds: number;
    milliseconds: number;
    totalDays: number;
    totalHours: number;
    totalMinutes: number;
    totalSeconds: number;
    totalMilliseconds: number;
}
export interface CountdownProps extends Omit<UseComponentIconsProps, 'loading' | 'trailing' | 'trailingIcon'> {
    /**
     * The element or component this component should render as
     * @defaultValue 'span'
     */
    as?: any;
    /**
     * @defaultValue 'md'
     */
    size?: CountdownVariants['size'];
    /**
     * Emits the countdown events
     * @defaultValue true
     */
    emitEvents?: boolean;
    /**
     * Number of seconds to countdown
     * @defaultValue 0
     */
    seconds?: number | string;
    /**
     * Should seconds be divided into minutes?
     * @defaultValue true
     */
    showMinutes?: boolean;
    /**
     * Shows a `Circle` around the countdown
     * @defaultValue false
     */
    useCircle?: boolean;
    /**
     * The interval time (in milliseconds) of the countdown progress
     * @defaultValue 1000
     */
    interval?: number;
    /**
     * Starts the countdown automatically when initialized
     * @defaultValue true
     */
    needStartImmediately?: boolean;
    /**
     * Generate the current time of a specific time zone
     * @defaultValue Date.now()
     */
    now?: () => number;
    class?: any;
    b24ui?: Partial<typeof countdown.slots>;
}
export interface CountdownEmits {
    (e: 'start' | 'end' | 'abort'): void;
    (e: 'progress', payload: CountdownData): void;
}
export interface CountdownSlots {
    leading(props?: {}): any;
    default(props: CountdownData & {
        formatTime: string;
    }): any;
}
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<CountdownProps>, {
    as: string;
    needStartImmediately: boolean;
    emitEvents: boolean;
    interval: number;
    now: () => number;
    seconds: number;
    showMinutes: boolean;
    useCircle: boolean;
}>>, {
    start: () => void;
    abort: () => void;
    stop: () => void;
    restart: () => void;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, any, string, import("vue").PublicProps, any, {
    as: any;
    useCircle: boolean;
    emitEvents: boolean;
    seconds: number | string;
    showMinutes: boolean;
    interval: number;
    needStartImmediately: boolean;
    now: () => number;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<CountdownSlots> & CountdownSlots>;
export default _default;
type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
        default: D[K];
    }> : P[K];
};
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
type __VLS_TypePropsToOption<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: import('vue').PropType<T[K]>;
        required: true;
    };
};
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
type __VLS_PrettifyLocal<T> = {
    [K in keyof T]: T[K];
} & {};
