/** @packageDocumentation
 * @module ElementGeometry
 */
import { ElementGeometry, GeometryParams, TextAnnotationFrameShape, TextFrameStyleProps } from "@itwin/core-common";
import { Loop, Path, Point3d, Range2d, Transform } from "@itwin/core-geometry";
/**
 * Based on the frame style, this method will construct and append [[GeometryParams]] (for line style) and a [[Loop]] (for the frame shape) to the builder.
 * @param builder that will be appended to in place
 * @param frame
 * @param range to enclose with the frame
 * @param transform that transforms the range to world coordinates
 * @returns `true` if any geometry was appended to the builder
* @beta
 */
export declare function appendFrameToBuilder(builder: ElementGeometry.Builder, frame: TextFrameStyleProps, range: Range2d, transform: Transform, geomParams: GeometryParams): boolean;
/**
 * Arguments for the [[computeFrame]] method.
 * @beta
 */
export interface ComputeFrameArgs {
    /** Frame shape to be calculated */
    frame: Exclude<TextAnnotationFrameShape, "none">;
    /** Range to be enclosed */
    range: Range2d;
    /** Transform that translates and rotates the range to world coordinates */
    transform: Transform;
}
/**
 * Computes the frame geometry based on the provided frame shape and range.
 * @returns a [Loop]($geometry) or [Path]($geometry) (if it's just a line) that represents the frame geometry
 * @beta
 */
export declare function computeFrame(args: ComputeFrameArgs): Loop | Path;
/**
 * Arguments for the [[computeIntervalPoints]] method.
 * @beta
 */
export interface ComputeIntervalPointsArgs extends ComputeFrameArgs {
    /** A factor applied to divide each straight edge. A value of 1 will place a single point on each vertex. */
    lineIntervalFactor?: number;
    /** A factor applied to divide each straight edge. A value of 1 will place a single point on each vertex. */
    arcIntervalFactor?: number;
}
/**
 * Computes points along the edges of the frame geometry based on the provided frame shape, range, and interval factors.
 * These can be used for snapping or attaching leaders.
 * @returns an array of [[Point3d]] that represent the points along the edges of the frame geometry. Returns `undefined` if the loop created by `computeFrame` is empty.
 * @beta
 */
export declare function computeIntervalPoints({ frame, range, transform, lineIntervalFactor, arcIntervalFactor }: ComputeIntervalPointsArgs): Point3d[] | undefined;
//# sourceMappingURL=FrameGeometry.d.ts.map