// package: bet.beteran.c2se.api.game
// file: c2se/api/game.proto

import * as jspb from 'google-protobuf';
import * as protobuf_rpc_pb from '../../protobuf/rpc_pb';
import * as protobuf_pagination_pb from '../../protobuf/pagination_pb';
import * as models_core_network_pb from '../../models/core/network_pb';
import * as models_api_game_pb from '../../models/api/game_pb';

export class ListGamesRequest extends jspb.Message {
  hasPagination(): boolean;
  clearPagination(): void;
  getPagination(): protobuf_pagination_pb.Pagination | undefined;
  setPagination(value?: protobuf_pagination_pb.Pagination): void;

  clearSortsList(): void;
  getSortsList(): Array<protobuf_pagination_pb.Sort>;
  setSortsList(value: Array<protobuf_pagination_pb.Sort>): void;
  addSorts(
    value?: protobuf_pagination_pb.Sort,
    index?: number
  ): protobuf_pagination_pb.Sort;

  hasSearch(): boolean;
  clearSearch(): void;
  getSearch(): ListGamesRequest.Search | undefined;
  setSearch(value?: ListGamesRequest.Search): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): ListGamesRequest.AsObject;
  static toObject(
    includeInstance: boolean,
    msg: ListGamesRequest
  ): ListGamesRequest.AsObject;
  static extensions: { [key: number]: jspb.ExtensionFieldInfo<jspb.Message> };
  static extensionsBinary: {
    [key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>;
  };
  static serializeBinaryToWriter(
    message: ListGamesRequest,
    writer: jspb.BinaryWriter
  ): void;
  static deserializeBinary(bytes: Uint8Array): ListGamesRequest;
  static deserializeBinaryFromReader(
    message: ListGamesRequest,
    reader: jspb.BinaryReader
  ): ListGamesRequest;
}

export namespace ListGamesRequest {
  export type AsObject = {
    pagination?: protobuf_pagination_pb.Pagination.AsObject;
    sortsList: Array<protobuf_pagination_pb.Sort.AsObject>;
    search?: ListGamesRequest.Search.AsObject;
  };

  export class Search extends jspb.Message {
    hasVendorId(): boolean;
    clearVendorId(): void;
    getVendorId(): number;
    setVendorId(value: number): void;

    hasKeyLike(): boolean;
    clearKeyLike(): void;
    getKeyLike(): string;
    setKeyLike(value: string): void;

    hasPlatformLike(): boolean;
    clearPlatformLike(): void;
    getPlatformLike(): string;
    setPlatformLike(value: string): void;

    hasCategoryLike(): boolean;
    clearCategoryLike(): void;
    getCategoryLike(): string;
    setCategoryLike(value: string): void;

    hasGameTypeLike(): boolean;
    clearGameTypeLike(): void;
    getGameTypeLike(): string;
    setGameTypeLike(value: string): void;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Search.AsObject;
    static toObject(includeInstance: boolean, msg: Search): Search.AsObject;
    static extensions: { [key: number]: jspb.ExtensionFieldInfo<jspb.Message> };
    static extensionsBinary: {
      [key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>;
    };
    static serializeBinaryToWriter(
      message: Search,
      writer: jspb.BinaryWriter
    ): void;
    static deserializeBinary(bytes: Uint8Array): Search;
    static deserializeBinaryFromReader(
      message: Search,
      reader: jspb.BinaryReader
    ): Search;
  }

  export namespace Search {
    export type AsObject = {
      vendorId: number;
      keyLike: string;
      platformLike: string;
      categoryLike: string;
      gameTypeLike: string;
    };
  }
}

export class ListGamesResponse extends jspb.Message {
  hasError(): boolean;
  clearError(): void;
  getError(): protobuf_rpc_pb.Error | undefined;
  setError(value?: protobuf_rpc_pb.Error): void;

  hasResult(): boolean;
  clearResult(): void;
  getResult(): ListGamesResponse.Result | undefined;
  setResult(value?: ListGamesResponse.Result): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): ListGamesResponse.AsObject;
  static toObject(
    includeInstance: boolean,
    msg: ListGamesResponse
  ): ListGamesResponse.AsObject;
  static extensions: { [key: number]: jspb.ExtensionFieldInfo<jspb.Message> };
  static extensionsBinary: {
    [key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>;
  };
  static serializeBinaryToWriter(
    message: ListGamesResponse,
    writer: jspb.BinaryWriter
  ): void;
  static deserializeBinary(bytes: Uint8Array): ListGamesResponse;
  static deserializeBinaryFromReader(
    message: ListGamesResponse,
    reader: jspb.BinaryReader
  ): ListGamesResponse;
}

export namespace ListGamesResponse {
  export type AsObject = {
    error?: protobuf_rpc_pb.Error.AsObject;
    result?: ListGamesResponse.Result.AsObject;
  };

  export class Result extends jspb.Message {
    clearGamesList(): void;
    getGamesList(): Array<models_api_game_pb.Game>;
    setGamesList(value: Array<models_api_game_pb.Game>): void;
    addGames(
      value?: models_api_game_pb.Game,
      index?: number
    ): models_api_game_pb.Game;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Result.AsObject;
    static toObject(includeInstance: boolean, msg: Result): Result.AsObject;
    static extensions: { [key: number]: jspb.ExtensionFieldInfo<jspb.Message> };
    static extensionsBinary: {
      [key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>;
    };
    static serializeBinaryToWriter(
      message: Result,
      writer: jspb.BinaryWriter
    ): void;
    static deserializeBinary(bytes: Uint8Array): Result;
    static deserializeBinaryFromReader(
      message: Result,
      reader: jspb.BinaryReader
    ): Result;
  }

  export namespace Result {
    export type AsObject = {
      gamesList: Array<models_api_game_pb.Game.AsObject>;
    };
  }
}
