import * as p from "../../core/properties";
import { DOMView } from "../../core/dom_view";
import { Logo, Location } from "../../core/enums";
import { Model } from "../../model";
import { Tool } from "./tool";
import { ButtonToolButtonView } from "./button_tool";
import { GestureTool } from "./gestures/gesture_tool";
import { ActionTool } from "./actions/action_tool";
import { HelpTool } from "./actions/help_tool";
import { ToolProxy } from "./tool_proxy";
import { InspectTool } from "./inspectors/inspect_tool";
export declare namespace ToolbarViewModel {
    type Attrs = p.AttrsOf<Props>;
    type Props = Model.Props & {
        _visible: p.Property<boolean | null>;
        autohide: p.Property<boolean>;
    };
}
export interface ToolbarViewModel extends ToolbarViewModel.Attrs {
}
export declare class ToolbarViewModel extends Model {
    properties: ToolbarViewModel.Props;
    constructor(attrs?: Partial<ToolbarViewModel.Attrs>);
    static initClass(): void;
    readonly visible: boolean;
}
export declare class ToolbarBaseView extends DOMView {
    model: ToolbarBase;
    protected _tool_button_views: {
        [key: string]: ButtonToolButtonView;
    };
    protected _toolbar_view_model: ToolbarViewModel;
    initialize(): void;
    connect_signals(): void;
    remove(): void;
    protected _build_tool_button_views(): void;
    set_visibility(visible: boolean): void;
    protected _on_visible_change(): void;
    render(): void;
    update_layout(): void;
    update_position(): void;
    after_layout(): void;
}
export declare type GestureType = "pan" | "scroll" | "pinch" | "tap" | "doubletap" | "press" | "rotate" | "move" | "multi";
export declare namespace ToolbarBase {
    type Attrs = p.AttrsOf<Props>;
    type Props = Model.Props & {
        tools: p.Property<Tool[]>;
        logo: p.Property<Logo>;
        gestures: p.Property<{
            pan: {
                tools: GestureTool[];
                active: Tool | null;
            };
            scroll: {
                tools: GestureTool[];
                active: Tool | null;
            };
            pinch: {
                tools: GestureTool[];
                active: Tool | null;
            };
            tap: {
                tools: GestureTool[];
                active: Tool | null;
            };
            doubletap: {
                tools: GestureTool[];
                active: Tool | null;
            };
            press: {
                tools: GestureTool[];
                active: Tool | null;
            };
            rotate: {
                tools: GestureTool[];
                active: Tool | null;
            };
            move: {
                tools: GestureTool[];
                active: Tool | null;
            };
            multi: {
                tools: GestureTool[];
                active: Tool | null;
            };
        }>;
        actions: p.Property<ActionTool[]>;
        inspectors: p.Property<InspectTool[]>;
        help: p.Property<HelpTool[]>;
        toolbar_location: p.Property<Location>;
        autohide: p.Property<boolean>;
    };
}
export interface ToolbarBase extends ToolbarBase.Attrs {
}
export declare class ToolbarBase extends Model {
    properties: ToolbarBase.Props;
    constructor(attrs?: Partial<ToolbarBase.Attrs>);
    static initClass(): void;
    _proxied_tools?: (Tool | ToolProxy)[];
    readonly horizontal: boolean;
    readonly vertical: boolean;
    _active_change(tool: Tool): void;
}
