import { LitElement, PropertyValues } from 'lit';
import { InstrumentState, FrameStyle, BorderRadiusPosition, Priority } from '../../navigation-instruments/types.js';
import { AdviceType } from '../../navigation-instruments/watch/advice.js';
import { ScaleType, FillMode, AdvicePosition, BarContainerStyle, ExternalScaleSide } from '../external-scale/external-scale.js';
export { ScaleType, FillMode, AdvicePosition, FrameStyle, BorderRadiusPosition, InstrumentState, Priority, BarContainerStyle, ExternalScaleSide, };
declare const ObcBarHorizontal_base: (new (...args: any[]) => import('../../svghelpers/setpoint-mixin.js').SetpointMixinInterface) & typeof LitElement;
/**
 * Horizontal SVG bar + external scale.
 *
 * 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 more test cases (Auto at-setpoint detection, Manual at-setpoint control, Deadband tuning and Zero snap behavior) see: **Bars and Graphs/Bar Vertical**.
 *
 * Set `priority` to `Priority.enhanced` to use the blue/enhanced color palette
 * for bar fill and setpoint instead of the default gray/regular palette
 * (default: `Priority.regular`).
 */
export declare class ObcBarHorizontal extends ObcBarHorizontal_base {
    /** Minimum scale value (manual mode) */
    minValue: number;
    /** Maximum scale value (manual mode) */
    maxValue: number;
    /** Total width in pixels (including padding bands) */
    width: number;
    /** Padding left of the drawing area */
    paddingLeft: 32;
    /** Padding right of the drawing area */
    paddingRight: 32;
    /** Which side this scale lives on */
    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.
     */
    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 scale tickmarks */
    hasScale: boolean;
    showLabels: boolean;
    /** Show bar */
    hasBar: boolean;
    /** Show background behind the scale tickmarks. */
    scaleBackground: boolean;
    /**
     * Bar container background style.
     * When undefined, defaults based on scaleBackground.
     * Set explicitly to override: 'primary' (lighter) or 'secondary' (gray).
     */
    barContainerStyle?: BarContainerStyle;
    /** Bar/fill thickness in pixels */
    barThickness: number;
    /** Tickmark band thickness in pixels. */
    tickThickness: number;
    /** Label band thickness in pixels. */
    labelThickness: number;
    /**
     * 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 (minimum 1).
     * When undefined, no primary tickmarks are shown.
     */
    primaryTickmarkInterval?: number;
    /**
     * Interval for secondary (medium) tickmarks (minimum 1).
     * When undefined, no secondary tickmarks are shown.
     */
    secondaryTickmarkInterval?: number;
    /**
     * Interval for tertiary (shortest) tickmarks (minimum 1).
     * When undefined, no tertiary tickmarks are shown.
     */
    tertiaryTickmarkInterval?: number;
    /** Scale display mode: regular or condensed (shorter ticks) */
    scaleType: ScaleType;
    /** Frame style: regular (4px gap for all), flat (main tickmarks touch edge), framed, or instrument */
    frameStyle: FrameStyle;
    /** Border radius position based on component layout */
    borderRadiusPosition?: BorderRadiusPosition;
    /**
     * When true, the component is used inside an instrument (e.g., gauge-trend).
     * In this mode, only label font size responds to .obc-component-size-* CSS classes.
     * Border radius and bar thickness use explicit values or defaults, not CSS variables.
     * @default false
     */
    instrumentMode: boolean;
    /**
     * Explicit border radius value in pixels.
     * When instrumentMode=true, this value is used directly (defaults to 8px for regular, 4px for condensed).
     * When instrumentMode=false, this is ignored and border radius is read from CSS variable.
     */
    borderRadius?: number;
    private _computedBorderRadius?;
    private _borderRadiusObserver?;
    private _borderRadiusResizeController;
    /** Color priority: enhanced uses blue instrument colors for bar fill and setpoint */
    priority: Priority;
    /** Fill visualization mode: fill or tint */
    fillMode: FillMode;
    /** Minimum fill value for tint mode (defaults to 0) */
    fillMin?: number;
    /** Maximum fill value for tint mode (defaults to value) */
    fillMax?: number;
    /** Current value (bar fill level) */
    value?: number;
    /** Instrument state (affects colors and some marker behavior) */
    state: InstrumentState;
    /** Advice overlay positioning: center (in bar), inner (covers minor ticks), outer (no overlap) */
    advicePosition: AdvicePosition;
    /**
     * Advice/alert overlays with state and positioning.
     * 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>;
    updated(changed: PropertyValues): void;
    /**
     * Report scale dimensions to parent chart component.
     * When fixedAspectRatio=true, reports the actual visual (scaled) thickness
     * so the chart can correctly reserve space for the scale.
     * When fixedAspectRatio=false, reports the base/unscaled thickness.
     */
    private reportDimensions;
    protected createRenderRoot(): this;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private _startBorderRadiusObserver;
    /**
     * Apply CSS styles needed for fixedAspectRatio mode.
     * Custom elements are display:inline by default, which doesn't work with percentage-based sizing.
     * We need display:block and width:100% to fill the slot container.
     */
    private _applyFixedAspectRatioStyles;
    /**
     * Remove fixed aspect ratio styles when switching back to pixel mode.
     */
    private _removeFixedAspectRatioStyles;
    /**
     * Calculate scale based on current element size.
     * Called when fixedAspectRatio is enabled or scaleReferenceSize changes.
     */
    private _updateScaleFromCurrentSize;
    private _refreshBorderRadiusFromCssVar;
    /**
     * Get the effective border radius to use.
     * In instrument mode: use explicit borderRadius prop or default based on scaleType.
     * In normal mode: use CSS variable computed value.
     */
    private _getEffectiveBorderRadius;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-bar-horizontal': ObcBarHorizontal;
    }
}
//# sourceMappingURL=bar-horizontal.d.ts.map