import { LitElement, PropertyValues } from 'lit';
import { InstrumentState, FrameStyle, BorderRadiusPosition, Priority } from '../types.js';
import { AdviceType } from '../watch/advice.js';
import { ScaleType, FillMode, AdvicePosition, ExternalScaleSide } from '../../building-blocks/external-scale/external-scale.js';
export { ScaleType, FillMode, AdvicePosition, FrameStyle, BorderRadiusPosition, InstrumentState, ExternalScaleSide, };
declare const ObcGaugeHorizontal_base: (new (...args: any[]) => import('../../svghelpers/setpoint-mixin.js').SetpointMixinInterface) & typeof LitElement;
/**
 * `<obc-gauge-horizontal>` – A horizontal gauge component with bar and scale background.
 *
 * Use `obc-gauge-horizontal` when you need a standalone horizontal gauge with a visible scale
 * and bar. This is ideal for displaying single values like speed, power, or progress where
 * the scale context is always needed.
 *
 * This is the same as `obc-bar-horizontal` (both use `external-scale.ts`)
 * but with several properties fixed for consistent gauge appearance.
 * Unlike `obc-bar-horizontal`, this component always shows the bar and scale background.
 *
 * ---
 *
 * ### Features
 * - **Fixed Layout:** Width (384px), padding (32px), bar/tick/label thicknesses, and border radius are fixed for consistent gauge appearance.
 * - **Scale Configuration:**
 *   - Configurable `minValue` and `maxValue` for the value range.
 *   - Optional main, primary, secondary, and tertiary tickmarks at specified intervals.
 *   - Labels shown at primary tickmark intervals (controlled via `showLabels`).
 * - **Side Positioning:** Can be placed on the `top` or `bottom` side via the `side` property.
 * - **Value Display:**
 *   - `value` property drives the bar fill.
 *   - `fillMode` controls visualization: `fill` shows bar from `fillMin` to `fillMax`; `tint` adds a marker at the `value` position.
 *   - Set `priority` to `Priority.enhanced` to use the blue/enhanced color palette for bar fill and setpoint (default: `Priority.regular`).
 * - **Setpoint Marker:**
 *   - Optional `setpoint` value displays a marker.
 *   - Automatic at-setpoint detection with configurable deadband.
 * - **Advice Overlays:** Render advice ranges with different types and hinted states.
 * - **Fixed Aspect Ratio:** When enabled, scales the component proportionally while keeping label font-size constant.
 * - **Dimension Reporting:** Dispatches `scale-dimensions-changed` events for parent chart integration.
 *
 * ---
 *
 * ### Fixed Properties (not configurable)
 * - `width`: 384px
 * - `paddingLeft`/`paddingRight`: 32px (`CHART_DIMENSIONS.CANVAS_PADDING`)
 * - `barThickness`: 48px
 * - `tickThickness`: 24px
 * - `labelThickness`: 60px
 * - `borderRadius`: 8px (matches obc-component-size-medium)
 * - `scaleType`: regular
 * - `frameStyle`: regular
 * - `hasBar`: true
 * - `hasScale`: true
 * - `scaleBackground`: true
 * - `fixedAspectRatio`: true (always scales proportionally)
 *
 * ---
 *
 * ### Implementation
 * This is a higher fidelity implementation of the concept shown in `instrument-linear.ts`,
 * providing a complete gauge with container, scale background, tickmarks, labels, advice overlays, and setpoint marker.
 *
 * This is a thin web-component wrapper around the pure SVG building-block renderer in `external-scale.ts`.
 * It sets up the outer `<svg>`/`viewBox` for a horizontal scale and delegates rendering/layout to:
 * - `computeExternalScaleLayout(...)`
 * - `renderExternalScale(config)`
 *
 * For renderer documentation see: **Building Blocks/External Scale**.
 *
 * For a version where these properties are user-configurable, see **Bars and Graphs/Bar Horizontal**.
 *
 * ---
 *
 * ### Events
 * - `scale-dimensions-changed` – Fired when layout-affecting properties (`side`, `showLabels`) change, reporting dimensions to parent chart components.
 *
 * ---
 *
 * ### Example
 *
 * ```html
 * <obc-gauge-horizontal
 *   min-value="0"
 *   max-value="100"
 *   value="75"
 *   primary-tickmark-interval="20"
 *   secondary-tickmark-interval="10"
 *   setpoint="80"
 *   side="bottom"
 * ></obc-gauge-horizontal>
 * ```
 *
 * @fires scale-dimensions-changed {CustomEvent} Fired when layout-affecting properties change, providing dimension info for parent chart integration.
 */
