import BaccaratShoe from "./model/collection/BaccaratShoe";
import RecycleShoe from "./model/collection/RecycleShoe";
import HandOutcome from "./model/result/HandOutcome";
import ShoeOutcome from "./model/result/ShoeOutcome";
import PlayerGamer from "./model/gamer/PlayerGamer";
import BankerGamer from "./model/gamer/BankerGamer";
import Config from "./model/config/Config";
import Bet from "./model/bet/Bet";
declare type BetPretreat = (prevBet: Bet | undefined, prevOutcome: HandOutcome | undefined) => Bet;
declare type BetAftertreat = (hcome: HandOutcome) => void;
declare class Engine {
    private _player;
    private _banker;
    private _totalGames;
    private _shoe;
    private _prevHandOutcome;
    private _prevBet;
    private _config;
    private _handIndex;
    private _recycleShoe;
    private _isExhausted;
    private _hasShutdown;
    private _hasShoeCustomised;
    get isShoeExhausted(): boolean;
    set isShoeExhausted(value: boolean);
    shutdown(): void;
    powerOn(config?: Config): void;
    private config;
    initializeDecks(): void;
    playOneShoe(beforeBet?: BetPretreat, afterBet?: BetAftertreat): ShoeOutcome;
    private _parseComeout2BeadEntity;
    private recycleCardToShoe;
    private prepareShoe;
    resetGameIndex(): void;
    insertBlackCard(): void;
    playOneHand(): HandOutcome;
    private _parseTage;
    getRecycleShoe(): RecycleShoe;
    playerDraw(): void;
    bankerDraw(): void;
    getShoe(): BaccaratShoe;
    getPreviousHandOutcome(): HandOutcome | undefined;
    getPlayer(): PlayerGamer;
    getBanker(): BankerGamer;
    shouldPlayerDraw(currentScore: number): boolean;
    shouldBankerDraw(playerHit: boolean, bankerScore: number, playerLastScore: number): boolean;
    getGameIndex(): number;
    increaseGameIndex(): number;
    getPreviousBet(): Bet | undefined;
}
export default Engine;
