/**
 * @file ModifyShapeHelper provides utility functions for manipulating PowerPoint shapes
 * through XML modifications.
 */
import { ReplaceText, ReplaceTextOptions } from '../types/modify-types';
import { ShapeCoordinates } from '../types/shape-types';
import { ElementVisualType, PlaceholderInfo, ShapeBackgroundInfo, XmlElement } from '../types/xml-types';
/**
 * Helper class for modifying PowerPoint shapes in XML structure
 * Provides various methods for manipulating shape appearance, position, and content
 */
export default class ModifyShapeHelper {
    /**
     * Set solid fill of modified shape to accent6 color
     *
     * @param element - XML element representing the shape
     */
    static setSolidFill: (element: XmlElement) => void;
    /**
     * Set text content of a shape
     *
     * @param text - Text string to set as shape content
     * @returns Function that accepts an XML element to modify
     */
    static setText: (text: string) => (element: XmlElement) => void;
    /**
     * Set content to bulleted list within a shape
     *
     * @param list - Array or string content for the bullet list
     * @returns Function that accepts an XML element to modify
     */
    static setBulletList: (list: any) => (element: XmlElement) => void;
    /**
     * Replace tagged text content within modified shape
     *
     * @param replaceText - Single replacement or array of replacements
     * @param options - Optional configuration for text replacement
     * @returns Function that accepts an XML element to modify
     */
    static replaceText: (replaceText: ReplaceText | ReplaceText[], options?: ReplaceTextOptions) => (element: XmlElement) => void;
    /**
     * Creates missing transformation elements (a:off and a:ext) with default values
     * Ensures that a shape has the required XML structure for positioning and sizing
     *
     * @param element - The XML element to check and modify
     * @returns The xfrm element that contains or will contain the transformation data
     */
    static ensureTransformElements: (element: XmlElement) => XmlElement | null;
    /**
     * Set absolute position and size of a shape
     *
     * @param pos - Object containing position and size coordinates
     * @returns Function that accepts an XML element to modify
     */
    static setPosition: (pos: ShapeCoordinates) => (element: XmlElement) => void;
    /**
     * Incrementally update position and size of a shape by adding delta values
     *
     * @param pos - Object containing delta values for position and size
     * @returns Function that accepts an XML element to modify
     */
    static updatePosition: (pos: ShapeCoordinates) => (element: XmlElement) => void;
    /**
     * Rotate a shape by a given angle in degrees
     *
     * @param degrees - Rotation angle in degrees (positive = clockwise, negative = counterclockwise)
     * @returns Function that accepts an XML element to modify
     */
    static rotate: (degrees: number) => (element: XmlElement) => void;
    /**
     * Apply rounded corners to a shape with a specified corner radius
     *
     * @param degree - Corner radius in EMU units (1 cm = 360000 EMU)
     * @returns Function that accepts an XML element to modify
     */
    static roundedCorners: (degree: number) => (element: XmlElement) => void;
    /**
     * Determines the type of visual element in PowerPoint
     * @param element The XML element to check
     * @returns A string identifying the element type
     */
    static getElementVisualType(element: XmlElement): ElementVisualType;
    /**
     * Forward placeholder info function
     * @param element The XML element to check
     * @returns The PlaceholderInfo object
     */
    static getElementPlaceholderInfo(element: XmlElement): PlaceholderInfo;
    /**
     * Check if the given element has a background which is non-transparent
     * @param element The XML element to check
     * @returns ShapeBackgroundInfo
     */
    static elementHasBackground(element: XmlElement): ShapeBackgroundInfo;
}