export declare class ObcGaugeHorizontal extends ObcGaugeHorizontal_base {
    /** Minimum scale value */
    minValue: number;
    /** Maximum scale value */
    maxValue: number;
    private readonly width;
    private readonly paddingLeft;
    private readonly paddingRight;
    /** Which side of the chart area this scale lives on (top or bottom) */
    side: ExternalScaleSide;
    /**
     * When true, freezes all internal calculations and scales the entire component
     * proportionally (like CSS transform:scale), except label font-size remains constant.
     * When false (default), dimensions react to component properties.
     *
     * This property is intentionally not exposed as a public API or Storybook control.
     * It can be set programmatically by parent components (e.g., GaugeTrend).
     */
    fixedAspectRatio: boolean;
    /**
     * Reference size for proportional scaling when fixedAspectRatio is true.
     * At this width, the scale renders at native 1:1 (matches Figma design).
     * Above this width, the scale grows proportionally; below, it shrinks.
     * @default 384
     */
    scaleReferenceSize: number;
    private _scale;
    private _resizeController;
    /** Show numerical value labels at primary tickmarks */
    showLabels: boolean;
    private readonly barThickness;
    private readonly tickThickness;
    private readonly labelThickness;
    /** Array of values for main tickmarks. When undefined, no main tickmarks shown. When empty array [], defaults to [minValue, 0, maxValue]. */
    mainTickmarks?: number[];
    /** Interval for primary (longest) tickmarks with labels */
    primaryTickmarkInterval?: number;
    /** Interval for secondary (medium) tickmarks */
    secondaryTickmarkInterval?: number;
    /** Interval for tertiary (shortest) tickmarks */
    tertiaryTickmarkInterval?: number;
    private readonly scaleType;
    private readonly frameStyle;
    /** Border radius position based on component layout */
    borderRadiusPosition?: BorderRadiusPosition;
    private readonly borderRadius;
    private get hasBar();
    private get scaleBackground();
    private get hasScale();
    /** Color priority: enhanced uses blue instrument colors for bar fill and setpoint */
    priority: Priority;
    /** Fill visualization mode: 'fill' shows bar from fillMin to fillMax; 'tint' adds a marker at the value position */
    fillMode: FillMode;
    /** Minimum fill value (defaults to 0) */
    fillMin?: number;
    /** Maximum fill value (defaults to value) */
    fillMax?: number;
    /** Current value (bar fill level) */
    value?: number;
    /** Instrument state: active, loading, or off */
    state: InstrumentState;
    /**
     * @deprecated Use `touching` (from SetpointMixin) instead.
     * Kept for backward compatibility. Synced to `touching` in `willUpdate()`.
     */
    focused: boolean;
    private readonly advicePosition;
    /** Advice/alert overlays with min, max, type, and hinted state. When undefined or empty, no advice shown. */
    advices?: Array<{
        min: number;
        max: number;
        type: AdviceType;
        hinted: boolean;
    }>;
    /**
     * When true, displays a dot indicator at the current value position.
     * The dot is rendered in the scale band, touching its inner edge (towards the chart).
     * This provides an alternative to bar fill for highlighting the current value.
     * @default false
     */
    highlightCurrentValue: boolean;
    render(): import('lit-html').TemplateResult<1>;
    willUpdate(changed: PropertyValues): void;
    updated(changed: PropertyValues): void;
    /**
     * Report scale dimensions to parent chart component.
     * Always reports unscaled/reference dimensions so the parent chart can apply
     * consistent proportional scaling in fixedAspectRatioScaling mode.
     */
    private reportDimensions;
    protected createRenderRoot(): this;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-gauge-horizontal': ObcGaugeHorizontal;
    }
}
//# sourceMappingURL=gauge-horizontal.d.ts.map