/// <reference types="node" />
export declare type Optional<T> = T | undefined;
export interface MsgRetry {
    msgtype: 'MSG_RETRY';
}
export interface MsgHint {
    msgtype: 'MSG_HINT';
    type: number;
    player: number;
    data: number;
}
export interface MsgWin {
    msgtype: 'MSG_WIN';
    player: number;
    type: number;
}
export interface MsgWaiting {
    msgtype: 'MSG_WAITING';
}
export interface MsgStart {
    msgtype: 'MSG_START';
    player_type: number;
    start_lp: Array<number>;
    deck_count: Array<{
        main_deck: number;
        extra_deck: number;
    }>;
}
export interface MsgUpdateData {
    msgtype: 'MSG_UPDATE_DATA';
    player: number;
    location: number;
    cards: Array<{
        query_flag: number;
        code: Optional<number>;
        info: Optional<{
            controller: number;
            location: number;
            position: number;
            sequence: number;
        }>;
        alias: Optional<number>;
        type: Optional<number>;
        level: Optional<number>;
        rank: Optional<number>;
        attribute: Optional<number>;
        race: Optional<number>;
        attack: Optional<number>;
        defense: Optional<number>;
        base_attack: Optional<number>;
        base_defense: Optional<number>;
        reason: Optional<number>;
        reason_card: Optional<{
            controller: number;
            location: number;
            position: number;
            sequence: number;
        }>;
        equip_card: Optional<{
            controller: number;
            location: number;
            position: number;
            sequence: number;
        }>;
        target_cards: Array<{
            controller: number;
            location: number;
            position: number;
            sequence: number;
        }>;
        overlay_cards: Array<number>;
        counters: Array<{
            type: number;
            count: number;
        }>;
        owner: Optional<number>;
        status: Optional<number>;
        lscale: Optional<number>;
        rscale: Optional<number>;
        link: Optional<number>;
        link_marker: Optional<number>;
    }>;
}
export interface MsgUpdateCard {
    msgtype: 'MSG_UPDATE_CARD';
    player: number;
    location: number;
    sequence: number;
    query_flag: number;
    code: Optional<number>;
    alias: Optional<number>;
    info: Optional<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    type: Optional<number>;
    level: Optional<number>;
    rank: Optional<number>;
    attribute: Optional<number>;
    race: Optional<number>;
    attack: Optional<number>;
    defense: Optional<number>;
    base_attack: Optional<number>;
    base_defense: Optional<number>;
    reason: Optional<number>;
    reason_card: Optional<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    equip_card: Optional<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    target_cards: Array<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    overlay_cards: Array<number>;
    counters: Array<{
        type: number;
        count: number;
    }>;
    owner: Optional<number>;
    status: Optional<number>;
    lscale: Optional<number>;
    rscale: Optional<number>;
    link: Optional<number>;
    link_marker: Optional<number>;
}
export interface MsgSelectBattleCmd {
    msgtype: 'MSG_SELECT_BATTLECMD';
    player: number;
    activatable: Array<{
        code_and_flags: number;
        controller: number;
        location: number;
        sequence: number;
        description: number;
    }>;
    attackable: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        directly: number;
    }>;
    to_main_phase2: number;
    to_end_phase: number;
}
export interface MsgSelectIdleCmd {
    msgtype: 'MSG_SELECT_IDLECMD';
    player: number;
    summonables: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
    special_summonables: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
    reposables: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
    setable_monsters: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
    setable_spells: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
    activatables: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        description: number;
    }>;
    to_battle_phase: number;
    to_end_phase: number;
    shuffle_hand: number;
}
export interface MsgSelectEffectyn {
    msgtype: 'MSG_SELECT_EFFECTYN';
    player: number;
    code: number;
    controller: number;
    location: number;
    sequence: number;
    ignore: number;
    desc: number;
}
export interface MsgSelectYesno {
    msgtype: 'MSG_SELECT_YESNO';
    player: number;
    desc: number;
}
export interface MsgSelectOption {
    msgtype: 'MSG_SELECT_OPTION';
    player: number;
    options: Array<number>;
}
export interface MsgSelectCard {
    msgtype: 'MSG_SELECT_CARD';
    player: number;
    non_cancelable: number;
    range: {
        minimal: number;
        maximal: number;
    };
    selections: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
    }>;
}
export interface MsgSelectUnselectCard {
    msgtype: 'MSG_SELECT_UNSELECT_CARD';
    player: number;
    should_continue: number;
    non_cancelable: number;
    range: {
        minimal: number;
        maximal: number;
    };
    not_selected: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
    }>;
    selected: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
    }>;
}
export interface MsgSelectChain {
    msgtype: 'MSG_SELECT_CHAIN';
    player: number;
    c1: number;
    spe_count: number;
    forced: number;
    hint0: number;
    hint1: number;
    activatables: Array<{
        flag: number;
        code: number;
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
        desc: number;
    }>;
}
export interface MsgSelectPlace {
    msgtype: 'MSG_SELECT_PLACE';
    player: number;
    minimal_selection: number;
    pattern: number;
}
export interface MsgSelectDisfield {
    msgtype: 'MSG_SELECT_DISFIELD';
    player: number;
    minimal_selection: number;
    pattern: number;
}
export interface MsgSelectPosition {
    msgtype: 'MSG_SELECT_POSITION';
    player: number;
    code: number;
    positions: number;
}
export interface MsgSelectTribute {
    msgtype: 'MSG_SELECT_TRIBUTE';
    player: number;
    non_cancelable: number;
    range: {
        minimal: number;
        maximal: number;
    };
    selections: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        operation_param: number;
    }>;
}
export interface MsgSelectCounter {
    msgtype: 'MSG_SELECT_COUNTER';
    player: number;
    type: number;
    count: number;
    selections: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        operation_param: number;
    }>;
}
export interface MsgSelectSum {
    msgtype: 'MSG_SELECT_SUM';
    select_mode: number;
    player: number;
    sum_up_to: number;
    range: {
        minimal: number;
        maximal: number;
    };
    includes: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        value: number;
    }>;
    optionals: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
        value: number;
    }>;
}
export interface MsgSortCard {
    msgtype: 'MSG_SORT_CARD';
    player: number;
    selection: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
}
export interface MsgSortChain {
    msgtype: 'MSG_SORT_CHAIN';
    player: number;
    selection: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
}
export interface MsgConfirmDeckTop {
    msgtype: 'MSG_CONFIRM_DECKTOP';
    player: number;
    cards: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
}
export interface MsgConfirmExtratop {
    msgtype: 'MSG_CONFIRM_EXTRATOP';
    player: number;
    cards: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
}
export interface MsgConfirmCards {
    msgtype: 'MSG_CONFIRM_CARDS';
    player: number;
    cards: Array<{
        code: number;
        controller: number;
        location: number;
        sequence: number;
    }>;
}
export interface MsgShuffleDeck {
    msgtype: 'MSG_SHUFFLE_DECK';
    player: number;
}
export interface MsgRefreshDeck {
    msgtype: 'MSG_REFRESH_DECK';
    player: number;
}
export interface MsgSwapGraveDeck {
    msgtype: 'MSG_SWAP_GRAVE_DECK';
    player: number;
}
export interface MsgNewTurn {
    msgtype: 'MSG_NEW_TURN';
    player: number;
}
export interface MsgShuffleHand {
    msgtype: 'MSG_SHUFFLE_HAND';
    player: number;
    cards: Array<number>;
}
export interface MsgShuffleExtra {
    msgtype: 'MSG_SHUFFLE_EXTRA';
    player: number;
    cards: Array<number>;
}
export interface MsgDraw {
    msgtype: 'MSG_DRAW';
    player: number;
    cards: Array<number>;
}
export interface MsgReverseDeck {
    msgtype: 'MSG_REVERSE_DECK';
}
export interface MsgDeckTop {
    msgtype: 'MSG_DECK_TOP';
    player: number;
    sequence: number;
    code: number;
}
export interface MsgShuffleSetCard {
    msgtype: 'MSG_SHUFFLE_SET_CARD';
    location: number;
    c1: number;
    pass1: Array<{
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    }>;
    pass2: Array<{
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    }>;
}
export interface MsgNewPhase {
    msgtype: 'MSG_NEW_PHASE';
    phase: number;
}
export interface MsgMove {
    msgtype: 'MSG_MOVE';
    code: number;
    previous: {
        controller: number;
        location: number;
        sequence: number;
        position: number;
    };
    current: {
        controller: number;
        location: number;
        sequence: number;
        position: number;
    };
    reason: number;
}
export interface MsgPosChange {
    msgtype: 'MSG_POS_CHANGE';
    code: number;
    current_controller: number;
    current_location: number;
    current_sequence: number;
    previous_position: number;
    current_position: number;
}
export interface MsgSet {
    msgtype: 'MSG_SET';
    code: number;
    controller: number;
    location: number;
    sequence: number;
    position: number;
}
export interface MsgSwap {
    msgtype: 'MSG_SWAP';
    first: {
        code: number;
        controller: number;
        location: number;
        sequence: number;
        position: number;
    };
    second: {
        code: number;
        controller: number;
        location: number;
        sequence: number;
        position: number;
    };
}
export interface MsgFieldDisabled {
    msgtype: 'MSG_FIELD_DISABLED';
    pattern: number;
}
export interface MsgSummoning {
    msgtype: 'MSG_SUMMONING';
    code: number;
    controller: number;
    location: number;
    sequence: number;
    position: number;
}
export interface MsgSpsummoning {
    msgtype: 'MSG_SPSUMMONING';
    code: number;
    controller: number;
    location: number;
    sequence: number;
    position: number;
}
export interface MsgFlipsummoning {
    msgtype: 'MSG_FLIPSUMMONING';
    code: number;
    controller: number;
    location: number;
    sequence: number;
    position: number;
}
export interface MsgSummoned {
    msgtype: 'MSG_SUMMONED';
}
export interface MsgSpsummoned {
    msgtype: 'MSG_SPSUMMONED';
}
export interface MsgFlipsummoned {
    msgtype: 'MSG_FLIPSUMMONED';
}
export interface MsgChaining {
    msgtype: 'MSG_CHAINING';
    code: number;
    previous_controller: number;
    previous_location: number;
    previous_sequence: number;
    subsequence: number;
    controller: number;
    location: number;
    sequence: number;
    desc: number;
    param: number;
}
export interface MsgChained {
    msgtype: 'MSG_CHAINED';
    param: number;
}
export interface MsgChainSolving {
    msgtype: 'MSG_CHAIN_SOLVING';
    param: number;
}
export interface MsgChainSolved {
    msgtype: 'MSG_CHAIN_SOLVED';
    param: number;
}
export interface MsgChainNegated {
    msgtype: 'MSG_CHAIN_NEGATED';
    param: number;
}
export interface MsgChainDisabled {
    msgtype: 'MSG_CHAIN_DISABLED';
    param: number;
}
export interface MsgChainEnd {
    msgtype: 'MSG_CHAIN_END';
}
export interface MsgCardSelected {
    msgtype: 'MSG_CARD_SELECTED';
}
export interface MsgBecomeTarget {
    msgtype: 'MSG_BECOME_TARGET';
    cards: Array<{
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
    }>;
}
export interface MsgRandomSelected {
    msgtype: 'MSG_RANDOM_SELECTED';
    player: number;
    cards: Array<{
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
    }>;
}
export interface MsgDamage {
    msgtype: 'MSG_DAMAGE';
    player: number;
    value: number;
}
export interface MsgRecover {
    msgtype: 'MSG_RECOVER';
    player: number;
    value: number;
}
export interface MsgLpUpdate {
    msgtype: 'MSG_LPUPDATE';
    player: number;
    value: number;
}
export interface MsgPayLpCost {
    msgtype: 'MSG_PAY_LPCOST';
    player: number;
    value: number;
}
export interface MsgEquip {
    msgtype: 'MSG_EQUIP';
    card: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
    target: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
}
export interface MsgCardTarget {
    msgtype: 'MSG_CARD_TARGET';
    card: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
    target: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
}
export interface MsgCancelTarget {
    msgtype: 'MSG_CANCEL_TARGET';
    card: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
    target: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
}
export interface MsgUnequip {
    msgtype: 'MSG_UNEQUIP';
    controller: number;
    location: number;
    sequence: number;
    ignore: number;
}
export interface MsgAddCounter {
    msgtype: 'MSG_ADD_COUNTER';
    type: number;
    controller: number;
    location: number;
    sequence: number;
    count: number;
}
export interface MsgRemoveCounter {
    msgtype: 'MSG_REMOVE_COUNTER';
    type: number;
    controller: number;
    location: number;
    sequence: number;
    count: number;
}
export interface MsgAttack {
    msgtype: 'MSG_ATTACK';
    attacker: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
    defender: {
        controller: number;
        location: number;
        sequence: number;
        ignore: number;
    };
}
export interface MsgBattle {
    msgtype: 'MSG_BATTLE';
    attacker: {
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
        atkvalue: number;
        defvalue: number;
        ignore: number;
    };
    defender: {
        controller: number;
        location: number;
        sequence: number;
        subsequence: number;
        atkvalue: number;
        defvalue: number;
        ignore: number;
    };
}
export interface MsgAttackDisabled {
    msgtype: 'MSG_ATTACK_DISABLED';
}
export interface MsgDamageStepStart {
    msgtype: 'MSG_DAMAGE_STEP_START';
}
export interface MsgDamageStepEnd {
    msgtype: 'MSG_DAMAGE_STEP_END';
}
export interface MsgMissedEffect {
    msgtype: 'MSG_MISSED_EFFECT';
    controller: number;
    location: number;
    sequence: number;
    subsequence: number;
    code: number;
}
export interface MsgTossCoin {
    msgtype: 'MSG_TOSS_COIN';
    player: number;
    tosses: Array<number>;
}
export interface MsgTossDice {
    msgtype: 'MSG_TOSS_DICE';
    player: number;
    tosses: Array<number>;
}
export interface MsgRockPaperScissors {
    msgtype: 'MSG_ROCK_PAPER_SCISSORS';
    player: number;
}
export interface MsgHandRes {
    msgtype: 'MSG_HAND_RES';
    result: number;
}
export interface MsgAnnounceRace {
    msgtype: 'MSG_ANNOUNCE_RACE';
    player: number;
    count: number;
    available: number;
}
export interface MsgAnnounceAttrib {
    msgtype: 'MSG_ANNOUNCE_ATTRIB';
    player: number;
    count: number;
    available: number;
}
export interface MsgAnnounceCard {
    msgtype: 'MSG_ANNOUNCE_CARD';
    player: number;
    declarable_type: number;
}
export interface MsgAnnounceNumber {
    msgtype: 'MSG_ANNOUNCE_NUMBER';
    player: number;
    announcements: Array<number>;
}
export interface MsgAnnounceCardFilter {
    msgtype: 'MSG_ANNOUNCE_CARD_FILTER';
    player: number;
    announcements: Array<number>;
}
export interface MsgCardHint {
    msgtype: 'MSG_CARD_HINT';
    controller: number;
    location: number;
    sequence: number;
    ignore: number;
    chtype: number;
    value: number;
}
export interface MsgPlayerHint {
    msgtype: 'MSG_PLAYER_HINT';
    player: number;
    chtype: number;
    value: number;
}
export interface MsgMatchKill {
    msgtype: 'MSG_MATCH_KILL';
    match_kill: number;
}
export interface MsgTagSwap {
    msgtype: 'MSG_TAG_SWAP';
    player: number;
    m: number;
    e: number;
    p: number;
    h: number;
}
export interface MsgReloadField {
    msgtype: 'MSG_RELOAD_FIELD';
    duel_rule: number;
    players: Array<{
        lp: number;
        mzone_cards: Array<Optional<{
            position: number;
            xyz_count: number;
        }>>;
        card_positions: Array<Optional<number>>;
        deck_count: number;
        hand_count: number;
        grave_count: number;
        banish_count: number;
        extra_count: number;
        extra_pendu_count: number;
        chains: Array<{
            code: number;
            previous_controller: number;
            previous_location: number;
            previous_sequence: number;
            previous_subsequence: number;
            current_controller: number;
            current_location: number;
            current_sequence: number;
            desc: number;
        }>;
    }>;
}
/**
 * message type
 */
