import { AbstractComponent } from '../core/base';
import type { ComponentOptions } from '../interface';
import { Slider } from '../slider';
import { Controller } from './controller';
import type { PlayerEventEnum, PlayerAttributes } from './type';
export declare abstract class BasePlayer<T> extends AbstractComponent<Required<PlayerAttributes>> {
    static defaultAttributes: {
        visible: boolean;
        data: any[];
        interval: number;
        orient: string;
        align: string;
        size: {
            height: number;
            width: number;
        };
        slider: {
            visible: boolean;
            space: number;
            dx: number;
            dy: number;
            railStyle: {
                cornerRadius: number;
            };
            trackStyle: {};
            handlerStyle: {};
        };
        controller: {
            visible: boolean;
            start: {
                key: string;
                position: string;
                space: number;
                visible: boolean;
                style: {
                    x: number;
                    y: number;
                    dx: number;
                    dy: number;
                    size: number;
                };
                order: number;
            };
            pause: {
                key: string;
                position: string;
                visible: boolean;
                style: {
                    x: number;
                    y: number;
                    dx: number;
                    dy: number;
                    size: number;
                };
                order: number;
                space: number;
            };
            forward: {
                key: string;
                position: string;
                visible: boolean;
                style: {
                    x: number;
                    y: number;
                    dx: number;
                    dy: number;
                    size: number;
                };
                order: number;
                space: number;
            };
            backward: {
                key: string;
                position: string;
                visible: boolean;
                style: {
                    x: number;
                    y: number;
                    dx: number;
                    dy: number;
                    size: number;
                };
                order: number;
                space: number;
            };
        };
    };
    protected _slider: Slider;
    protected _controller: Controller;
    protected _data: any[];
    protected _minIndex: number;
    getMinIndex(): number;
    protected _maxIndex: number;
    getMaxIndex(): number;
    private _sliderVisible;
    private _railStyle;
    private _trackStyle;
    private _handlerStyle;
    private _controllerVisible;
    private _start;
    private _pause;
    private _forward;
    private _backward;
    private _size;
    private _orient;
    protected _dataIndex: number;
    getDataIndex(): number;
    private _layoutInfo;
    abstract play(): void;
    abstract pause(): void;
    abstract backward(): void;
    abstract forward(): void;
    constructor(attributes: T, options?: ComponentOptions);
    _initAttributes(): void;
    _initDataIndex(): void;
    private _initLayoutInfo;
    private _updateSliderAttrs;
    private _initSlider;
    private _updateControllerAttrs;
    private _initController;
    render(): void;
    renderSlider(): void;
    renderController(): void;
    dispatchCustomEvent(eventType: PlayerEventEnum, dataIndex: number): void;
}
