import ElementPeer from './peer/svg/ElementPeer';
import StyleAttributes from './StyleAttributes';
declare abstract class WorkspaceElement<T extends ElementPeer> {
    peer: T;
    constructor(peer: T, attributes: StyleAttributes, delayInit?: boolean);
    protected _initialize(attributes: StyleAttributes): void;
    setSize(width: number, height: number): void;
    /**
     * Allows the registration of event listeners on the event target.
     * type
     *     A string representing the event type to listen for.
     * listener
     *     The object that receives a notification when an event of the
     * specified type occurs. This must be an object implementing the
     * EventListener interface, or simply a function in JavaScript.
     *
     * The following events types are supported:
     *
     */
    addEvent(type: string, listener: any): void;
    trigger(type: string, event: any): void;
    /**
     *
     * Allows the removal of event listeners from the event target.
     *
     * Parameters:
     * type
     *    A string representing the event type being registered.
     * listener
     *     The listener parameter takes an interface implemented by
     * the user which contains the methods to be called when the event occurs.
     *     This interace will be invoked passing an event as argument and
     * the 'this' referece in the function will be the element.
     */
    removeEvent(type: string, listener: any): void;
    /**
     * /*
     * Returns element type name.
     */
    abstract getType(): string;
    /**
     * Todo: Doc
     */
    getFill(): {
        color: string | null;
        opacity: number;
    };
    /**
     * Used to define the fill element color and element opacity.
     * color: Fill color
     * opacity: Opacity of the fill. It must be less than 1.
     */
    setFill(color: string, opacity?: number): void;
    setStroke(width: number | null, style?: string, color?: string, opacity?: number): void;
    _attributeNameToFuncName(attributeKey: any, prefix: any): any;
    /**
     * All element properties can be setted using either a method
     *  invocation or attribute invocation.
     *  key: size, width, height, position, x, y, stroke, strokeWidth, strokeStyle,
     * strokeColor, strokeOpacity,
     *       fill, fillColor, fillOpacity, coordSize, coordSizeWidth, coordSizeHeight,
     * coordOrigin, coordOriginX, coordOrigiY
     */
    setAttribute(key: string, value: string | number): void;
    getAttribute(key: string): any;
    /**
     * Defines the element opacity.
     * Parameters:
     *   opacity: A value between 0 and 1.
     */
    setOpacity(opacity: number): void;
    setVisibility(value: boolean, fade?: number): void;
    isVisible(): boolean;
    /**
     * Move the element to the front
     */
    moveToFront(): void;
    /**
     * Move the element to the back
     */
    moveToBack(): void;
    getStroke(): {
        color: string | null;
        style: string | null;
        opacity: string | null;
        width: string | null;
    };
    setCursor(type: string): void;
    setTestId(testId: string): void;
    static _SIGNATURE_MULTIPLE_ARGUMENTS: number;
    static _supportedEvents: string[];
    private static _propertyNameToSignature;
}
export default WorkspaceElement;
