import { EOGStatus } from '../EOGStatus';
import { SGResult } from '../records/SGResult';
import { CubeGameListener } from './CubeGameListener';
import { CBAction, CBInPlay, CBOpening, CBResponse, CBState, CBToRoll } from './CubeGameState';
/**
 * キューブの状態のみを管理するDispatcher
 */
export declare type CubeGameDispatcher = {
    doStartCubeGame: () => (listener: Partial<Pick<CubeGameListener, 'onCubeGameStarted'>>) => void;
    doDouble: (state: CBAction) => (listeners: Partial<Pick<CubeGameListener, 'onDoubled'>>) => void;
    doTake: (state: CBResponse) => (listeners: Partial<Pick<CubeGameListener, 'onDoubleAccepted'>>) => void;
    doPass: (state: CBResponse) => (listeners: Partial<Pick<CubeGameListener, 'onEndOfCubeGame'>>) => void;
    doStartCubeAction: (state: CBInPlay, skipCubeAction: (cbState: CBInPlay) => boolean) => (listeners: Partial<Pick<CubeGameListener, 'onCubeActionStarted' | 'onCubeActionSkipped' | 'onAwaitCubeAction'>>) => void;
    doSkipCubeAction: (state: CBAction) => (listeners: Partial<Pick<CubeGameListener, 'onCubeActionSkipped'>>) => void;
    doStartOpeningCheckerPlay: (state: CBOpening, isRed: boolean) => (listeners: Partial<Pick<CubeGameListener, 'onAwaitCheckerPlay'>>) => void;
    doStartCheckerPlay: (state: CBAction | CBToRoll) => (listeners: Partial<Pick<CubeGameListener, 'onAwaitCheckerPlay'>>) => void;
    doEndOfCubeGame: (state: CBState, result: SGResult, eogStatus: EOGStatus) => (listeners: Partial<Pick<CubeGameListener, 'onEndOfCubeGame'>>) => void;
};
export declare function concatCBListeners(base: Partial<CubeGameListener>, ...listeners: Partial<CubeGameListener>[]): Partial<CubeGameListener>;
export declare function setCBStateListener(defaultState: CBState, setCBState: (cbState: CBState) => void): CubeGameListener;
export declare const cubeGameDispatcher: CubeGameDispatcher;
//# sourceMappingURL=CubeGameDispatcher.d.ts.map