import { ViewContainerLocation, ViewContainer, IViewContainersRegistry, IViewsRegistry } from '../../vscode/src/vs/workbench/common/views.js';
export { IViewContainerDescriptor, IViewDescriptor } from '../../vscode/src/vs/workbench/common/views.js';
import { BrandedService, ServicesAccessor } from '../../vscode/src/vs/platform/instantiation/common/instantiation.js';
import { IDisposable } from '../../vscode/src/vs/base/common/lifecycle.js';
import { Dimension } from '../../vscode/src/vs/base/browser/dom.js';
import { Event } from '../../vscode/src/vs/base/common/event.js';
import { DomScrollableElement } from '../../vscode/src/vs/base/browser/ui/scrollbar/scrollableElement.js';
import { CancellationToken } from '../../vscode/src/vs/base/common/cancellation.js';
import { URI } from '../../vscode/src/vs/base/common/uri.js';
import { IEditorOptions } from '../../vscode/src/vs/platform/editor/common/editor.js';
import { Parts, Position } from '../../vscode/src/vs/workbench/services/layout/browser/layoutService.js';
import { Codicon } from '../../vscode/src/vs/base/common/codicons.js';
import { RegisteredEditorInfo, RegisteredEditorOptions, EditorInputFactoryObject } from '../../vscode/src/vs/workbench/services/editor/common/editorResolverService.js';
export { RegisteredEditorPriority } from '../../vscode/src/vs/workbench/services/editor/common/editorResolverService.js';
import { EditorInput, IEditorCloseHandler } from '../../vscode/src/vs/workbench/common/editor/editorInput.js';
import { IEditorOpenContext, EditorInputCapabilities, Verbosity, IEditorSerializer } from '../../vscode/src/vs/workbench/common/editor.js';
import { EditorPane } from '../../vscode/src/vs/workbench/browser/parts/editor/editorPane.js';
import '../../vscode/src/vs/editor/editor.api.js';
import { IEditorGroup } from '../../vscode/src/vs/workbench/services/editor/common/editorGroupsService.js';

type Label = string | {
    short: string;
    medium: string;
    long: string;
};
declare abstract class InjectedEditorPane extends EditorPane {
    constructor(id: string);
}
declare abstract class SimpleEditorPane extends InjectedEditorPane {
    protected container: HTMLElement;
    protected wrapper: HTMLElement;
    protected scrollbar: DomScrollableElement | undefined;
    private inputDisposable;
    protected createEditor(parent: HTMLElement): void;
    setInput(input: EditorInput, editorOptions: IEditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<void>;
    layout(dimension: Dimension): void;
    focus(): void;
    clearInput(): void;
    abstract initialize(): HTMLElement;
    abstract renderInput?(input: EditorInput, options: IEditorOptions | undefined, context: IEditorOpenContext, token: CancellationToken): Promise<IDisposable>;
}
declare abstract class SimpleEditorInput extends EditorInput {
    closeHandler?: IEditorCloseHandler | undefined;
    private dirty;
    private _capabilities;
    private name;
    private title;
    private description;
    resource: URI | undefined;
    constructor(resource?: URI, closeHandler?: IEditorCloseHandler | undefined);
    get capabilities(): EditorInputCapabilities;
    addCapability(capability: EditorInputCapabilities): void;
    removeCapability(capability: EditorInputCapabilities): void;
    get editorId(): string | undefined;
    setName(name: string): void;
    setTitle(title: Label): void;
    setDescription(description: string): void;
    private getLabelValue;
    getName(): string;
    getTitle(verbosity?: Verbosity): string;
    getDescription(verbosity?: Verbosity): string;
    isDirty(): boolean;
    setDirty(dirty: boolean): void;
}
declare function registerEditorPane<Services extends BrandedService[]>(typeId: string, name: string, ctor: new (group: IEditorGroup, ...services: Services) => EditorPane, inputCtors: (new (...args: any[]) => EditorInput)[]): IDisposable;
declare function registerEditor(globPattern: string, editorInfo: RegisteredEditorInfo, editorOptions: RegisteredEditorOptions, factory: EditorInputFactoryObject): IDisposable;
declare function registerEditorSerializer<Services extends BrandedService[]>(editorTypeId: string, ctor: {
    new (...Services: Services): IEditorSerializer;
}): IDisposable;
interface CustomViewOption {
    readonly id: string;
    name: string;
    order?: number;
    renderBody(container: HTMLElement, scrollbar: DomScrollableElement): IDisposable;
    location: ViewContainerLocation;
    icon?: string;
    canMoveView?: boolean;
    default?: boolean;
    actions?: {
        id: string;
        title: string;
        tooltip?: string;
        order?: number;
        run?(accessor: ServicesAccessor): Promise<void>;
        icon?: keyof typeof Codicon;
        render?(container: HTMLElement): void;
    }[];
    viewContainer?: ViewContainer;
    canToggleVisibility?: boolean;
    hideByDefault?: boolean;
    collapsed?: boolean;
}
declare const viewContainerRegistry: IViewContainersRegistry;
declare const viewRegistry: IViewsRegistry;
declare function registerCustomView(options: CustomViewOption): IDisposable;
declare function isPartVisibile(part: Parts): boolean;
declare function setPartVisibility(part: Exclude<Parts, Parts.STATUSBAR_PART | Parts.TITLEBAR_PART>, visible: boolean): void;
declare const onDidChangePanelPosition: Event<string>;
declare function getPanelPosition(): Position;
declare const onDidChangeSideBarPosition: Event<string>;
declare function getSideBarPosition(): Position;

export { type CustomViewOption, DomScrollableElement, EditorInput, EditorInputCapabilities, EditorInputFactoryObject, InjectedEditorPane as EditorPane, IEditorCloseHandler, IEditorSerializer, Parts, RegisteredEditorInfo, RegisteredEditorOptions, SimpleEditorInput, SimpleEditorPane, ViewContainer, ViewContainerLocation, getPanelPosition, getSideBarPosition, isPartVisibile, onDidChangePanelPosition, onDidChangeSideBarPosition, registerCustomView, registerEditor, registerEditorPane, registerEditorSerializer, setPartVisibility, viewContainerRegistry, viewRegistry };
