import { Range, VimValue } from '../types';
import { BaseApi } from './Base';
import { Buffer } from './Buffer';
import { Tabpage } from './Tabpage';
import { FloatOptions } from './types';
export declare class Window extends BaseApi {
    prefix: string;
    /**
     * The windowid that not change within a Vim session
     */
    get id(): number;
    setBuffer(buffer: Buffer): Promise<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;
    /** Get current buffer of window */
    get buffer(): Promise<Buffer>;
    /** Get the Tabpage that contains the window */
    get tabpage(): Promise<Tabpage>;
    /** Get cursor position */
    get cursor(): Promise<[number, number]>;
    /** Set cursor position */
    setCursor(pos: [number, number]): Promise<void>;
    setCursor(pos: [number, number], isNotify: true): null;
    /** Get window height by number of rows */
    get height(): Promise<number>;
    /** Set window height by number of rows */
    setHeight(height: number): Promise<void>;
    setHeight(height: number, isNotify: true): null;
    /** Get window width by number of columns */
    get width(): Promise<number>;
    /** Set window width by number of columns  */
    setWidth(width: number): Promise<void>;
    setWidth(width: number, isNotify: true): null;
    /** Get window position */
    get position(): Promise<[number, number]>;
    /** 0-indexed, on-screen window position(row) in display cells. */
    get row(): Promise<number>;
    /** 0-indexed, on-screen window position(col) in display cells. */
    get col(): Promise<number>;
    /** Is window valid */
    get valid(): Promise<boolean>;
    /** Get window number */
    get number(): Promise<number>;
    setConfig(options: FloatOptions): Promise<any>;
    setConfig(options: FloatOptions, isNotify: true): null;
    getConfig(): Promise<FloatOptions>;
    close(force: boolean): Promise<void>;
    close(force: boolean, isNotify: true): null;
    /**
     * Add highlight to ranges by using matchaddpos.
     */
    highlightRanges(hlGroup: string, ranges: Range[], priority?: number): Promise<number[]>;
    highlightRanges(hlGroup: string, ranges: Range[], priority: number, isNotify: true): null;
    /**
     * Clear match by highlight group.
     */
    clearMatchGroup(hlGroup: string): void;
    /**
     * Clear match by match ids.
     */
    clearMatches(ids: number[]): void;
}
