/**
 * How a count is written on a cluster marker: the count itself up to 99, and `99+` above that.
 *
 * Three characters is the most the counter circle holds, and the font size is chosen for three, so
 * a longer label would have to be drawn smaller or clipped.
 * @param count - How many points the cluster holds.
 * @returns The label.
 */
export declare function clusterCountText(count: number): string;
/**
 * The counter circle inside a cluster pin, in CSS pixels from the pin's top-left corner. The pin
 * fills its canvas, so this is also the canvas's CSS coordinate space.
 * @param widthPx - The pin's width in CSS pixels.
 * @returns The circle's center and radius.
 */
export declare function clusterCounterCircle(widthPx: number): {
    cx: number;
    cy: number;
    r: number;
};
/**
 * The count's em height, chosen once so that `99+` — the widest label — fits inside the circle, and
 * used for every count so a marker does not change size as its membership changes.
 *
 * The label's half-diagonal is what has to fit, not its half-width: a box inscribed in a circle
 * touches at its corners.
 * @param radiusPx - The counter circle's radius in CSS pixels.
 * @returns The font size in CSS pixels.
 */
export declare function clusterCountFontPx(radiusPx: number): number;
/**
 * The teardrop's height as a fraction of its width, for every pin drawn from `createPinCanvas`.
 * Here rather than in `canvases.ts`, so a pin's height is computable without loading a module that
 * builds a canvas.
 */
export declare const PIN_ASPECT: number;
/** The pin head's radius as a fraction of the pin's width, for the PoI pin and the cluster pin. */
export declare const PIN_HEAD_FACTOR = 0.37;
/** The edge stroke's width in CSS pixels, which `createPinCanvas` also takes as its inset. */
export declare const PIN_EDGE_PX = 1.4;
/** The counter circle's radius as a fraction of the pin head's radius. */
export declare const CLUSTER_CIRCLE_FACTOR = 0.78;
/**
 * One character's advance width as a fraction of the font size, for the SDK's condensed face.
 *
 * An estimate, like {@link CLUSTER_COUNT_CAP_EM} and {@link CLUSTER_COUNT_FIT}, rather than a
 * computation: the count is laid out by the renderer's text engine and not by a 2D context, so
 * there is nothing here to call `measureText` on. Nothing automated checks the three against the
 * shipped font. The renderer's `ClusterCounts` baselines draw a fixture font, so they check the
 * layout, not these numbers. The real check is visual: run the app and look at a `99+` marker.
 */
export declare const CLUSTER_COUNT_ADVANCE_EM = 0.58;
/**
 * How far below a `top`-aligned line's top edge the digits' ink center sits, in em. Troika anchors
 * the line at the block's top, ascender space included, so this lifts the glyphs from that edge onto
 * the circle's center. Measured in the running app with the shipped font (device ratios 1 and 2, one
 * to three characters), not half the block, which was the 0.5 it replaced. The name keeps the old
 * "half block" wording. The renderer story `ClusterCounts` keeps its own value for its fixture font.
 */
export declare const COUNT_BLOCK_HALF_EM = 0.61;
/** A digit's cap height as a fraction of the font size, measured the same way. */
export declare const CLUSTER_COUNT_CAP_EM = 0.72;
/** How much of the circle the label claims, leaving a visible ring of white around it. */
export declare const CLUSTER_COUNT_FIT = 0.88;
//# sourceMappingURL=pin-geometry.d.ts.map