import type { Datum } from "../charts/shared/datumTypes";
/**
 * GeoParticlePool — particle system for geo line paths.
 *
 * Unlike the network ParticlePool (which uses bezier curves), this
 * travels particles along polyline paths (arrays of screen-space points).
 * Used by StreamGeoFrame to animate flow lines on maps.
 */
export interface GeoParticle {
    /** Progress along the polyline [0, 1] */
    t: number;
    /** Perpendicular offset from path centerline [-0.5, 0.5] */
    offset: number;
    /** Which line index this particle travels */
    lineIndex: number;
    active: boolean;
    x: number;
    y: number;
}
export interface GeoParticleStyle {
    /** Particle radius @default 2 */
    radius?: number;
    /** Particle color: a CSS color string, "source" to inherit from line stroke, or a function `(datum) => string` */
    color?: string | ((datum: Datum) => string);
    /** Particle opacity @default 0.7 */
    opacity?: number;
    /** Speed multiplier @default 1 */
    speedMultiplier?: number;
    /** Max particles per line @default 30 */
    maxPerLine?: number;
    /** Spawn rate (probability per frame per line) @default 0.15 */
    spawnRate?: number;
}
export declare class GeoParticlePool {
    particles: GeoParticle[];
    private capacity;
    constructor(capacity: number);
    spawn(lineIndex: number): GeoParticle | null;
    /**
     * Advance all active particles.
     * @param paths - array of polyline paths, one per line index
     * @param lineWidths - strokeWidth per line (for perpendicular offset scaling)
     */
    step(deltaTime: number, speed: number, paths: [number, number][][], lineWidths: number[]): void;
    countForLine(lineIndex: number): number;
    clear(): void;
}
