import { Command, CommandExecutionContext, CommandReturn, SetViewportCommand } from 'sprotty';
import { Action, Viewport } from 'sprotty-protocol';
/**
 * A Bookmark
 */
export declare class Bookmark {
    /**
     * Optional a user defined display name for the bookmark
     */
    name?: string;
    /**
     * The Viewport which the Bookmark marks
     */
    place: Viewport;
    /**
     * Bookmark Index
     * Assigned by BookmarkRegistry
     */
    bookmarkIndex?: number;
    constructor(place: Viewport, name?: string);
    static isBookmark(value: any): value is Bookmark;
    clone(): Bookmark;
    get saveId(): string;
    get editId(): string;
}
/**
 * An action to create a new Bookmark at the current Viewport
 */
export interface CreateBookmarkAction extends Action {
    kind: typeof CreateBookmarkAction.KIND;
}
export declare namespace CreateBookmarkAction {
    const KIND = "create-bookmark";
    function create(): CreateBookmarkAction;
    /** Type predicate to narrow an action to this action. */
    function isThisAction(action: Action): action is CreateBookmarkAction;
}
/**
 * The Command corresponding to the CreateBookmarkAction,
 * this is what actually causes the Bookmark to be added to the {@link BookmarkRegistry}
 */
export declare class CreateBookmarkCommand extends Command {
    protected action: CreateBookmarkAction;
    static readonly KIND = "create-bookmark";
    private actionDispatcher;
    private bookmark?;
    constructor(action: CreateBookmarkAction);
    execute(context: CommandExecutionContext): CommandReturn;
    undo(context: CommandExecutionContext): CommandReturn;
    redo(context: CommandExecutionContext): CommandReturn;
}
/**
 * An action to add a Bookmark to the BookmarkRegistry
 */
export interface AddBookmarkAction extends Action {
    kind: typeof AddBookmarkAction.KIND;
    bookmark: Bookmark;
}
export declare namespace AddBookmarkAction {
    const KIND = "add-bookmark";
    function create(bookmark: Bookmark): AddBookmarkAction;
    /** Type predicate to narrow an action to this action. */
    function isThisAction(action: Action): action is AddBookmarkAction;
}
/**
 * An action to delete a Bookmark from the BookmarkRegistry
 */
export interface DeleteBookmarkAction extends Action {
    kind: typeof DeleteBookmarkAction.KIND;
    bookmarkIndex: number;
}
export declare namespace DeleteBookmarkAction {
    const KIND = "delete-bookmark";
    function create(bookmarkIndex: number): DeleteBookmarkAction;
    /** Type predicate to narrow an action to this action. */
    function isThisAction(action: Action): action is DeleteBookmarkAction;
}
export interface RenameBookmarkAction extends Action {
    kind: typeof RenameBookmarkAction.KIND;
    bookmarkIndex: number;
    newName: string;
}
export declare namespace RenameBookmarkAction {
    const KIND = "rename-bookmark";
    function create(bookmarkIndex: number, newName: string): RenameBookmarkAction;
    /** Type predicate to narrow an action to this action. */
    function isThisAction(action: Action): action is RenameBookmarkAction;
}
/**
 * An action to return to a bookmarked Viewport
 */
export interface GoToBookmarkAction extends Action {
    kind: typeof GoToBookmarkAction.KIND;
    bookmark: Bookmark;
}
export declare namespace GoToBookmarkAction {
    const KIND = "get-bookmark";
    function create(bookmark: Bookmark): GoToBookmarkAction;
    /** Type predicate to narrow an action to this action. */
    function isThisAction(action: Action): action is GoToBookmarkAction;
}
export declare class GoToBookmarkCommand implements Command {
    static readonly KIND = "get-bookmark";
    action: GoToBookmarkAction;
    animate: boolean;
    setCommand: SetViewportCommand;
    constructor(action: GoToBookmarkAction, animate: boolean);
    execute(context: CommandExecutionContext): CommandReturn;
    undo(context: CommandExecutionContext): CommandReturn;
    redo(context: CommandExecutionContext): CommandReturn;
}
export interface SetInitialBookmarkAction extends Action {
    kind: typeof SetInitialBookmarkAction.KIND;
    bookmark: Bookmark;
}
export declare namespace SetInitialBookmarkAction {
    const KIND = "init-bookmark";
    function create(bookmark: Bookmark): SetInitialBookmarkAction;
    /** Type predicate to narrow an action to this action. */
    function isThisAction(action: Action): action is SetInitialBookmarkAction;
}
//# sourceMappingURL=bookmark.d.ts.map