import type { MapGlyphSource } from '../imageStore.js';
import type { GlyphPath, GlyphPoint } from './glyph.spec.js';
/**
 * Quads
 * - BOX: [s, t, xOffset, yOffset, xPos, yPos, width, height, texX, texY, texWidth, texHeight]
 * - CIRCLE: [s, t, xOffset, yOffset, path1X, path1Y, path2X, path2Y, path3X, path3Y, path4X, path4Y, distance, texX, texY, texWidth, texHeight]
 *
 * the xPos and yPos are for the 0->1 ratio placement. This is computed internally with size
 * meanwhile xOffset and yOffset are where to start from the s, t position (the pixel based offset)
 */
export type Quad = number[];
/**
 * BOX: [s, t, anchorOffsetX, anchorOffsetY, offsetX, offsetY, paddingX, paddingY, maxWidth, maxHeight, index, id]
 * CIRCLE: [s, t, anchorOffsetX, anchorOffsetY, offsetX, offsetY, paddingX, paddingY, maxWidth, maxHeight, index, id]
 */
export type Filter = number[];
/** Row: [rowCount, rowWidth, rowHeight] */
export type Row = [rowCount: number, rowWidth: number, rowHeight: number];
export declare const QUAD_SIZE_TEXT = 12;
export declare const QUAD_SIZE_PATH = 20;
export declare const NULL_GLYPH: {
    code: string;
    texX: number;
    texY: number;
    texW: number;
    texH: number;
    xOffset: number;
    yOffset: number;
    width: number;
    height: number;
    advanceWidth: number;
};
/**
 * This step exclusively creates quad data, E.G. How to draw each glyph on the screen,
 * given the anchor point as a basis for drawing. This step is seperate to preprocessing
 * as we are avoiding doing too much work prior to potentially filtering the object (rtree).
 * NOTE: EVERY GLYPH is currently "normalized", with a 0->1 scale so it can later be
 * multiplied by "size"
 * NOTE: Just put the glyph offsets + word-wrap-y offset provided at first,
 * add in the excess anchor offset AFTER we know the bbox size
 * TODO: https://blog.mapbox.com/beautifying-map-labels-with-better-line-breaking-2a6ce3ed432
 * @param feature - input glyph point feature
 * @param glyphSource - glyph source to pull glyph metadata from
 * @param tileSize - tile size/extent
 */
export declare function buildGlyphPointQuads(feature: GlyphPoint, glyphSource: MapGlyphSource, tileSize: number): void;
/**
 * Build glyph path quads
 * IDEATION: https://blog.mapbox.com/map-label-placement-in-mapbox-gl-c6f843a7caaa
 * @param feature - glyph lines feature
 * @param glyphSource - glyph source to pull glyph metadata from
 * @param tileSize - tile size/extent
 */
export declare function buildGlyphPathQuads(feature: GlyphPath, glyphSource: MapGlyphSource, tileSize: number): void;
