import { $ } from '../../../../../Class/$';
import { Done } from '../../../../../Class/Functional/Done';
import { Fail } from '../../../../../Class/Functional/Fail';
import { Holder } from '../../../../../Class/Holder';
import { Semifunctional_EE, SemifunctionalEvents } from '../../../../../Class/Semifunctional';
import { System } from '../../../../../system';
import { CH } from '../../../../../types/interface/CH';
import { WebSocket_EE } from '../../../../../wrap/WebSocket';
export type I = {
    url: string;
    close: any;
};
export type O = {
    channel: CH & $;
    open: any;
};
export type WebSocketEvents = SemifunctionalEvents<Semifunctional_EE> & WebSocket_EE;
export interface WebSocketShape {
    readyState: number;
    send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void;
    close(code?: number, reason?: string): void | Promise<void>;
    onopen(evevnt: Event): void;
    onmessage(event: MessageEvent): void;
    onerror(event: Event): void;
    onclose(event: CloseEvent): void;
}
export default class WebSocket_ extends Holder<I, O, WebSocketEvents> {
    private _webSocket;
    constructor(system: System);
    f({ url }: I, done: Done<O>, fail: Fail): Promise<void>;
    d(): Promise<void>;
}
