import { OpUnitType } from 'dayjs';
import { Component } from 'react';
import { LocaleContextProps } from '../../locale/context';
import { PickerColumnData } from '../../picker';
import { AvailableDate, DateCheckOptions } from '../../utils/date';
import { BaseComponentAttributes } from '../../utils/types';
export interface BasePickerProps extends BaseComponentAttributes {
    id?: any;
    value?: AvailableDate;
    defaultValue?: AvailableDate;
    disabledDate?: (value: Date, type: string) => boolean;
    onChange?: (value: Date) => void;
    validRange?: [Date, Date];
}
interface BasePickerState {
    value: Date;
}
export declare type StepType = OpUnitType;
declare abstract class BasePicker<T extends BasePickerProps = BasePickerProps> extends Component<T, BasePickerState> {
    constructor(props: T);
    abstract getStep(): StepType;
    abstract getDisableType(): string;
    abstract getDataSource(locale: LocaleContextProps): PickerColumnData[][];
    abstract toDate(...values: any[]): Date;
    abstract toValues(d: Date): any[];
    abstract getRangeCheck(): DateCheckOptions;
    componentDidUpdate(prevProps: T): void;
    get value(): Date;
    get validRange(): T["validRange"];
    filterDataSource(source: PickerColumnData[], changeDate: (d: Date, it: PickerColumnData) => void, type: 'month' | 'year' | 'day'): PickerColumnData[];
    getAvailableDate(d: Date): Date;
    handleChange(values: any[]): void;
    render(): JSX.Element;
    private hasAvailable;
    private isAvailable;
}
export default BasePicker;
