import * as $protobuf from "protobufjs";
import Long = require("long");
/** Properties of a NtfKickOutUser. */
export interface INtfKickOutUser {

    /** NtfKickOutUser code */
    code?: (ErrCode|null);
}

/** Represents a NtfKickOutUser. */
export class NtfKickOutUser implements INtfKickOutUser {

    /**
     * Constructs a new NtfKickOutUser.
     * @param [properties] Properties to set
     */
    constructor(properties?: INtfKickOutUser);

    /** NtfKickOutUser code. */
    public code: ErrCode;

    /**
     * Creates a new NtfKickOutUser instance using the specified properties.
     * @param [properties] Properties to set
     * @returns NtfKickOutUser instance
     */
    public static create(properties?: INtfKickOutUser): NtfKickOutUser;

    /**
     * Encodes the specified NtfKickOutUser message. Does not implicitly {@link NtfKickOutUser.verify|verify} messages.
     * @param message NtfKickOutUser message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encode(message: INtfKickOutUser, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Encodes the specified NtfKickOutUser message, length delimited. Does not implicitly {@link NtfKickOutUser.verify|verify} messages.
     * @param message NtfKickOutUser message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encodeDelimited(message: INtfKickOutUser, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Decodes a NtfKickOutUser message from the specified reader or buffer.
     * @param reader Reader or buffer to decode from
     * @param [length] Message length if known beforehand
     * @returns NtfKickOutUser
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): NtfKickOutUser;

    /**
     * Decodes a NtfKickOutUser message from the specified reader or buffer, length delimited.
     * @param reader Reader or buffer to decode from
     * @returns NtfKickOutUser
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): NtfKickOutUser;

    /**
     * Verifies a NtfKickOutUser message.
     * @param message Plain object to verify
     * @returns `null` if valid, otherwise the reason why it is not
     */
    public static verify(message: { [k: string]: any }): (string|null);

    /**
     * Creates a NtfKickOutUser message from a plain object. Also converts values to their respective internal types.
     * @param object Plain object
     * @returns NtfKickOutUser
     */
    public static fromObject(object: { [k: string]: any }): NtfKickOutUser;

    /**
     * Creates a plain object from a NtfKickOutUser message. Also converts values to other types if specified.
     * @param message NtfKickOutUser
     * @param [options] Conversion options
     * @returns Plain object
     */
    public static toObject(message: NtfKickOutUser, options?: $protobuf.IConversionOptions): { [k: string]: any };

    /**
     * Converts this NtfKickOutUser to JSON.
     * @returns JSON object
     */
    public toJSON(): { [k: string]: any };

    /**
     * Gets the default type url for NtfKickOutUser
     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns The default type url
     */
    public static getTypeUrl(typeUrlPrefix?: string): string;
}

/** Properties of a ReqEnterRoom. */
export interface IReqEnterRoom {
}

/** Represents a ReqEnterRoom. */
export class ReqEnterRoom implements IReqEnterRoom {

    /**
     * Constructs a new ReqEnterRoom.
     * @param [properties] Properties to set
     */
    constructor(properties?: IReqEnterRoom);

    /**
     * Creates a new ReqEnterRoom instance using the specified properties.
     * @param [properties] Properties to set
     * @returns ReqEnterRoom instance
     */
    public static create(properties?: IReqEnterRoom): ReqEnterRoom;

    /**
     * Encodes the specified ReqEnterRoom message. Does not implicitly {@link ReqEnterRoom.verify|verify} messages.
     * @param message ReqEnterRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encode(message: IReqEnterRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Encodes the specified ReqEnterRoom message, length delimited. Does not implicitly {@link ReqEnterRoom.verify|verify} messages.
     * @param message ReqEnterRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encodeDelimited(message: IReqEnterRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Decodes a ReqEnterRoom message from the specified reader or buffer.
     * @param reader Reader or buffer to decode from
     * @param [length] Message length if known beforehand
     * @returns ReqEnterRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): ReqEnterRoom;

    /**
     * Decodes a ReqEnterRoom message from the specified reader or buffer, length delimited.
     * @param reader Reader or buffer to decode from
     * @returns ReqEnterRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): ReqEnterRoom;

    /**
     * Verifies a ReqEnterRoom message.
     * @param message Plain object to verify
     * @returns `null` if valid, otherwise the reason why it is not
     */
    public static verify(message: { [k: string]: any }): (string|null);

