
//#region src/utils/svgFloatingContentUtils.d.ts
interface SVGFloatingContentPathOptions {
  width: number;
  height: number;
  placement: string;
  borderRadius: number;
  arrowWidth: number;
  arrowHeight: number;
  /** Fraction of the container border-radius applied to round the arrow tip (0 = sharp point, 1 = same radius as the container corners). */
  arrowTipRadiusFraction: number;
  /**
   * Position of the arrow center along the arrow's edge (px), measured from
   * the start of that edge (left for top/bottom sides, top for left/right).
   *
   * Clamped so the arrow never collides with the border-radius curve
   * Falls back to the midpoint of the edge when omitted.
   */
  arrowCenter?: number;
  /** Shift every coordinate in the path by this many pixels on the x-axis. */
  offsetX?: number;
  /** Shift every coordinate in the path by this many pixels on the y-axis. */
  offsetY?: number;
}
interface ArrowClampDeltaOptions {
  width: number;
  height: number;
  placement: string;
  borderRadius: number;
  arrowCenter: number;
  arrowWidth: number;
}
type ArrowSide = 'top' | 'bottom' | 'left' | 'right';
/**
 * Returns the side of the element where the arrow should appear.
 * The arrow points *toward* the trigger, so it lives on the opposite
 * side of the placement direction.
 */
declare function getArrowSide(placement: string): ArrowSide;
/**
 * Generates an SVG `<path>` string for a rounded rectangle with an arrow
 * pointing toward the trigger element.
 *
 * The path is traced clockwise, inserting the arrow triangle on the
 * appropriate edge.  The arrow extends *outside* the 0,0 → width,height
 * rectangle so the host `<svg>` must use `overflow: visible`.
 */
declare function generateSvgFloatingContentPath({
  width,
  height,
  placement,
  borderRadius,
  arrowWidth,
  arrowHeight,
  arrowTipRadiusFraction,
  arrowCenter,
  offsetX: ox,
  offsetY: oy
}: SVGFloatingContentPathOptions): string;
/**
 * Computes the pixel offset the tooltip must shift so that the SVG arrow
 * (after clamping) visually aligns with the Ariakit arrow's actual position.
 *
 * When the desired `arrowCenter` falls inside the safe zone the delta is 0.
 * When it falls outside (e.g. a tiny trigger near a rounded corner), the
 * returned delta tells the caller how far to translate the tooltip element
 * so the clamped arrow ends up over the trigger center.
 */
declare function getArrowClampDelta({
  width,
  height,
  placement,
  borderRadius,
  arrowCenter,
  arrowWidth
}: ArrowClampDeltaOptions): {
  x: number;
  y: number;
};
//#endregion
export { generateSvgFloatingContentPath, getArrowClampDelta, getArrowSide };