/**
 * This file defines the `TicTacToe` smart contract and the helpers it needs.
 */
import { Field, State, PublicKey, SmartContract, Bool, Signature } from 'o1js';
export { Board, TicTacToe };
declare const OptionalBool_base: {
    new (isSome: boolean | Bool, value: import("o1js/dist/node/lib/provable/bool").Bool): {
        toFields(): import("o1js/dist/node/lib/provable/field").Field[];
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    };
    _isStruct: true;
    toFields: (value: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) => import("o1js/dist/node/lib/provable/field").Field[];
    toAuxiliary: (value?: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    } | undefined) => any[];
    fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[], aux: any[]) => {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    };
    sizeInFields(): number;
    check: (value: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) => void;
    toValue: (x: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) => {
        isSome: boolean;
        value: any;
    };
    fromValue: ((x: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    } | {
        isSome: boolean;
        value: any;
    }) => {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) & ((value: {
        isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
        value: any;
    }) => {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    });
    toCanonical?: ((x: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) => {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) | undefined;
    toInput: (x: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) => {
        fields?: Field[] | undefined;
        packed?: [Field, number][] | undefined;
    };
    toJSON: (x: {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    }) => {
        isSome: boolean;
        value: {
            toFields: {};
            toAuxiliary: {};
            fromFields: {};
            sizeInFields: {};
            check: {};
            toValue: {};
            fromValue: {};
            toCanonical?: {} | null | undefined;
        };
    };
    fromJSON: (x: {
        isSome: boolean;
        value: {
            toFields: {};
            toAuxiliary: {};
            fromFields: {};
            sizeInFields: {};
            check: {};
            toValue: {};
            fromValue: {};
            toCanonical?: {} | null | undefined;
        };
    }) => {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    };
    empty: () => {
        isSome: import("o1js/dist/node/lib/provable/bool").Bool;
        value: import("o1js/dist/node/lib/provable/bool").Bool;
    };
};
declare class OptionalBool extends OptionalBool_base {
}
declare class Board {
    board: OptionalBool[][];
    constructor(serializedBoard: Field);
    serialize(): Field;
    update(x: Field, y: Field, playerToken: Bool): void;
    printState(): void;
    checkWinner(): Bool;
}
declare class TicTacToe extends SmartContract {
    board: State<import("o1js/dist/node/lib/provable/field").Field>;
    nextIsPlayer2: State<import("o1js/dist/node/lib/provable/bool").Bool>;
    gameDone: State<import("o1js/dist/node/lib/provable/bool").Bool>;
    player1: State<PublicKey>;
    player2: State<PublicKey>;
    init(): void;
    startGame(player1: PublicKey, player2: PublicKey): Promise<void>;
    play(pubkey: PublicKey, signature: Signature, x: Field, y: Field): Promise<void>;
}