    /**
     * Creates a ReqEnterRoom message from a plain object. Also converts values to their respective internal types.
     * @param object Plain object
     * @returns ReqEnterRoom
     */
    public static fromObject(object: { [k: string]: any }): ReqEnterRoom;

    /**
     * Creates a plain object from a ReqEnterRoom message. Also converts values to other types if specified.
     * @param message ReqEnterRoom
     * @param [options] Conversion options
     * @returns Plain object
     */
    public static toObject(message: ReqEnterRoom, options?: $protobuf.IConversionOptions): { [k: string]: any };

    /**
     * Converts this ReqEnterRoom to JSON.
     * @returns JSON object
     */
    public toJSON(): { [k: string]: any };

    /**
     * Gets the default type url for ReqEnterRoom
     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns The default type url
     */
    public static getTypeUrl(typeUrlPrefix?: string): string;
}

/** Properties of a RspEnterRoom. */
export interface IRspEnterRoom {

    /** RspEnterRoom code */
    code?: (ErrCode|null);

    /** RspEnterRoom gameId */
    gameId?: (number|null);

    /** RspEnterRoom roomType */
    roomType?: (number|null);
}

/** Represents a RspEnterRoom. */
export class RspEnterRoom implements IRspEnterRoom {

    /**
     * Constructs a new RspEnterRoom.
     * @param [properties] Properties to set
     */
    constructor(properties?: IRspEnterRoom);

    /** RspEnterRoom code. */
    public code: ErrCode;

    /** RspEnterRoom gameId. */
    public gameId: number;

    /** RspEnterRoom roomType. */
    public roomType: number;

    /**
     * Creates a new RspEnterRoom instance using the specified properties.
     * @param [properties] Properties to set
     * @returns RspEnterRoom instance
     */
    public static create(properties?: IRspEnterRoom): RspEnterRoom;

    /**
     * Encodes the specified RspEnterRoom message. Does not implicitly {@link RspEnterRoom.verify|verify} messages.
     * @param message RspEnterRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encode(message: IRspEnterRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Encodes the specified RspEnterRoom message, length delimited. Does not implicitly {@link RspEnterRoom.verify|verify} messages.
     * @param message RspEnterRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encodeDelimited(message: IRspEnterRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Decodes a RspEnterRoom message from the specified reader or buffer.
     * @param reader Reader or buffer to decode from
     * @param [length] Message length if known beforehand
     * @returns RspEnterRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): RspEnterRoom;

    /**
     * Decodes a RspEnterRoom message from the specified reader or buffer, length delimited.
     * @param reader Reader or buffer to decode from
     * @returns RspEnterRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): RspEnterRoom;

    /**
     * Verifies a RspEnterRoom message.
     * @param message Plain object to verify
     * @returns `null` if valid, otherwise the reason why it is not
     */
    public static verify(message: { [k: string]: any }): (string|null);

    /**
     * Creates a RspEnterRoom message from a plain object. Also converts values to their respective internal types.
     * @param object Plain object
     * @returns RspEnterRoom
     */
    public static fromObject(object: { [k: string]: any }): RspEnterRoom;

    /**
     * Creates a plain object from a RspEnterRoom message. Also converts values to other types if specified.
     * @param message RspEnterRoom
     * @param [options] Conversion options
     * @returns Plain object
     */
    public static toObject(message: RspEnterRoom, options?: $protobuf.IConversionOptions): { [k: string]: any };

    /**
     * Converts this RspEnterRoom to JSON.
     * @returns JSON object
     */
    public toJSON(): { [k: string]: any };

    /**
     * Gets the default type url for RspEnterRoom
     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns The default type url
     */
    public static getTypeUrl(typeUrlPrefix?: string): string;
}

/** Properties of a ReqLeaveRoom. */
export interface IReqLeaveRoom {
}

/** Represents a ReqLeaveRoom. */
export class ReqLeaveRoom implements IReqLeaveRoom {

    /**
     * Constructs a new ReqLeaveRoom.
     * @param [properties] Properties to set
     */
    constructor(properties?: IReqLeaveRoom);

