/// <reference types="node" />
import { Readable } from "stream";
import { queryGame, subscribeGame } from "./gameye-game";
import { commandStartMatch, commandStopMatch, queryMatch, subscribeMatch } from "./gameye-match";
import { queryStatistic, subscribeStatistic } from "./gameye-statistic";
import { queryTemplate, subscribeTemplate } from "./gameye-template";
export interface GameyeClientConfig {
    endpoint: string;
    token: string;
}
/**
 * Gameye client class for communicating with the Gameye API
 */
export declare class GameyeClient {
    static defaultConfig: Readonly<GameyeClientConfig>;
    commandStartMatch: typeof commandStartMatch;
    commandStopMatch: typeof commandStopMatch;
    queryStatistic: typeof queryStatistic;
    queryTemplate: typeof queryTemplate;
    queryGame: typeof queryGame;
    queryMatch: typeof queryMatch;
    subscribeStatistic: typeof subscribeStatistic;
    subscribeTemplate: typeof subscribeTemplate;
    subscribeGame: typeof subscribeGame;
    subscribeMatch: typeof subscribeMatch;
    private config;
    constructor(config?: Partial<GameyeClientConfig>);
    command<TPayload extends object>(type: string, payload: TPayload): Promise<void>;
    query<TState extends object>(type: string, arg: any): Promise<TState>;
    subscribe(type: string, arg: any): Promise<Readable>;
    private validateConfig;
}
