import { LitElement, nothing } from 'lit';
import { ObcPoiObjectState, ObcPoiObjectType } from '../poi-object/poi-object.js';
import { ObcPoiSelectionFrameState, ObcPoiSelectionFrameType } from '../poi-selection-frame/poi-selection-frame.js';
import '../poi-header/poi-header.js';
import '../poi-selection-frame/poi-selection-frame.js';
export declare enum ObcPoiButtonType {
    Button = "button",
    Enhanced = "enhanced"
}
export declare enum ObcPoiButtonLayout {
    Anchored = "anchored",
    Inline = "inline"
}
export declare enum ObcPoiButtonState {
    Enabled = "enabled",
    Caution = "caution",
    Warning = "warning",
    Alarm = "alarm"
}
export declare enum PoiButtonVisualState {
    Unchecked = "unchecked",
    Checked = "checked",
    Activated = "activated",
    Overlapped = "overlapped"
}
export declare function resolvePoiButtonTypeFromBoxSize(boxWidthPx: number | null | undefined, boxHeightPx: number | null | undefined, enhancedAreaThresholdPx?: number): ObcPoiButtonType;
export interface ObcPoiButtonDataItem {
    value: string;
    label: string;
    unit: string;
}
/**
 * `<obc-poi-button>` - Marker button component that renders an icon target with optional header and data rows.
 *
 * ## Overview
 * Use this component when you need a button-style marker that can show stateful framing and optional metric rows.
 * Keywords/synonyms: marker button, target button, icon target, POI button.
 *
 * ## Features/Variants
 * - `type` (default `button`): `button` or `enhanced` size.
 * - `layout` (default `anchored`): `anchored` or `inline`.
 * - `value` (default `unchecked`): `unchecked`, `checked`, `activated`, `overlapped`.
 * - `overlapOpaque` (default `false`): controls overlapped opacity mode (`false` = translucent, `true` = opaque).
 * - `state` (default `enabled`): `enabled`, `caution`, `warning`, `alarm`.
 * - `selected` (default `false`): shows selection frame in anchored layout.
 * - `relativeDirection` (default `0`): rotates default-slot icon content in degrees.
 * - `data` (default `[]`): when non-empty, renders value/label/unit rows.
 * - `hasHeader` + `header` slot: renders a header area and syncs slotted `obc-poi-header` state.
 * - `hasRelation` (default `false`): enables optional relation content in data mode.
 * - `inExpandedGroup` (default `false`): applies `expanded` CSS class.
 * - TODO(designer): Confirm intended UX semantics for `inExpandedGroup` beyond styling.
 *
 * ## Usage Guidelines
 * - Use `layout="anchored"` for standalone marker buttons.
 * - Use `layout="inline"` when this component is embedded in a larger marker composition.
 * - Provide `data` for metric display variants.
 * - Enable `hasRelation` only when relation slot content is provided.
 *
 * ## Slots/Content
 * - Default slot: Icon/content rendered inside `obc-poi-object`.
 * - `header`: Optional header content rendered above the marker body.
 * - `relation`: Optional relation icon/content rendered when `hasRelation` is true in data mode.
 *
 * ## Events
 * This component does not emit custom events.
 * Native `click` is available from the internal `<button>`.
 *
 * ## Best Practices
 * - Keep `value`, `state`, and `selected` synchronized to avoid conflicting visual states.
 * - Prefer enum values for `type`, `layout`, `state`, and `value`.
 *
 * ## Example
 * ```html
 * <obc-poi-button type="button" layout="anchored" value="checked" selected>
 *   <obi-placeholder></obi-placeholder>
 *   <obc-poi-header slot="header" content="1"></obc-poi-header>
 * </obc-poi-button>
 * ```
 *
 * @slot - Icon/content rendered inside `obc-poi-object`.
 * @slot header - Optional header content rendered above the marker body.
 * @slot relation - Optional relation icon/content in data mode when `hasRelation` is true.
 */
export declare class ObcPoiButton extends LitElement {
    relativeDirection: number;
    selected: boolean;
    layout: ObcPoiButtonLayout;
    hasHeader: boolean;
    state: ObcPoiButtonState;
    value: PoiButtonVisualState;
    overlapOpaque: boolean;
    type: ObcPoiButtonType;
    inExpandedGroup: boolean;
    data: ObcPoiButtonDataItem[];
    hasRelation: boolean;
    headerContent: string;
    private headerContentObserver?;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private setupHeaderContentObserver;
    get hasData(): boolean;
    private get alertClassSuffix();
    private get resolvedHeaderState();
    private get hasHeaderContent();
    private get hasGeneratedHeaderContent();
    private syncSlottedHeaderState;
    private handleHeaderSlotChange;
    protected updated(_changedProperties: Map<string, unknown>): void;
    protected renderHeader(): import('lit-html').TemplateResult<1> | typeof nothing;
    protected get poiObjectType(): ObcPoiObjectType;
    protected get poiObjectState(): ObcPoiObjectState;
    protected get wrapperVariantClasses(): Record<string, boolean>;
    render(): import('lit-html').TemplateResult<1>;
    protected renderPoiObject(): import('lit-html').TemplateResult<1>;
    protected renderButton(): import('lit-html').TemplateResult<1>;
    protected renderWithData(): import('lit-html').TemplateResult<1>;
    protected get selectionFrameType(): ObcPoiSelectionFrameType;
    protected get selectionFrameState(): ObcPoiSelectionFrameState;
    protected renderSelectionFrame(): import('lit-html').TemplateResult<1> | typeof nothing;
    static styles: import('lit').CSSResult;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-poi-button': ObcPoiButton;
    }
}
//# sourceMappingURL=poi-button.d.ts.map