    /**
     * Creates a new ReqLeaveRoom instance using the specified properties.
     * @param [properties] Properties to set
     * @returns ReqLeaveRoom instance
     */
    public static create(properties?: IReqLeaveRoom): ReqLeaveRoom;

    /**
     * Encodes the specified ReqLeaveRoom message. Does not implicitly {@link ReqLeaveRoom.verify|verify} messages.
     * @param message ReqLeaveRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encode(message: IReqLeaveRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Encodes the specified ReqLeaveRoom message, length delimited. Does not implicitly {@link ReqLeaveRoom.verify|verify} messages.
     * @param message ReqLeaveRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encodeDelimited(message: IReqLeaveRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Decodes a ReqLeaveRoom message from the specified reader or buffer.
     * @param reader Reader or buffer to decode from
     * @param [length] Message length if known beforehand
     * @returns ReqLeaveRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): ReqLeaveRoom;

    /**
     * Decodes a ReqLeaveRoom message from the specified reader or buffer, length delimited.
     * @param reader Reader or buffer to decode from
     * @returns ReqLeaveRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): ReqLeaveRoom;

    /**
     * Verifies a ReqLeaveRoom message.
     * @param message Plain object to verify
     * @returns `null` if valid, otherwise the reason why it is not
     */
    public static verify(message: { [k: string]: any }): (string|null);

    /**
     * Creates a ReqLeaveRoom message from a plain object. Also converts values to their respective internal types.
     * @param object Plain object
     * @returns ReqLeaveRoom
     */
    public static fromObject(object: { [k: string]: any }): ReqLeaveRoom;

    /**
     * Creates a plain object from a ReqLeaveRoom message. Also converts values to other types if specified.
     * @param message ReqLeaveRoom
     * @param [options] Conversion options
     * @returns Plain object
     */
    public static toObject(message: ReqLeaveRoom, options?: $protobuf.IConversionOptions): { [k: string]: any };

    /**
     * Converts this ReqLeaveRoom to JSON.
     * @returns JSON object
     */
    public toJSON(): { [k: string]: any };

    /**
     * Gets the default type url for ReqLeaveRoom
     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns The default type url
     */
    public static getTypeUrl(typeUrlPrefix?: string): string;
}

/** Properties of a RspLeaveRoom. */
export interface IRspLeaveRoom {

    /** RspLeaveRoom code */
    code?: (ErrCode|null);
}

/** Represents a RspLeaveRoom. */
export class RspLeaveRoom implements IRspLeaveRoom {

    /**
     * Constructs a new RspLeaveRoom.
     * @param [properties] Properties to set
     */
    constructor(properties?: IRspLeaveRoom);

    /** RspLeaveRoom code. */
    public code: ErrCode;

    /**
     * Creates a new RspLeaveRoom instance using the specified properties.
     * @param [properties] Properties to set
     * @returns RspLeaveRoom instance
     */
    public static create(properties?: IRspLeaveRoom): RspLeaveRoom;

    /**
     * Encodes the specified RspLeaveRoom message. Does not implicitly {@link RspLeaveRoom.verify|verify} messages.
     * @param message RspLeaveRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encode(message: IRspLeaveRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Encodes the specified RspLeaveRoom message, length delimited. Does not implicitly {@link RspLeaveRoom.verify|verify} messages.
     * @param message RspLeaveRoom message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encodeDelimited(message: IRspLeaveRoom, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Decodes a RspLeaveRoom message from the specified reader or buffer.
     * @param reader Reader or buffer to decode from
     * @param [length] Message length if known beforehand
     * @returns RspLeaveRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): RspLeaveRoom;

    /**
     * Decodes a RspLeaveRoom message from the specified reader or buffer, length delimited.
     * @param reader Reader or buffer to decode from
     * @returns RspLeaveRoom
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): RspLeaveRoom;

    /**
     * Verifies a RspLeaveRoom message.
     * @param message Plain object to verify
     * @returns `null` if valid, otherwise the reason why it is not
     */
    public static verify(message: { [k: string]: any }): (string|null);

    /**
     * Creates a RspLeaveRoom message from a plain object. Also converts values to their respective internal types.
     * @param object Plain object
     * @returns RspLeaveRoom
     */
    public static fromObject(object: { [k: string]: any }): RspLeaveRoom;