export declare type Message = MsgRetry | MsgHint | MsgWin | MsgWaiting | MsgStart | MsgUpdateData | MsgUpdateCard | MsgSelectBattleCmd | MsgSelectIdleCmd | MsgSelectEffectyn | MsgSelectYesno | MsgSelectOption | MsgSelectCard | MsgSelectUnselectCard | MsgSelectChain | MsgSelectPlace | MsgSelectDisfield | MsgSelectPosition | MsgSelectTribute | MsgSelectCounter | MsgSelectSum | MsgSortCard | MsgSortChain | MsgConfirmDeckTop | MsgConfirmExtratop | MsgConfirmCards | MsgShuffleDeck | MsgRefreshDeck | MsgSwapGraveDeck | MsgNewTurn | MsgShuffleHand | MsgShuffleExtra | MsgDraw | MsgReverseDeck | MsgDeckTop | MsgShuffleSetCard | MsgNewPhase | MsgMove | MsgPosChange | MsgSet | MsgSwap | MsgFieldDisabled | MsgSummoning | MsgSpsummoning | MsgFlipsummoning | MsgSummoned | MsgSpsummoned | MsgFlipsummoned | MsgChaining | MsgChained | MsgChainSolving | MsgChainSolved | MsgChainNegated | MsgChainDisabled | MsgChainEnd | MsgCardSelected | MsgBecomeTarget | MsgRandomSelected | MsgDamage | MsgRecover | MsgLpUpdate | MsgPayLpCost | MsgEquip | MsgCardTarget | MsgCancelTarget | MsgUnequip | MsgAddCounter | MsgRemoveCounter | MsgAttack | MsgBattle | MsgAttackDisabled | MsgDamageStepStart | MsgDamageStepEnd | MsgMissedEffect | MsgTossCoin | MsgTossDice | MsgRockPaperScissors | MsgHandRes | MsgAnnounceRace | MsgAnnounceAttrib | MsgAnnounceCard | MsgAnnounceNumber | MsgAnnounceCardFilter | MsgCardHint | MsgPlayerHint | MsgMatchKill | MsgTagSwap | MsgReloadField;
/**
 * returned from `query_card()`
 */
