import { LitElement, PropertyValues } from 'lit';
import { AngleAdvice } from '../watch/advice.js';
import { VesselImage, RotType, RotPosition } from '../watch/watch.js';
import { InstrumentState, Priority } from '../types.js';
import '../watch/watch.js';
export { RotType };
export declare enum CompassDirection {
    NorthUp = "northUp",
    HeadingUp = "headingUp",
    CourseUp = "courseUp"
}
export declare enum CompassPriorityElement {
    hdg = "hdg",
    cog = "cog",
    rot = "rot",
    wind = "wind",
    current = "current"
}
/**
 * `<obc-compass>` – Full-featured compass with HDG/COG arrows, rate-of-turn indicator, and environmental overlays.
 *
 * Renders a circular compass instrument that displays heading (HDG) and
 * course-over-ground (COG) as rotating arrows over a triple-ring watch face.
 * It supports wind and current indicators, a vessel silhouette, heading
 * setpoint with auto at-setpoint detection, advice zones, and a rate-of-turn
 * (ROT) dot indicator. The compass can be oriented north-up, heading-up, or
 * course-up.
 *
 * ## Features
 *
 * - **Direction modes**: `northUp` (default), `headingUp`, or `courseUp`
 *   via the `direction` property.
 * - **HDG / COG arrows**: Two styled arrows overlay the watch face,
 *   rotating independently.
 * - **Heading setpoint**: Optional setpoint marker with auto at-setpoint
 *   detection via `headingSetpoint`, `atHeadingSetpoint`, and deadband
 *   tuning properties.
 * - **Advice zones**: Pass `headingAdvices` to render caution/alert arcs;
 *   triggered state is derived from whether the current heading falls
 *   inside the advice range.
 * - **Rate of turn**: Animated ROT indicator driven by `rotationsPerMinute`.
 *   Supports spinning dots (`rotType="dots"`) and a banana-shaped arc bar
 *   (`rotType="bar"`) showing the HDG→COG span. Position on the outer
 *   scale ring or inner circle via `rotPosition`.
 * - **Environmental overlays**: Wind speed/direction and current
 *   speed/direction indicators on the watch face.
 * - **Vessel image**: Configurable vessel silhouette centered on the
 *   compass, rotating with heading.
 * - **Color priority**: Set `priority` to `Priority.enhanced` to use the
 *   blue/enhanced color palette instead of the default gray/regular palette
 *   (default: `Priority.regular`).
 *
 * ## Usage Guidelines
 *
 * - Set `heading` and `courseOverGround` to the current sensor values
 *   in degrees.
 * - Use `direction` to control the compass orientation mode.
 * - Use `headingSetpoint` to show a target heading marker.
 * - Pass `headingAdvices` as an array of `AngleAdvice` objects for
 *   caution/alert zones.
 * - Set `windSpeed` / `windFromDirection` and `currentSpeed` /
 *   `currentFromDirection` to display environmental indicators.
 *
 * ## Example
 *
 * ```html
 * <obc-compass
 *   heading="45"
 *   courseOverGround="50"
 *   direction="northUp"
 *   headingSetpoint="90"
 *   priority="regular"
 *   vesselImage="genericTop"
 * ></obc-compass>
 * ```
 *
 * @property {number} heading - The current heading of the vessel in degrees.
 * @property {number} courseOverGround - The current course over ground in degrees.
 * @property {number | null} headingSetpoint - The set point for the heading in degrees.
 * @property {boolean} atHeadingSetpoint - Indicates if the vessel is at the heading set point.
 * @property {boolean} autoAtHeadingSetpoint - Enables automatic at heading set point calculation.
 * @property {number} autoAtHeadingSetpointDeadband - The deadband for the heading set point in degrees.
 * @property {boolean} touching - Indicates if the compass is being touched.
 * @property {Array<AngleAdvice>} headingAdvices - An array of angle advices for the compass.
 * @property {number | null} windSpeed - The wind speed in beaufort scale number.
 * @property {number | null} windFromDirection - The direction the wind is coming from in degrees.
 * @property {number | null} currentSpeed - The current speed, number of arrows.
 * @property {number | null} currentFromDirection - The direction the current is coming from in degrees.
 * @property {VesselImage} vesselImage - The image of the vessel.
 * @property {number} rotationsPerMinute - The number of rotations per minute for the rate of turn controller.
 * @property {RotType} rotType - ROT display mode: `'dots'` (spinning dots, default) or `'bar'` (arc bar from HDG to COG).
 * @property {RotPosition} rotPosition - ROT track position: `'innerCircle'` (default) or `'scale'` (on the outer ring).
 * @property {Priority} priority - Color priority: `Priority.enhanced` uses the blue/enhanced color palette, `Priority.regular` (default) uses the standard palette.
 *
 * @ignition-base-height: 512px
 * @ignition-base-width: 512px
 */
export declare class ObcCompass extends LitElement {
    heading: number;
    courseOverGround: number;
    headingSetpoint: number | null;
    newHeadingSetpoint: number | undefined;
    atHeadingSetpoint: boolean;
    headingSetpointAtZeroDeadband: number;
    headingSetpointOverride: boolean;
    autoAtHeadingSetpoint: boolean;
    autoAtHeadingSetpointDeadband: number;
    animateSetpoint: boolean;
    touching: boolean;
    headingAdvices: AngleAdvice[];
    windSpeed: number | null;
    windFromDirection: number | null;
    currentSpeed: number | null;
    currentFromDirection: number | null;
    vesselImage: VesselImage;
    rotationsPerMinute: number;
    rotType: RotType;
    rotPosition: RotPosition;
    rotMaxValue: number;
    rotArcExtent: number;
    direction: CompassDirection;
    state: InstrumentState;
    priority: Priority;
    priorityElements: CompassPriorityElement[];
    /** Show compass NSEW labels and north arrow. */
    showLabels: boolean;
    /** When true, labels and north arrow are placed inside the outer ring. */
    tickmarksInside: boolean;
    private _headingSp;
    willUpdate(changed: PropertyValues): void;
    disconnectedCallback(): void;
    private _resizeController;
    private getPadding;
    private get angleAdviceRaw();
    private priorityFor;
    private colorFor;
    private getRotation;
    render(): import('lit-html').TemplateResult<1>;
    static styles: import('lit').CSSResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-compass': ObcCompass;
    }
}
//# sourceMappingURL=compass.d.ts.map