import { FullServerOptions } from "../structures/ServerOptions";
import { HandleRecord } from "./handle";
export declare abstract class Implementation {
    protected options: FullServerOptions;
    constructor(options: FullServerOptions);
    abstract name(): string;
    abstract version(): string;
    abstract start(): Promise<void>;
    abstract stop(): void;
    abstract port(): number;
    abstract handle(handlers: {
        [key in keyof HandleRecord]: (context: HandleRecord[key]) => Promise<any>;
    }): void;
    abstract wsPublish(type: 'text' | 'binary', id: number, data: ArrayBuffer, compressed: boolean): void;
}
export type BaseImplementation = new (options: FullServerOptions) => Implementation;
