import { ResignOffer } from '../ResignOffer';
/**
 * 降参状態を示す：ここでは降参を申し出ているか、何もないかの状態しかなく、
 * どの条件で降参するかを選択するための状態遷移は、U.I.側の管理に委ねている
 */
export declare type ResignState = RSNone | RSOffered;
/** 降参が始まっていない状態を表す：意味のある情報は保持していないので、
 * 個別にオブジェクトは生成せず、シングルトンであるRSNONEを使用する */
export declare type RSNone = {
    tag: 'RSNone';
    doOfferResignRed(offer: ResignOffer): RSOfferedWhite;
    doOfferResignWhite(offer: ResignOffer): RSOfferedRed;
};
export declare type RSOffered = RSOfferedWhite | RSOfferedRed;
declare type _RSOffered = {
    tag: 'RSOffered';
    offer: ResignOffer;
};
export declare type RSOfferedWhite = _RSOffered & {
    isRed: false;
};
export declare type RSOfferedRed = _RSOffered & {
    isRed: true;
};
export declare const RSNONE: RSNone;
export declare function rsOfferedRed(offer: ResignOffer): RSOfferedRed;
export declare function rsOfferedWhite(offer: ResignOffer): RSOfferedWhite;
export {};
//# sourceMappingURL=ResignState.d.ts.map