import { Context, Dict, z } from 'koishi';
import { Corridor, Game, Player } from 'koishi-plugin-lobby';
import { Character, Identity, Weather } from './utils';
import IkuAction from './action/iku';
import YukariAction from './action/yukari';
import RemiliaAction from './action/remilia';
import MamizouAction from './action/mamizou';
import DoremyAction from './action/doremy';
import NingenAction from './action/ningen';
import SageAction from './action/sage';
import ExileAction from './action/exile';
import DeathAction from './action/death';
export type CountdownTag = never | 'init' | 'confirm' | 'death' | 'ningen' | 'speech' | 'vote' | 'last-words' | 'show-kill' | 'sage-order' | 'sage-transfer';
export type Phase = 'init' | 'Vote' | 'Day' | 'Night';
export declare class WerewolfGame extends Game<WerewolfGame.Options> {
    dayCount: number;
    weather: Weather;
    seats: Character[];
    chars: Map<Player, Character>;
    winner: Identity.Winner;
    iku: IkuAction;
    sage: SageAction;
    exile: ExileAction;
    death: DeathAction;
    ningen: NingenAction;
    remilia: RemiliaAction;
    mamizou: MamizouAction;
    yukari: YukariAction;
    doremy: DoremyAction;
    getChar(identity: Identity): Character;
    validate(): Promise<void>;
    leave(player: Player): void;
    init(): Promise<void>;
    start(): Promise<void>;
    isNingenWinner(): boolean;
    check(): void;
    private announce;
    private dayAction;
    nightAction(): Promise<void>;
}
export declare namespace WerewolfGame {
    interface Options {
        sage?: boolean;
        weather?: boolean;
        timeout?: Dict<number>;
    }
}
declare class RPSCorridor extends Corridor {
    config: RPSCorridor.Config;
    factory: typeof WerewolfGame;
    constructor(ctx: Context, config: RPSCorridor.Config);
}
declare namespace RPSCorridor {
    interface Config {
    }
    const Config: z<Config>;
}
export default RPSCorridor;
