import { type TimeGranularity } from '../../utils';
import { Ele as NumListEle } from '../num-list';
import { type BaseAttrs, type BaseEmits, UiBase } from '../web-component-base';
export declare const granularityList: readonly ["millisecond", "second", "minute", "hour"];
export type Granularity = TimeGranularity;
export declare const colOrderList: readonly ["hms", "hsm", "mhs", "msh", "shm", "smh"];
export type ColOrder = (typeof colOrderList)[number] & {
    [Symbol.iterator](): IterableIterator<'h' | 'm' | 's'>;
};
export interface Attrs extends BaseAttrs {
    millisecond: number;
    /**
     * 选择器的粒度，表示最大可选的时间单位。默认为 hour。
     * 例如设置为 'minute'，则表示最大只能选择到分钟，小时将被忽略。
     */
    'max-granularity'?: Granularity;
    /**
     * 选择器的粒度，表示最小可选的时间单位。默认为 millisecond。
     * 例如设置为 'minute'，则表示只能选择到分钟，秒和毫秒将被忽略。
     */
    'min-granularity'?: Granularity;
    'col-order'?: ColOrder;
}
export type { BaseEmits };
/** 时分秒毫秒选择器 */
export declare class BaseEle<A extends Attrs, E extends BaseEmits> extends UiBase<A, E> {
    protected static _style: string;
    protected static _template: string;
    static get observedAttributes(): string[];
    get _staticEls(): {
        readonly cols: HTMLElement;
        readonly hCol: HTMLElement;
        readonly mCol: HTMLElement;
        readonly sCol: HTMLElement;
        readonly lists: any[];
        readonly hList: NumListEle;
        readonly mList: NumListEle;
        readonly sList: NumListEle;
        readonly msWrapper: HTMLElement;
        readonly msInput: HTMLInputElement;
    };
    /** 当前时间的毫秒数，范围为一天内的毫秒数（0 到 86399999），随着用户选择时实时更新 */
    get millisecond(): number;
    set millisecond(v: number);
    get maxGranularity(): Granularity;
    set maxGranularity(v: Granularity);
    get minGranularity(): Granularity;
    set minGranularity(v: Granularity);
    get colOrder(): ColOrder;
    set colOrder(v: ColOrder);
    protected get _minmaxGran(): {
        min: "hour" | "minute" | "second" | "millisecond";
        max: "hour" | "minute" | "second" | "millisecond";
    };
    scrollToCurrentItem(): void;
    connectedCallback(): boolean | void;
    protected _onAttrChanged(name: string, oldValue: string | null, newValue: string | null): void;
    private _renderCols;
    private _updateGranularity;
    private _updateColsValue;
    private _getMsFromEle;
    private _onMsInput;
    private _onColsSelect;
}
