import Lucky from "./lucky";
import { UserConfigType } from "../types/index";
import SlotMachineConfig from "../types/slot";
export default class SlotMachine extends Lucky {
    private startDelays;
    private startTimes;
    private blocks;
    private prizes;
    private slots;
    private defaultConfig;
    private _defaultConfig;
    private defaultStyle;
    private _defaultStyle;
    private endCallback;
    private _offscreenCanvas?;
    private cellWidth;
    private cellHeight;
    private cellAndSpacing;
    private widthAndSpacing;
    private heightAndSpacing;
    private FPS;
    private scroll;
    private stopScroll;
    private endScroll;
    private startTime;
    private endTime;
    private defaultOrder;
    /**
     * 游戏当前的阶段
     * step = 0 时, 游戏尚未开始
     * step = 1 时, 此时处于加速阶段
     * step = 2 时, 此时处于匀速阶段
     * step = 3 时, 此时处于减速阶段
     */
    private step;
    /**
     * 中奖索引
     * prizeFlag = undefined 时, 处于开始抽奖阶段, 正常旋转
     * prizeFlag >= 0 时, 说明stop方法被调用, 并且传入了中奖索引
     * prizeFlag === -1 时, 说明stop方法被调用, 并且传入了负值, 本次抽奖无效
     */
    private prizeFlag;
    private prizeArea?;
    private ImageCache;
    /**
     * 老虎机构造器
     * @param config 配置项
     * @param data 抽奖数据
     */
    constructor(config: UserConfigType, data: SlotMachineConfig);
    protected resize(): void;
    protected initLucky(): void;
    /**
     * 初始化数据
     * @param data
     */
    private initData;
    /**
     * 初始化属性计算
     */
    private initComputed;
    /**
     * 初始化观察者
     */
    private initWatch;
    /**
     * 初始化 canvas 抽奖
     */
    init(): Promise<void>;
    private initImageCache;
    /**
     * 根据索引单独加载指定图片并缓存
     * @param cellName 模块名称
     * @param cellIndex 模块索引
     * @param imgName 模块对应的图片缓存
     * @param imgIndex 图片索引
     */
    private loadAndCacheImg;
    /**
     * 绘制离屏canvas
     */
    protected drawOffscreenCanvas(): void;
    /**
     * 绘制背景区域
     */
    protected drawBlocks(): SlotMachine["prizeArea"];
    /**
     * 绘制老虎机抽奖
     */
    protected draw(): void;
    /**
     * 刻舟求剑
     */
    private carveOnGunwaleOfAMovingBoat;
    /**
     * 对外暴露: 开始抽奖方法
     */
    play(): void;
    stop(index: number | number[]): void;
    /**
     * 让游戏动起来
     * @param num 记录帧动画执行多少次
     */
    private run;
    private displacement;
    private displacementWidthOrHeight;
}
