import { Socket } from './Socket.js';
import { Callback, RequestMethodReturnMap, RequestMethodsArgsMap } from './typings/obsWebsocket';
export declare class OBSWebSocket extends Socket {
    private static requestCounter;
    private static generateMessageId;
    /**
     * Generic Socket request method. Returns a promise.
     * Generates a messageId internally and will override any passed in the args.
     * Note that the requestType here is pre-marshaling and currently must match exactly what the websocket plugin is expecting.
     *
     * @param  {String}   requestType obs-websocket plugin expected request type.
     * @param  {Object}   [args={}]   request arguments.
     * @return {Promise}              Promise, passes the plugin response object.
     */
    send<K extends keyof RequestMethodsArgsMap>(requestType: K, args?: RequestMethodsArgsMap[K] extends object ? RequestMethodsArgsMap[K] : undefined): Promise<RequestMethodReturnMap[K]>;
    /**
     * Generic Socket request method. Handles callbacks.
     * Internally calls `send` (which is promise-based). See `send`'s docs for more details.
     *
     * @param  {String}   requestType obs-websocket plugin expected request type.
     * @param  {Object}   [args={}]   request arguments.
     * @param  {Function} callback    Optional. callback(err, data)
     * @deprecated This method is not fun to maintain in typescript, use the promise api instead
     */
    sendCallback<K extends keyof RequestMethodsArgsMap>(requestType: K, args?: RequestMethodsArgsMap[K] extends object ? RequestMethodsArgsMap[K] : Callback<K>, callback?: Callback<K> | undefined): void;
}
