import { PlayerHighLow } from "./player";
import { DeckOfCards, validNumberOfCards } from "../../Deck";
import { Payoffs, Bet } from "./bet";
export declare class HigherOrLower {
    deck: DeckOfCards;
    dealer: PlayerHighLow;
    players: PlayerHighLow[];
    payoffRates: Payoffs;
    _numCardsPerHand: number;
    constructor(players?: PlayerHighLow[], numCardsPerHand?: number, payoffRates?: Payoffs, shuffleDeck?: boolean, numCardsInDeck?: validNumberOfCards);
    get numCardsPerHand(): number;
    /**
     * sets the number of cards per hand. valid values - [1, 2, 3]
     */
    set numCardsPerHand(value: number);
    /**
     * Function that returns `numCards` cards.
     * Side effect - removes cards from deck
     */
    drawCards(numCards: number): any[];
    /**
     * Method to deal cards to all players and dealer.
     *
     * Side effect - set value of:
     *  * `this.players[:].cards`
     *  * `this.dealer.cards`
     */
    deal(shuffleDeck?: boolean): void;
    /**
     * Method to set bets based on array of Bet objects
     *
     * Side effect - set value of:
     *  * `this.players[:].bet` - set bet
     *  * `this.players[:].credit - discount bet.ammount
     */
    setBets(bets: Bet[], decreaseCredit?: boolean): void;
    /**
     * Method do termine if a player is winner,
     * based on the players bet, and the players and dealers hands.
     */
    isWinner(player: PlayerHighLow): boolean;
    /**
     * Method to pay rewards to players that win the bet
     */
    payoff(accountForDiscount?: boolean): void;
    calculateOdds(): {
        high: number;
        low: number;
        draw: number;
    };
}
