/********************************************************************************
 * Copyright (c) 2019-2024 EclipseSource and others.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 ********************************************************************************/
import { Action, BindingContext, CommandExecutionContext, CommandReturn, GDanglingAnchor, GEdgeSchema, GModelRoot, GRoutableElement } from '@eclipse-glsp/sprotty';
import { FeedbackCommand } from '../../../base/feedback/feedback-command';
export interface DrawFeedbackEdgeAction extends Action {
    kind: typeof DrawFeedbackEdgeAction.KIND;
    elementTypeId: string;
    sourceId: string;
    edgeSchema?: Partial<GEdgeSchema>;
}
export declare namespace DrawFeedbackEdgeAction {
    const KIND = "drawFeedbackEdge";
    function is(object: any): object is DrawFeedbackEdgeAction;
    function create(options: {
        elementTypeId: string;
        sourceId: string;
        edgeSchema?: Partial<GEdgeSchema>;
    }): DrawFeedbackEdgeAction;
}
export declare class DrawFeedbackEdgeCommand extends FeedbackCommand {
    protected action: DrawFeedbackEdgeAction;
    static readonly KIND = "drawFeedbackEdge";
    constructor(action: DrawFeedbackEdgeAction);
    execute(context: CommandExecutionContext): CommandReturn;
}
export interface RemoveFeedbackEdgeAction extends Action {
    kind: typeof RemoveFeedbackEdgeAction.KIND;
}
export declare namespace RemoveFeedbackEdgeAction {
    const KIND = "removeFeedbackEdgeCommand";
    function is(object: any): object is RemoveFeedbackEdgeAction;
    function create(): RemoveFeedbackEdgeAction;
}
export declare class RemoveFeedbackEdgeCommand extends FeedbackCommand {
    static readonly KIND = "removeFeedbackEdgeCommand";
    execute(context: CommandExecutionContext): CommandReturn;
}
export declare class FeedbackEdgeEnd extends GDanglingAnchor {
    readonly sourceId: string;
    readonly elementTypeId: string;
    feedbackEdge: GRoutableElement | undefined;
    readonly type: string;
    static readonly DEFAULT_FEATURES: symbol[];
    static readonly TYPE = "feedback-edge-end";
    constructor(sourceId: string, elementTypeId: string, feedbackEdge?: GRoutableElement | undefined, type?: string);
}
export declare function feedbackEdgeId(root: GModelRoot): string;
export declare function feedbackEdgeEndId(root: GModelRoot): string;
export declare const defaultFeedbackEdgeSchema: Partial<GEdgeSchema>;
export declare function drawFeedbackEdge(context: CommandExecutionContext, sourceId: string, elementTypeId: string, edgeTemplate?: Partial<GEdgeSchema>): void;
export declare function removeDanglingFeedbackEdge(root: GModelRoot): void;
export declare function configureDanglingFeedbackEdge(context: BindingContext): void;
//# sourceMappingURL=dangling-edge-feedback.d.ts.map