export interface QueryCardChunk {
    query_flag: number;
    code: Optional<number>;
    info: Optional<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    alias: Optional<number>;
    type: Optional<number>;
    level: Optional<number>;
    rank: Optional<number>;
    attribute: Optional<number>;
    race: Optional<number>;
    attack: Optional<number>;
    defense: Optional<number>;
    base_attack: Optional<number>;
    base_defense: Optional<number>;
    reason: Optional<number>;
    reason_card: Optional<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    equip_card: Optional<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    target_cards: Array<{
        controller: number;
        location: number;
        position: number;
        sequence: number;
    }>;
    overlay_cards: Array<number>;
    counters: Array<{
        type: number;
        count: number;
    }>;
    owner: Optional<number>;
    status: Optional<number>;
    lscale: Optional<number>;
    rscale: Optional<number>;
    link: Optional<number>;
    link_marker: Optional<number>;
}
export declare function parseFieldCardQueryResult(buffer: Buffer): QueryCardChunk[];
export declare function parseCardQueryResult(buffer: Buffer): QueryCardChunk;
/**
 * parse bytes into message
 */
export declare function parseMessage(from: Buffer): Message[];
export declare const OPERATION: {
    SUCCESS: number;
    FAIL: number;
};
export declare const TRUE = 1;
export declare const FALSE = 0;
export declare const NULL = 0;
export declare const LOCATION: {
    DECK: number;
    HAND: number;
    MZONE: number;
    SZONE: number;
    GRAVE: number;
    REMOVED: number;
    EXTRA: number;
    OVERLAY: number;
    ONFIELD: number;
    FZONE: number;
    PZONE: number;
};
export declare const POS: {
    FACEUP_ATTACK: number;
    FACEDOWN_ATTACK: number;
    FACEUP_DEFENSE: number;
    FACEDOWN_DEFENSE: number;
    FACEUP: number;
    FACEDOWN: number;
    ATTACK: number;
    DEFENSE: number;
};
export declare const NO_FLIP_EFFECT = 65536;
export declare const FLIP_SET_AVAILABLE = 131072;
export declare const TYPE: {
    MONSTER: number;
    SPELL: number;
    TRAP: number;
    NORMAL: number;
    EFFECT: number;
    FUSION: number;
    RITUAL: number;
    TRAPMONSTER: number;
    SPIRIT: number;
    UNION: number;
    DUAL: number;
    TUNER: number;
    SYNCHRO: number;
    TOKEN: number;
    QUICKPLAY: number;
    CONTINUOUS: number;
    EQUIP: number;
    FIELD: number;
    COUNTER: number;
    FLIP: number;
    TOON: number;
    XYZ: number;
    PENDULUM: number;
    SPSUMMON: number;
    LINK: number;
};
export declare const ATTRIBUTE: {
    EARTH: number;
    WATER: number;
    FIRE: number;
    WIND: number;
    LIGHT: number;
    DARK: number;
    DEVINE: number;
};
export declare const RACE: {
    WARRIOR: number;
    SPELLCASTER: number;
    FAIRY: number;
    FIEND: number;
    ZOMBIE: number;
    MACHINE: number;
    AQUA: number;
    PYRO: number;
    ROCK: number;
    WINDBEAST: number;
    PLANT: number;
    INSECT: number;
    THUNDER: number;
    DRAGON: number;
    BEAST: number;
    BEASTWARRIOR: number;
    DINOSAUR: number;
    FISH: number;
    SEASERPENT: number;
    REPTILE: number;
    PSYCHO: number;
    DEVINE: number;
    CREATORGOD: number;
    WYRM: number;
    CYBERSE: number;
};
export declare const REASON: {
    DESTROY: number;
    RELEASE: number;
    TEMPORARY: number;
    MATERIAL: number;
    SUMMON: number;
    BATTLE: number;
    EFFECT: number;
    COST: number;
    ADJUST: number;
    LOST_TARGET: number;
    RULE: number;
    SPSUMMON: number;
    DISSUMMON: number;
    FLIP: number;
    DISCARD: number;
    RDAMAGE: number;
    RRECOVER: number;
    RETURN: number;
    FUSION: number;
    SYNCHRO: number;
    RITUAL: number;
    XYZ: number;
    REPLACE: number;
    DRAW: number;
    REDIRECT: number;
    LINK: number;
};
export declare const STATUS: {
    DISABLED: number;
    TO_ENABLE: number;
    TO_DISABLE: number;
    PROC_COMPLETE: number;
    SET_TURN: number;
    NO_LEVEL: number;
    BATTLE_RESULT: number;
    SPSUMMON_STEP: number;
    FORM_CHANGED: number;
    SUMMONING: number;
    EFFECT_ENABLED: number;
    SUMMON_TURN: number;
    DESTROY_CONFIRMED: number;
    LEAVE_CONFIRMED: number;
    BATTLE_DESTROYED: number;
    COPYING_EFFECT: number;
    CHAINING: number;
    SUMMON_DISABLED: number;
    ACTIVATE_DISABLED: number;
    EFFECT_REPLACED: number;
    FUTURE_FUSION: number;
    ATTACK_CANCELED: number;
    INITIALIZING: number;
    JUST_POS: number;
    CONTINUOUS_POS: number;
    FORBIDDEN: number;
    ACT_FROM_HAND: number;
    OPPO_BATTLE: number;
    FLIP_SUMMON_TURN: number;
    SPSUMMON_TURN: number;
};
export declare const QUERY: {
    CODE: number;
    POSITION: number;
    ALIAS: number;
    TYPE: number;
    LEVEL: number;
    RANK: number;
    ATTRIBUTE: number;
    RACE: number;
    ATTACK: number;
    DEFENSE: number;
    BASE_ATTACK: number;
    BASE_DEFENSE: number;
    REASON: number;
    REASON_CARD: number;
    EQUIP_CARD: number;
    TARGET_CARD: number;
    OVERLAY_CARD: number;
    COUNTERS: number;
    OWNER: number;
    STATUS: number;
    LSCALE: number;
    RSCALE: number;
    LINK: number;
};
export declare const LINK_MARKER: {
    BOTTOM_LEFT: number;
    BOTTOM: number;
    BOTTOM_RIGHT: number;
    LEFT: number;
    RIGHT: number;
    TOP_LEFT: number;
    TOP: number;
    TOP_RIGHT: number;
};
export declare const MSG: {
    RETRY: number;
    HINT: number;
    WAITING: number;
    START: number;
    WIN: number;
    UPDATE_DATA: number;
    UPDATE_CARD: number;
    REQUEST_DECK: number;
    SELECT_BATTLECMD: number;
    SELECT_IDLECMD: number;
    SELECT_EFFECTYN: number;
    SELECT_YESNO: number;
    SELECT_OPTION: number;
    SELECT_CARD: number;
    SELECT_CHAIN: number;
    SELECT_PLACE: number;
    SELECT_POSITION: number;
    SELECT_TRIBUTE: number;
    SORT_CHAIN: number;
    SELECT_COUNTER: number;
    SELECT_SUM: number;
    SELECT_DISFIELD: number;
    SORT_CARD: number;
    SELECT_UNSELECT_CARD: number;
    CONFIRM_DECKTOP: number;
    CONFIRM_CARDS: number;
    SHUFFLE_DECK: number;
    SHUFFLE_HAND: number;
    REFRESH_DECK: number;
    SWAP_GRAVE_DECK: number;
    SHUFFLE_SET_CARD: number;
    REVERSE_DECK: number;
    DECK_TOP: number;
    SHUFFLE_EXTRA: number;
    NEW_TURN: number;
    NEW_PHASE: number;
    CONFIRM_EXTRATOP: number;
    MOVE: number;
    POS_CHANGE: number;
    SET: number;
    SWAP: number;
    FIELD_DISABLED: number;
    SUMMONING: number;
    SUMMONED: number;
    SPSUMMONING: number;
    SPSUMMONED: number;
    FLIPSUMMONING: number;
    FLIPSUMMONED: number;
    CHAINING: number;
    CHAINED: number;
    CHAIN_SOLVING: number;
    CHAIN_SOLVED: number;
    CHAIN_END: number;
    CHAIN_NEGATED: number;
    CHAIN_DISABLED: number;
    CARD_SELECTED: number;
    RANDOM_SELECTED: number;
    BECOME_TARGET: number;
    DRAW: number;
    DAMAGE: number;
    RECOVER: number;
    EQUIP: number;
    LPUPDATE: number;
    UNEQUIP: number;
    CARD_TARGET: number;
    CANCEL_TARGET: number;
    PAY_LPCOST: number;
    ADD_COUNTER: number;
    REMOVE_COUNTER: number;
    ATTACK: number;
    BATTLE: number;
    ATTACK_DISABLED: number;
    DAMAGE_STEP_START: number;
    DAMAGE_STEP_END: number;
    MISSED_EFFECT: number;
    BE_CHAIN_TARGET: number;
    CREATE_RELATION: number;
    RELEASE_RELATION: number;
    TOSS_COIN: number;
    TOSS_DICE: number;
    ROCK_PAPER_SCISSORS: number;
    HAND_RES: number;
    ANNOUNCE_RACE: number;
    ANNOUNCE_ATTRIB: number;
    ANNOUNCE_CARD: number;
    ANNOUNCE_NUMBER: number;
    ANNOUNCE_CARD_FILTER: number;
    CARD_HINT: number;
    TAG_SWAP: number;
    RELOAD_FIELD: number;
    AI_NAME: number;
    SHOW_HINT: number;
    PLAYER_HINT: number;
    MATCH_KILL: number;
    CUSTOM_MSG: number;
};
export declare const HINT: {
    EVENT: number;
    MESSAGE: number;
    SELECTMSG: number;
    OPSELECTED: number;
    EFFECT: number;
    RACE: number;
    ATTRIB: number;
    CODE: number;
    NUMBER: number;
    CARD: number;
};
export declare const CHINT: {
    TURN: number;
    CARD: number;
    RACE: number;
    ATTRIBUTE: number;
    NUMBER: number;
    DESC_ADD: number;
    DESC_REMOVE: number;
};
export declare const PHINT_DESC: {
    ADD: number;
    REMOVE: number;
};
export declare const EDESC: {
    OPERATION: number;
    RESET: number;
};
export declare const OPCODE: {
    ADD: number;
    SUB: number;
    MUL: number;
    DIV: number;
    AND: number;
    OR: number;
    NEG: number;
    NOT: number;
    ISCODE: number;
    ISSETCARD: number;
    ISTYPE: number;
    ISRACE: number;
    ISATTRIBUTE: number;
};
export declare const PLAYER: {
    NONE: number;
    ALL: number;
};
export declare const PHASE: {
    DRAW: number;
    STANDBY: number;
    MAIN1: number;
    BATTLE_START: number;
    BATTLE_STEP: number;
    DAMAGE: number;
    DAMAGE_CAL: number;
    BATTLE: number;
    MAIN2: number;
    END: number;
};
export declare const DUEL: {
    TEST_MODE: number;
    ATTACK_FIRST_TURN: number;
    OBSOLETE_RULING: number;
    PSEUDO_SHUFFLE: number;
    TAG_MODE: number;
    SIMPLE_AI: number;
};
/**
 * questions to the players
 */
export declare type Question = MsgSelectBattleCmd | MsgSelectIdleCmd | MsgSelectEffectyn | MsgSelectYesno | MsgSelectOption | MsgSelectCard | MsgSelectUnselectCard | MsgSelectChain | MsgSelectPlace | MsgSelectDisfield | MsgSelectPosition | MsgSelectTribute | MsgSelectCounter | MsgSelectSum | MsgSortCard | MsgSortChain | MsgRockPaperScissors | MsgAnnounceRace | MsgAnnounceAttrib | MsgAnnounceCard | MsgAnnounceNumber | MsgAnnounceCardFilter;
/**
 * check if a given message is a 'question'
 */
export declare function isQuestionMessage(message: Message): message is Question;
