import { Schema } from '@colyseus/schema';
import { Room } from 'colyseus.js';
import { IApplication, IPlugin, Plugin } from 'dill-pixel';
import * as Colyseus from 'colyseus.js';
export type SchemaConstructor<T = Schema> = new (...args: any[]) => T;
export type ColyseusPluginOptions = {
    port: string;
};
export interface IColyseusPlugin extends IPlugin<ColyseusPluginOptions> {
    readonly client: Colyseus.Client;
    initialize(options?: Partial<ColyseusPluginOptions>, app?: IApplication): void;
    joinOrCreate<T>(roomName: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
    create<T>(roomName: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
    join<T>(roomName: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
    joinById<T>(roomId: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
}
export declare class ColyseusPlugin extends Plugin<ColyseusPluginOptions> implements IColyseusPlugin {
    private _client;
    get client(): Colyseus.Client;
    initialize(options?: Partial<ColyseusPluginOptions>, app?: IApplication): Promise<void>;
    joinOrCreate<T = any>(roomName: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
    join<T = any>(roomName: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
    joinById<T = any>(roomId: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
    create<T = any>(roomName: string, options?: Colyseus.JoinOptions, rootSchema?: SchemaConstructor<T>): Promise<Room<T>>;
}
//# sourceMappingURL=ColyseusPlugin.d.ts.map