import { CompositeDisposable } from '../lifecycle';
import { IFrameworkPart, PanelUpdateEvent, PanelInitParameters, IPanel } from '../panel/types';
import { PanelApiImpl } from '../api/panelApi';
export interface BasePanelViewState {
    id: string;
    component: string;
    params?: {
        [key: string]: any;
    };
    state?: {
        [key: string]: any;
    };
}
export interface BasePanelViewExported<T extends PanelApiImpl> {
    readonly id: string;
    readonly api: T;
    readonly width: number;
    readonly height: number;
    focus(): void;
    toJSON(): object;
    update(params: PanelUpdateEvent): void;
}
export declare abstract class BasePanelView<T extends PanelApiImpl> extends CompositeDisposable implements IPanel, BasePanelViewExported<T> {
    readonly id: string;
    protected readonly component: string;
    readonly api: T;
    private _height;
    private _width;
    private _element;
    protected part?: IFrameworkPart;
    protected params?: PanelInitParameters;
    /**
     * Provide an IFrameworkPart that will determine the rendered UI of this view piece.
     */
    protected abstract getComponent(): IFrameworkPart;
    get element(): HTMLElement;
    get width(): number;
    get height(): number;
    constructor(id: string, component: string, api: T);
    focus(): void;
    layout(width: number, height: number): void;
    init(parameters: PanelInitParameters): void;
    update(event: PanelUpdateEvent): void;
    toJSON(): BasePanelViewState;
    dispose(): void;
}
