import Transport from '../transport/base';
import { VimValue } from '../types';
import { NeovimClient } from './client';
export interface BaseConstructorOptions {
    data?: number;
    client?: any;
}
export declare class BaseApi {
    protected prefix: string;
    data: number | undefined;
    protected client: NeovimClient;
    constructor({ data, client, }: BaseConstructorOptions);
    protected get transport(): Transport;
    equals(other: BaseApi): boolean;
    request(name: string, args?: any[], skipConvert?: boolean, skipErrorLog?: boolean): Promise<any>;
    protected getArgsByPrefix(args: any[]): any[];
    /** Retrieves a scoped variable depending on type (using `this.prefix`) */
    getVar(name: string): Promise<VimValue>;
    /** Set a scoped variable */
    setVar(name: string, value: VimValue, isNotify: true): void;
    setVar(name: string, value: VimValue, isNotify?: false): Promise<void>;
    /** Delete a scoped variable */
    deleteVar(name: string): void;
    /** Retrieves a scoped option depending on type of `this` */
    getOption(name: string): Promise<VimValue>;
    /** Set scoped option */
    setOption(name: string, value: VimValue): Promise<void>;
    setOption(name: string, value: VimValue, isNotify: true): void;
    /** `request` is basically the same except you can choose to wait forpromise to be resolved */
    notify(name: string, args?: any[], skipConvert?: boolean): void;
    toJSON(): number;
}
