declare namespace Core.Pattern { interface Command { execute(param: ParamType): void; } } declare namespace Core.Pattern { interface UndoManager { push(undoable: Undoable): any; undo(): any; isUndoable(): boolean; reset(): any; } } declare namespace Core.Pattern { interface Undoable { undo(onSuccess?: Function): void; } } declare namespace Core.Controller { interface BalanceController { updateBalance(credit: number, freeCredit: number): void; withdraw(credit: number): void; deposit(credit: number): void; releaseBetCredit(): void; } } declare namespace Core.Controller { interface BetController { placeBet(betPositionIndex: number): void; clearBet(betPositionIndex: number): void; clearAllBet(): void; doubleBet(): void; undo(): void; rebet(): void; reset(): void; } } declare namespace Core.Controller { interface BetLimitController { updateCurrentBetLimit(roomIndex: number): any; } } declare namespace Core.Controller { interface BetOptionController { updateListBetOption(listBetOption: number[], defaultBetOption: number): void; changeBetOption(betOption: number): void; } } declare namespace Core.Controller { interface CountdownController { startCountdown(duration: number, callbacks?: { onComplete?: Function; onTick?: Function; }): any; stop(): any; reset(): any; } } declare namespace Core.Controller { interface ErrorController { handleError(error: Symbol): void; handleServerError(errorCode: number): void; } } declare namespace Core.Controller { interface GameController { startNewRound(): void; confirmBet(): void; collectPoint(): void; } } declare namespace Core.Controller { interface HistoryController { updateHistory(listRoundRecord: Core.Model.RoundRecordModel[]): void; } } declare namespace Core.Controller { interface LoungeBetLimitController { updateBetLimitSetting(listBetLimitSetting: Core.Model.BetLimitModel[]): void; } } declare namespace Core.Controller { interface LoungeBetOptionController { updateBetOptionSetting(listBetOptionSetting: Model.ListBetOptionModel[]): void; } } declare namespace Core.Controller { interface OddsController { updateListOdds(listOdds: number[]): any; } } declare namespace Core.Controller { interface RoomController { joinRoom(roomIndex: number): void; leaveRoom(): void; } } declare namespace Core.Controller { interface RoundResultController { updateRoundResult(roundResult: RoundResult): void; } } declare namespace Core.Controller { interface StatisticController { addRoundResult(roundResult: RoundResult): void; addListRoundResult(listRoundResult: RoundResult[]): void; } } declare namespace Core.Controller { interface WinController { updateTotalWinPoint(totalWinPoint: number): void; } } declare namespace Core.EventSystem { interface EventListener { register(type: any, callback: Function): EventContract; } interface EventPublisher { emit(type: any): void; } interface EventContract { on(): void; off(): void; break(): void; } } declare namespace Core.Model { interface ApplicationConfigModel { sessionOCode: string; sessionHash: string; platform: string; port: number; address: string; currency: string; publisher: string; enabledSSL: boolean; } } declare namespace Core.Model { interface BalanceModel { credit: number; freeCredit: number; get totalCredit(): number; } } declare namespace Core.Model { interface BetConflictModel { listConflictBetPosition: number[]; } } declare namespace Core.Model { interface BetLimitModel { listMinBetPoint: number[]; listMaxBetPoint: number[]; minTotalBetPoint: number; maxTotalBetPoint: number; } } declare namespace Core.Model { interface BetModel { listBetPoint: number[]; } } declare namespace Core.Model { interface BetPositionModel { index: number; } } declare namespace Core.Model { interface BetSettingModel { listBetPoint: number[]; } } declare namespace Core.Model { interface CountdownModel { remainTime: number; } } declare namespace Core.Model { interface ErrorModel { errorType: Symbol; serverErrorCode: number; } } declare namespace Core.Model { interface HistoryModel { listRoundRecord: RoundRecordModel[]; } } declare namespace Core.Model { interface HTTPServerModel { url: string; } } declare namespace Core.Model { interface ListBetConflictModel { listBetConflict: BetConflictModel[]; } } declare namespace Core.Model { interface ListBetOptionModel { listBetOption: number[]; } } declare namespace Core.Model { interface ListOddsModel { listOdds: number[]; } } declare namespace Core.Model { interface ListPlayerModel { listPlayer: PlayerModel[]; } } declare namespace Core.Model { interface ListRoomBetLimitModel { listRoomBetLimit: BetLimitModel[]; } } declare namespace Core.Model { interface ListRoomBetOptionModel { listRoomBetOption: ListBetOptionModel[]; } } declare namespace Core.Model { interface PlayerModel { id: string; name: string; balance: number; } } declare namespace Core.Model { interface RoomIndexModel { roomIndex: number; } } declare namespace Core.Model { interface RoundRecordModel { roundId: string; betTime: Date; stake: number; win: number; profitLoss: number; roundResult: RoundResult; } } declare namespace Core.Model { interface RoundResultModel { roundResult: RoundResult; } } declare namespace Core.Model { interface SelectedBetOptionModel { selectedBetOption: number; } } declare namespace Core.Model { interface StatisticModel { listRoundResult: RoundResult[]; } } declare namespace Core.Model { interface WinModel { totalWinPoint: number; } } declare namespace Core.Network { interface Connector { connectToServer(): void; joinRoom(roomIndex: number): void; startNewRound(): void; sendConfirmBet(betArray: number[]): void; collectPoint(): void; } } declare namespace Core.Network { interface DataProcessor { process(data: any): void; } } declare namespace Core.Network { interface NetworkController { connectToServer(): any; disconnectFromServer(): any; } } declare namespace Core.Network { interface NetworkRequest { send(data?: any): void; } } declare namespace Core.Network { interface NetworkResponse { onResponse(data?: any): any; } } declare namespace Core.Parameter { interface BetConstantParameter { get DEFAULT_LIST_BET_OPTION(): number[]; } } declare namespace Core.Parameter { interface GameConstantParameter { get BET_POSITION_COUNT(): number; } } declare namespace Core.Service { interface AvailableBetCalculator { getAvailableBet(betPositionIndex: number): number; } } declare namespace Core.Service { interface Validator { validate(): boolean; } } declare namespace Core.State { interface BetControllerStateContext extends StateContext { } } declare namespace Core.State { interface BetControllerStateMachine extends StateMachine { } } declare namespace Core.State { interface BetControllerState extends Controller.BetController, State { } } declare namespace Core.State { interface BetOptionControllerStateContext extends StateContext { } } declare namespace Core.State { interface BetOptionControllerStateMachine extends StateMachine { } } declare namespace Core.State { interface BetOptionControllerState extends Controller.BetOptionController, State { } } declare namespace Core.State { interface GameControllerStateContext extends StateContext { } } declare namespace Core.State { interface GameControllerStateMachine extends StateMachine { } } declare namespace Core.State { interface GameControllerState extends Controller.GameController, State { } } declare namespace Core.State { interface RoomControllerStateContext extends StateContext { } } declare namespace Core.State { interface RoomControllerStateMachine extends StateMachine { } } declare namespace Core.State { interface RoomControllerState extends Controller.RoomController, State { } } declare namespace Core.State { interface StateContext { setState(state: T): void; getState(): T; } } declare namespace Core.State { interface StateMachine { changeState(event: symbol): void; getState(): T; } interface StateMachineEventManager { registerStateMachine(stateMachine: StateMachine): void; unregisterStateMachine(stateMachine: StateMachine): void; emit(event: symbol): void; } } declare namespace Core.State { interface StateTransition { from?: new (...arg: any[]) => T; event: symbol; to: new (...arg: any[]) => T; } type ListStateTransition = StateTransition[]; interface ListStateTransitionAssertor { assert(listStateTransition: ListStateTransition): any; } interface ListStateTransitionCreator { create(): ListStateTransition; } } declare namespace Core.State { interface State { enter(): void; leave(): void; } } declare namespace Core.View { interface ComponentView { render(): void; } interface GameView { addComponent(component: ComponentView): void; update(): void; } }