import { Disposable } from '@theia/core';
export declare enum GameStates {
    NOT_RUNNING = 0,
    READY = 1,
    LOADING = 2,
    CONNECTED = 3,
    UNLOADING = 4
}
export declare class SingleEventEmitter<T> {
    private listeners;
    on(listener: (arg: T) => void): Disposable;
    emit(data: T): void;
}
export interface StructuredMessage {
    channel: string;
    message: string;
}
export declare type ResourceName = string;
export declare type ResourceAvgTickMs = number;
export declare type ResourceAvgFrameFraction = number;
export declare type ResourceMemorySize = number;
export declare type ResourceStreamingSize = number;
export declare type ClientResourceData = [ResourceName, ResourceAvgTickMs, ResourceAvgFrameFraction, ResourceMemorySize, ResourceStreamingSize];
export declare type ServerResourceData = ClientResourceData;
export declare class FxdkDataService {
    data: {
        [key: string]: any;
    };
    private clientResourcesData;
    private serverResourcesData;
    private bufferedServerOutput;
    private structuredServerMessages;
    private readonly bufferedServerOutputChanged;
    onBufferedServerOutputChanged(cb: (output: string) => void): Disposable;
    private readonly structuredServerMessageReceivedEvent;
    onStructuredServerMessageReceived(cb: (st: StructuredMessage) => void): Disposable;
    private readonly clearAllServerOutputsEvent;
    onClearAllServerOutputs(cb: () => void): Disposable;
    private readonly clientResourcesDataEvent;
    onClientResourcesData(cb: (data: ClientResourceData[]) => void): Disposable;
    getClientResourcesData(): ClientResourceData[];
    setClientResourcesData(data: ClientResourceData[]): void;
    private readonly serverResourcesDataEvent;
    onServerResourcesData(cb: (data: ServerResourceData[]) => void): Disposable;
    getServerResourcesData(): ServerResourceData[];
    setServerResourcesData(data: ServerResourceData[]): void;
    getBufferedServerOutput(): string;
    getStructuredServerMessages(): StructuredMessage[];
    clearAllServerOutputs(): void;
    setBufferedServerOutput(output: string): void;
    receiveStructuredServerMessage(message: StructuredMessage): void;
    private structuredGameMessages;
    private readonly structuredGameMessageReceivedEvent;
    onStructuredGameMessageReceived(cb: (st: StructuredMessage) => void): Disposable;
    private readonly clearGameOutputEvent;
    onClearGameOutput(cb: () => void): Disposable;
    getStructuredGameMessage(): StructuredMessage[];
    receiveStructuredGameMessage(message: StructuredMessage): void;
    clearGameOutput(): void;
    sendMessageToShell(type: string, data?: any): void;
    private theiaIsActive;
    private theiaIsActiveEvent;
    onTheiaIsActiveChange(cb: (isActive: boolean) => void): Disposable;
    setTheiaIsActive(isActive: boolean): void;
    getTheiaIsActive(): boolean;
    private gameState;
    private gameStateChangeEvent;
    onGameStateChange(cb: (gameState: GameStates) => void): Disposable;
    getGameState(): GameStates;
    setGameState(gameState: GameStates): void;
}
//# sourceMappingURL=fxdk-data-service.d.ts.map