/// <reference path="lib/poker.commanding.api.d.ts" />
/// <reference types="jquery" />
export interface JQueryTypedCallback<T> {
    (data: T, textStatus: string, xhr: JQueryXHR): void;
}
export declare enum TournamentStatus {
    Pending = 0,
    RegistrationStarted = 1,
    RegistrationCancelled = 2,
    SettingUp = 3,
    WaitingTournamentStart = 4,
    Started = 5,
    Completed = 6,
    Cancelled = 7,
    LateRegistration = 8,
}
/**
* Represents player status in the tournament.
*/
export declare enum TournamentPlayerStatus {
    /**
    * Player registered to play in the tournament
    */
    Registered = 0,
    /**
    * Player cancel his registration.
    */
    RegistrationCancelled = 1,
    /**
    * Player is currently playing in the tournament.
    */
    Playing = 2,
    /**
    * Player complete playing in the tournament.
    */
    Completed = 3,
}
export declare enum TournamentOptionsEnum {
    None = 0,
    HasBuyIn = 1,
    HasEntryFee = 2,
    HasRebuy = 4,
    HasAddon = 8,
    RebuyGoesToPrizePool = 16,
    RebuyGoesToCasino = 32,
    AddonGoesToPrizePool = 64,
    AddonGoesToCasino = 128,
}
export interface TournamentPlayerStateDefinition {
    TournamentId: number;
    TableId: number;
    Status: TournamentStatus;
}
export interface LobbyTournamentItem {
    TournamentId: number;
    Type: number;
    TournamentName: string;
    IsAuthorized: boolean;
    IsRegistered: boolean;
    CurrencyId: number;
    RegistrationStartDate: string;
    RegistrationEndDate: string;
    StartDate: string;
    EndDate: string;
    FinishDate: string;
    JoinedPlayers: number;
    MinPlayers: number;
    MaxPlayers: number;
    PrizeAmount: number;
    Status: TournamentStatus;
    PrizeCurrencyId: number;
    BuyInAmount: number;
    EntryMoneyAmount: number;
    IsPaused: boolean;
}
export interface TournamentDefinition {
    TournamentId: number;
    TournamentName: string;
    Description: string;
    Type: number;
    CurrencyId: number;
    PrizeCurrencyId: number;
    RegistrationStartDate: string;
    RegistrationEndDate: string;
    StartDate: string;
    EndDate: string;
    FinishDate: string;
    JoinedPlayers: number;
    TournamentTables: TournamentTableDefinition[];
    TournamentPlayers: TournamentPlayerDefinition[];
    BetLevel: number;
    PrizeAmount: number;
    CollectedPrizeAmount: number;
    JoinFee: number;
    BuyIn: number;
    StartingChipsAmount: number;
    WellKnownBetStructure: number;
    WellKnownPrizeStructure: number;
    BlindUpdateTime: number;
    IsRebuyAllowed: boolean;
    RebuyPrice: number;
    RebuyFee: number;
    RebuyPeriodTime: number;
    IsAddonAllowed: boolean;
    AddonPrice: number;
    AddonFee: number;
    AddonPeriodTime: number;
    PauseTimeout: number;
    Options: TournamentOptionsEnum;
    MaximumAmountForRebuy: number;
    IsRegistered: boolean;
    ChipsAddedAtReBuy: number;
    ChipsAddedAtDoubleReBuy: number;
    Status: TournamentStatus;
    IsPaused: boolean;
    MinPlayers: number;
    MaxPlayers: number;
}
export interface TournamentPlayerDefinition {
    TournamentId: number;
    TournamentName: string;
    PlayerId: number;
    PlayerName: string;
    TableId: number;
    Status: TournamentPlayerStatus;
    Prize: number;
    Stack: number;
}
export declare namespace OnlinePoker {
    namespace Commanding {
        namespace API {
            enum MoneyType {
                Tenge = 1,
                GameChips = 2,
            }
            var logging: boolean;
            var version: number;
            class WebApiProxy {
                host: string;
                baseName: string;
                baseUrl: string;
                timeout: number;
                constructor(host: string, baseName: string);
                Call(methodName: string, parameters: any, successCallback: JQueryTypedCallback<any>): JQueryXHR;
                SimpleCall<T>(methodName: string, successCallback: JQueryTypedCallback<T>): JQueryPromise<T>;
                Log(api: any, msg: any): void;
            }
            class Chat extends WebApiProxy {
                constructor(host: any);
                Send(tableId: number, message: string, callback: JQueryTypedCallback<any>): JQueryXHR;
            }
            class Message extends WebApiProxy {
                constructor(host: any);
                Send(recepient: number, subject: string, body: string, callback: JQueryTypedCallback<any>): JQueryXHR;
                GetInboxMessages(page: number, pageSize: number, filter: number, sortOrder: boolean, callback: JQueryTypedCallback<any>): JQueryXHR;
                GetSentMessages(page: number, pageSize: number, filter: number, sortOrder: boolean, callback: JQueryTypedCallback<any>): JQueryXHR;
                GetMessage(id: number, callback: JQueryTypedCallback<any>): JQueryXHR;
            }
            class Game extends WebApiProxy {
                constructor(host: any);
                GetTables(fullTables: any, privateTables: any, maxPlayers: any, betLevels: any, moneyType: any, limitType: any, callback?: (data: ApiResult<LobbyTableItem[]>, textStatus: string, jqXHR: JQueryXHR) => any): JQueryPromise<ApiResult<LobbyTableItem[]>>;
                GetTable(tableId: number, callback?: any): JQueryPromise<ApiResult<GameTableModel>>;
                GetSitingTables(callback?: JQueryTypedCallback<ApiResult<number[]>>): JQueryPromise<ApiResult<number[]>>;
                Sit(tableId: any, seat: any, amount: any, callback: any): JQueryXHR;
                SitAnywhere(tableId: any, amount: any, callback: any): JQueryXHR;
                Standup(tableId: any, callback: any): JQueryXHR;
                Fold(tableId: any, callback: any): JQueryXHR;
                CheckOrCall(tableId: any, callback: any): JQueryXHR;
                BetOrRaise(tableId: any, amount: any, callback: any): JQueryXHR;
                ForceJoinGame(tableId: number, callback?: any): JQueryXHR;
                WaitBigBlind(tableId: number, callback?: any): JQueryXHR;
                AddBalance(tableId: any, amount: any, callback: any): JQueryXHR;
                SitOut(tableId: number, callback?: any): JQueryXHR;
                ForceSitout(tableId: number, callback?: any): JQueryXHR;
                ComeBack(tableId: number, callback?: any): JQueryXHR;
                SetOpenCardsParameters(tableId: number, openCardsAutomatically: boolean, callback: any): JQueryXHR;
            }
            class Tournament extends WebApiProxy {
                constructor(host: any);
                GetTournaments(prizeCurrency: any, tournamentType: any, speed: any, buyin: any, maxPlayers: any, callback?: (data: ApiResult<LobbyTournamentItem[]>, textStatus: string, jqXHR: JQueryXHR) => void): JQueryPromise<ApiResult<LobbyTournamentItem[]>>;
                GetTournament(tournamentId: any, callback?: JQueryTypedCallback<ApiResult<TournamentDefinition>>): JQueryPromise<ApiResult<TournamentDefinition>>;
                Register(tournamentId: any, callback?: (data: StatusResponse, textStatus: string, jqXHR: JQueryXHR) => void): JQueryXHR;
                CancelRegistration(tournamentId: any, callback?: (data: StatusResponse, textStatus: string, jqXHR: JQueryXHR) => void): JQueryXHR;
                Rebuy(tournamentId: number, double: boolean, callback?: JQueryTypedCallback<StatusResponse>): JQueryPromise<StatusResponse>;
                Addon(tournamentId: number, callback?: (data: StatusResponse, textStatus: string, jqXHR: JQueryXHR) => void): JQueryPromise<StatusResponse>;
                GetRegisteredTournamentsStatus(callback?: JQueryTypedCallback<ApiResult<TournamentPlayerStateDefinition[]>>): JQueryPromise<ApiResult<TournamentPlayerStateDefinition[]>>;
            }
            class Account extends WebApiProxy {
                constructor(host: any);
                ActivateAccount(login: any, token: any, callback: any): JQueryXHR;
                Logout(callback: any): JQueryXHR;
                Authenticate(login: any, password: any, rememberMe: any, callback?: JQueryTypedCallback<AuthenticateResponse>): JQueryPromise<AuthenticateResponse>;
                CancelAccountActivation(login: any, token: any, callback: any): JQueryXHR;
                ChangePassword(oldPassword: any, newPassword: any, callback?: any): JQueryXHR;
                GetPersonalAccount(callback?: any): JQueryPromise<ApiResult<PersonalAccountData>>;
                GetPlayerAccountHistory(fromDate: any, toDate: any, fromAmount: any, toAmount: any, operationType: any, callback: any): JQueryXHR;
                GetPlayerDefinition(callback?: (data: ApiResult<PlayerDefinition>, textStatus: string, jqXHR: JQueryXHR) => void): JQueryPromise<ApiResult<PlayerDefinition>>;
                PutWithdrawalRequest(type: any, amount: any, parameters: any, callback: any): JQueryXHR;
                Register(login: any, email: any, password: any, firstName: any, lastName: any, patronymicName: any, country: any, city: any, additionalProperties: any, image: any, callback: any): JQueryXHR;
                RequestResetPassword(login: any, email: any, callback: any): JQueryXHR;
                ResetAvatar(callback: any): JQueryXHR;
                ResetPassword(token: any, newPassword: any, callback: any): JQueryXHR;
                SetAvatarUrl(url: any, callback?: any): JQueryXHR;
                UpdatePlayerProfile(firstName: any, lastName: any, patronymicName: any, email: any, country: any, city: any, image: any, callback: any): void;
                UploadAvatar(image: any, callback?: any): void;
                GetBestPlayers(callback?: any): JQueryXHR;
                RegisterGuest(callback?: any): JQueryPromise<RegisterGuestResponse>;
            }
            class Metadata extends WebApiProxy {
                constructor(host: any);
                GetServerLayout(callback?: any): JQueryXHR;
                GetDefaultAvatars(callback?: any): JQueryXHR;
                GetWellKnownBetStructure(callback?: any): JQueryXHR;
                GetWellKnownPrizeStructure(callback?: any): JQueryXHR;
                GetNews(callback?: any): JQueryXHR;
                GetOnlinePlayers(callback?: any): JQueryPromise<ApiResult<number[]>>;
                GetBanners(format: any, callback?: any): JQueryXHR;
                /**
                * Request server date.
                * @param callback A callback function that is executed if the request succeeds.
                */
                GetDate(callback?: any): JQueryPromise<number>;
                /**
                * Perform version check.
                * @param callback A callback function that is executed if the request succeeds.
                */
                VersionCheck(callback?: JQueryTypedCallback<any>): JQueryPromise<VersionCheckResponse>;
            }
            class Support extends WebApiProxy {
                constructor(host: any);
                ContactUs(fullName: string, email: string, subject: string, message: string, callback?: JQueryTypedCallback<StatusResponse>): JQueryPromise<StatusResponse>;
            }
        }
    }
}