    /**
     * Creates a plain object from a RspLeaveRoom message. Also converts values to other types if specified.
     * @param message RspLeaveRoom
     * @param [options] Conversion options
     * @returns Plain object
     */
    public static toObject(message: RspLeaveRoom, options?: $protobuf.IConversionOptions): { [k: string]: any };

    /**
     * Converts this RspLeaveRoom to JSON.
     * @returns JSON object
     */
    public toJSON(): { [k: string]: any };

    /**
     * Gets the default type url for RspLeaveRoom
     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns The default type url
     */
    public static getTypeUrl(typeUrlPrefix?: string): string;
}

/** Properties of a NtfPayoutFail. */
export interface INtfPayoutFail {

    /** NtfPayoutFail code */
    code?: (ErrCode|null);
}

/** Represents a NtfPayoutFail. */
export class NtfPayoutFail implements INtfPayoutFail {

    /**
     * Constructs a new NtfPayoutFail.
     * @param [properties] Properties to set
     */
    constructor(properties?: INtfPayoutFail);

    /** NtfPayoutFail code. */
    public code: ErrCode;

    /**
     * Creates a new NtfPayoutFail instance using the specified properties.
     * @param [properties] Properties to set
     * @returns NtfPayoutFail instance
     */
    public static create(properties?: INtfPayoutFail): NtfPayoutFail;

    /**
     * Encodes the specified NtfPayoutFail message. Does not implicitly {@link NtfPayoutFail.verify|verify} messages.
     * @param message NtfPayoutFail message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encode(message: INtfPayoutFail, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Encodes the specified NtfPayoutFail message, length delimited. Does not implicitly {@link NtfPayoutFail.verify|verify} messages.
     * @param message NtfPayoutFail message or plain object to encode
     * @param [writer] Writer to encode to
     * @returns Writer
     */
    public static encodeDelimited(message: INtfPayoutFail, writer?: $protobuf.Writer): $protobuf.Writer;

    /**
     * Decodes a NtfPayoutFail message from the specified reader or buffer.
     * @param reader Reader or buffer to decode from
     * @param [length] Message length if known beforehand
     * @returns NtfPayoutFail
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): NtfPayoutFail;

    /**
     * Decodes a NtfPayoutFail message from the specified reader or buffer, length delimited.
     * @param reader Reader or buffer to decode from
     * @returns NtfPayoutFail
     * @throws {Error} If the payload is not a reader or valid buffer
     * @throws {$protobuf.util.ProtocolError} If required fields are missing
     */
    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): NtfPayoutFail;

    /**
     * Verifies a NtfPayoutFail message.
     * @param message Plain object to verify
     * @returns `null` if valid, otherwise the reason why it is not
     */
    public static verify(message: { [k: string]: any }): (string|null);

    /**
     * Creates a NtfPayoutFail message from a plain object. Also converts values to their respective internal types.
     * @param object Plain object
     * @returns NtfPayoutFail
     */
    public static fromObject(object: { [k: string]: any }): NtfPayoutFail;

    /**
     * Creates a plain object from a NtfPayoutFail message. Also converts values to other types if specified.
     * @param message NtfPayoutFail
     * @param [options] Conversion options
     * @returns Plain object
     */
    public static toObject(message: NtfPayoutFail, options?: $protobuf.IConversionOptions): { [k: string]: any };

    /**
     * Converts this NtfPayoutFail to JSON.
     * @returns JSON object
     */
    public toJSON(): { [k: string]: any };

    /**
     * Gets the default type url for NtfPayoutFail
     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
     * @returns The default type url
     */
    public static getTypeUrl(typeUrlPrefix?: string): string;
}

/** ErrCode enum. */
export enum ErrCode {
    OK = 0,
    SystemErr = 1,
    ParamErr = 2,
    LoginDiffLoc = 100,
    LoginUserOrPwdErr = 102,
    AccountFrozen = 103,
    AccountBanned = 104,
    RegisterUserExist = 110,
    VersionTooLow = 115,
    Maintain = 120,
    GoldNotEnough = 125,
    NotBetCount = 126,
    NotLeaveRoom = 127,
    TotalBetExceedsLimit = 500,
    AreaBetExceedsLimit = 505
}
