import { Control } from './Control.js';
import type { Defaults, ScaleControlDefaults, ScaleControlOptions } from '../types.js';
import type { LeafletMap } from '../map/Map.js';
/** @import {ControlOptions, Defaults, ScaleControlDefaults, ScaleControlOptions} from '../types.js' */
/** @import {LeafletMap} from '../map/Map.js' */
/** @satisfies {Defaults<ControlOptions>} */
declare const defaultOptions: {
    /**
     * The position of the control (one of the map corners). Possible values
     * are `'topleft'`, `'topright'`, `'bottomleft'` or `'bottomright'`
     */
    position: "bottomleft";
    /**
     * Maximum width of the control in pixels. The width is set
     * dynamically to show round values (e.g. 100, 200, 500).
     */
    maxWidth: number;
    /** Whether to show the metric scale line (m/km). */
    metric: boolean;
    /** Whether to show the imperial scale line (mi/ft). */
    imperial: boolean;
    /**
     * If `true`, the control is updated on [`moveend`](#map-moveend), otherwise
     * it's always up-to-date (updated on [`move`](#map-move)).
     */
    updateWhenIdle: boolean;
};
export type ScaleControlDefaultsValues = typeof defaultOptions;
/** @typedef {typeof defaultOptions} ScaleControlDefaultsValues */
/**
 * A simple scale control that shows the scale of the current center of screen
 * in metric (m/km) and imperial (mi/ft) systems. Extends `Control`.
 * @example
 * ```js
 * new ScaleControl().addTo(map);
 * ```
 * @template {ScaleControlOptions} [O=ScaleControlOptions]
 * @extends {Control<O & ScaleControlDefaults>}
 */
export declare class ScaleControl<O extends ScaleControlOptions = ScaleControlOptions> extends Control<O & ScaleControlDefaults> {
    /** @type {HTMLElement} */
    _mScale: HTMLElement;
    /** @type {HTMLElement} */
    _iScale: HTMLElement;
    /** @type {Defaults<ScaleControlOptions>} */
    static defaultOptions: Defaults<ScaleControlOptions>;
    /**
     * @param {LeafletMap} map
     * @returns {HTMLElement}
     */
    onAdd(map: LeafletMap): HTMLElement;
    /** @param {LeafletMap} map */
    onRemove(map: LeafletMap): void;
    /**
     * @param {ScaleControlOptions} options
     * @param {string} className
     * @param {HTMLElement} container
     */
    _addScales(options: ScaleControlOptions, className: string, container: HTMLElement): void;
    _update(): void;
    /** @param {number} maxMeters */
    _updateScales(maxMeters: number): void;
    /** @param {number} maxMeters */
    _updateMetric(maxMeters: number): void;
    /** @param {number} maxMeters */
    _updateImperial(maxMeters: number): void;
    /**
     * @param {HTMLElement} scale
     * @param {string} text
     * @param {number} ratio
     */
    _updateScale(scale: HTMLElement, text: string, ratio: number): void;
    /** @param {number} num */
    _getRoundNum(num: number): number;
}
export {};
