import { LitElement, SVGTemplateResult } from 'lit';
import { InstrumentState, Priority } from '../types.js';
import { LinearAdvice, LinearAdviceRaw } from './advice.js';
import { PropellerType } from './propeller.js';
declare const ObcThruster_base: (new (...args: any[]) => import('../../svghelpers/setpoint-mixin.js').SetpointMixinInterface) & typeof LitElement;
/**
 * @element obc-thruster
 *
 * @prop {number} thrust - The thrust of the thruster in percent (-100 - +100)
 * @prop {boolean} touching - Highlight the thruster when the lever is being touched
 * @prop {Priority} priority - Color priority: `Priority.enhanced` uses the blue/enhanced color palette, `Priority.regular` (default) uses the standard palette.
 */
export declare class ObcThruster extends ObcThruster_base {
    private _setpointId;
    thrust: number;
    state: InstrumentState;
    priority: Priority;
    tunnel: boolean;
    singleSided: boolean;
    singleDirection: boolean;
    singleDirectionHalfSize: boolean;
    advices: LinearAdvice[];
    topPropeller: PropellerType;
    bottomPropeller: PropellerType;
    render(): import('lit-html').TemplateResult<1>;
    static styles: import('lit').CSSResult;
}
export declare function thrusterTop(height: number, value: number, colors: {
    box: string;
    container: string;
}, options: {
    hideTicks: boolean;
    hideContainer: boolean;
    off: boolean;
}): (import('lit-html').TemplateResult<2> | import('lit-html').TemplateResult<2>[] | null)[];
/**
 * @param height - The height of the thruster
 * @param value - The value of the thruster
 * @param colors - The colors of the thruster (box and container)
 * @param options - The options of the thruster
 *  - hideTicks - Whether to hide the ticks
 *  - flipAdicePattern - Whether to flip the advice pattern, to be used when the thruster is on the bottom
 *  - hideContainer - Whether to not render the rounded container/wrapper around the thruster,
 *                    used by the main engine
 *  - narrow - Whether to use the narrow version of the thruster
 * @param advice - The advice of the thruster
 * @returns - The thruster top single sided
 */
export declare function thrusterTopSingleSided(height: number, value: number, colors: {
    box: string;
    container: string;
}, options: {
    hideTicks: boolean;
    flipAdicePattern: boolean;
    hideContainer: boolean;
    narrow: boolean;
    off: boolean;
}, advice: LinearAdviceRaw[]): import('lit-html').TemplateResult<2> | (import('lit-html').TemplateResult<2> | (import('lit-html').TemplateResult<2> | null)[])[];
export declare function thrusterBottom(height: number, value: number, colors: {
    box: string;
    container: string;
}, options: {
    hideTicks: boolean;
    hideContainer: boolean;
    off: boolean;
}): import('lit-html').TemplateResult<2>;
/**
 * Configuration for rendering a thruster setpoint marker.
 */
export interface ThrusterSetpointConfig {
    /** Instrument state (determines disabled status) */
    state: InstrumentState;
    /** Color priority (determines enhanced vs regular color palette) */
    priority: Priority;
    /** Whether value is at the setpoint (within deadband) */
    atSetpoint: boolean;
    /** User is physically interacting (renders focus visual state) */
    touching: boolean;
    /** Deadband for zero detection */
    setpointAtZeroDeadband: number;
    /** Whether the thruster is single-sided (marker on right side only) */
    singleSided: boolean;
    /** Whether to use narrow layout */
    narrow: boolean;
    /** Pending setpoint during adjustment (shows dual markers) */
    newSetpoint?: number;
    /** Unique ID prefix for SVG defs (avoids collisions with multiple instances) */
    id: string;
    /** Enable CSS-animated confirm transition for setpoint markers. */
    animateSetpoint?: boolean;
    /** Value of departing new-setpoint during confirm animation fade-out. */
    departingNewSetpoint?: number;
    /** Override to derive color from priority regardless of instrument state. */
    setpointOverride?: boolean;
}
/**
 * Render thruster setpoint marker(s) using the unified `drawSetpointMarker()`
 * system from `setpoint.ts`.
 *
 * Replaces the legacy `setpointSvg()` function with proper visual states
 * (focus, equalZero, equal, notEqual), themed colors, and sized markers.
 *
 * For double-sided thrusters, renders matching markers on both sides of the bar.
 * When `newSetpoint` is defined, renders dual markers (original dimmed + new in focus).
 *
 * @param height - Thruster bar height in SVG units
 * @param setpointValue - Setpoint value (percent, -100 to +100)
 * @param config - Setpoint rendering configuration
 * @returns SVG template with positioned setpoint marker(s)
 */
export declare function renderThrusterSetpoint(height: number, setpointValue: number, config: ThrusterSetpointConfig): SVGTemplateResult;
/**
 * @deprecated Use `renderThrusterSetpoint` instead, which supports
 * focus visual state, equalZero sizing, and the unified marker system.
 *
 * Legacy setpoint marker rendering with hardcoded SVG IDs.
 * Kept for backward compatibility only.
 */
export declare function setpointSvg(height: number, value: number, setpointAtZero: boolean, colors: {
    fill: string;
    stroke: string;
}, options: {
    filled: boolean;
    singleSided: boolean;
    narrow: boolean;
}): import('lit-html').TemplateResult<2>;
export declare function atSetpoint(thrust: number, setpoint: number | undefined, options: {
    autoAtSetpoint: boolean;
    autoAtSetpointDeadband: number;
    touching: boolean;
    atSetpoint: boolean;
}): boolean;
export declare function thruster(thrust: number, setpoint: number | undefined, state: InstrumentState, priority: Priority, options: {
    atSetpoint: boolean;
    tunnel: boolean;
    singleSided: boolean;
    singleDirection: boolean;
    singleDirectionHalfSize: boolean;
    setpointAtZeroDeadband: number;
    autoAtSetpoint: boolean;
    autoAtSetpointDeadband: number;
    touching: boolean;
    advices: LinearAdvice[];
    topPropeller: PropellerType;
    bottomPropeller: PropellerType;
    narrow: boolean;
    /** Pending setpoint during adjustment (shows dual markers) */
    newSetpoint?: number;
    /** Unique ID prefix for setpoint SVG defs. Falls back to legacy hardcoded IDs. */
    setpointId?: string;
    /** Enable CSS-animated confirm transition. */
    animateSetpoint?: boolean;
    /** Departing new-setpoint value during confirm animation fade-out. */
    departingNewSetpoint?: number;
    /** Override to derive color from priority regardless of instrument state. */
    setpointOverride?: boolean;
}): import('lit-html').TemplateResult<2>;
declare global {
    interface HTMLElementTagNameMap {
        'obc-thruster': ObcThruster;
    }
}
export declare function convertThrustAdvices(advices: LinearAdvice[], thrustSetpoint: number | undefined): {
    topAdvices: LinearAdviceRaw[];
    bottomAdvices: LinearAdviceRaw[];
};
export declare function thrusterColors(options: {
    atSetpoint: boolean;
    touching: boolean;
}, state: InstrumentState, priority: Priority): {
    zeroLineColor: string;
    boxColor: string;
    containerBackgroundColor: string;
    hideTicks: boolean;
    setPointColor: string;
    arrowColor: string;
};
export {};
//# sourceMappingURL=thruster.d.ts.map