import { GobanInteractive, MoveCommand } from "./InteractiveBase";
import { GobanConfig } from "../GobanBase";
import { AdHocClock, AdHocPlayerClock, GobanSocket, GobanSocketEvents, GobanEngine, JGOFPlayerClock, JGOFTimeControl, ReviewMessage } from "../engine";
interface JGOFPlayerClockWithTimedOut extends JGOFPlayerClock {
    timed_out: boolean;
}
/**
 * This class serves as a functionality layer encapsulating the logic connection
 * that manages connections to the online-go.com servers.
 *
 * We have it as a separate base class simply to help with code organization
 * and to keep our Goban class size down.
 */
export declare abstract class OGSConnectivity extends GobanInteractive {
    sent_timed_out_message: boolean;
    protected socket: GobanSocket;
    protected socket_event_bindings: Array<[keyof GobanSocketEvents, () => void]>;
    protected connectToReviewSent?: boolean;
    constructor(config: GobanConfig, preloaded_data?: GobanConfig);
    protected post_config_constructor(): GobanEngine;
    destroy(): void;
    protected _socket_on<KeyT extends keyof GobanSocketEvents>(event: KeyT, cb: any): void;
    protected getClockDrift(): number;
    protected getNetworkLatency(): number;
    protected connect(server_socket: GobanSocket): void;
    protected disconnect(): void;
    sendChat(msg_body: string, type: string): void;
    /**
     * When we think our clock has runout, send a message to the server
     * letting it know. Otherwise we have to wait for the server grace
     * period to expire for it to time us out.
     */
    sendTimedOut(): void;
    syncReviewMove(msg_override?: ReviewMessage, node_text?: string): void;
    protected sendMove(mv: MoveCommand, cb?: () => void): boolean;
    giveReviewControl(player_id: number): void;
    saveConditionalMoves(): void;
    resign(): void;
    protected sendPendingResignation(): void;
    protected clearPendingResignation(): void;
    cancelGame(): void;
    protected annul(): void;
    pass(): void;
    requestUndo(): void;
    acceptUndo(): void;
    cancelUndo(): void;
    pauseGame(): void;
    resumeGame(): void;
    deleteBranch(): void;
    /** This is a callback that gets called by GobanEngine.setState to load
     * previously saved board state. */
    setState(): void;
    sendPreventStalling(winner: "black" | "white"): void;
    sendPreventEscaping(winner: "black" | "white", annul: boolean): void;
    performStoneRemovalAutoScoring(): void;
    acceptRemovedStones(): void;
    rejectRemovedStones(): void;
    getPlayerRelativeLatency(player_id: number): number;
    getLastReviewMessage(): ReviewMessage;
    setLastReviewMessage(m: ReviewMessage): void;
    setGameClock(original_clock: AdHocClock | null): void;
    protected computeNewPlayerClock(original_player_clock: Readonly<AdHocPlayerClock>, is_current_player: boolean, time_elapsed: number, time_control: Readonly<JGOFTimeControl>): JGOFPlayerClockWithTimedOut;
    setStrictSekiMode(tf: boolean): void;
}
export {};
