import { CdkConnectedOverlay, CdkOverlayOrigin, ScrollStrategy } from '@angular/cdk/overlay';
import { TemplateRef } from '@angular/core';
import { KbqComponentColors, PopUpPlacements } from '@koobiq/components/core';
import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
import { KbqFormField, KbqLabel } from '@koobiq/components/form-field';
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
import * as i0 from "@angular/core";
import * as i1 from "@koobiq/components/core";
/** @docs-private */
export declare class KbqFocusRegionItem {
    readonly tabOut: import("@angular/core").OutputEmitterRef<KeyboardEvent>;
    protected isFocused: boolean;
    protected onTabOut(event: KeyboardEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqFocusRegionItem, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqFocusRegionItem, "[kbqFocusRegionItem]", ["kbqFocusRegionItem"], {}, { "tabOut": "tabOut"; }, never, never, true, never>;
}
/** Directive for easy using styles of inline edit placeholder publicly. */
export declare class KbqInlineEditPlaceholder {
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqInlineEditPlaceholder, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqInlineEditPlaceholder, "[kbqInlineEditPlaceholder]", ["kbqInlineEditPlaceholder"], {}, {}, never, never, true, never>;
}
/**
 * This directive enhances element acting as dropdown trigger,
 * visually indicating the active state with the `kbq-active` class.
 * Also, it prevents click/keydown events from being propagated to disable mode toggling of parent component.
 */
export declare class KbqInlineEditMenu {
    /** @docs-private */
    protected readonly dropdownTrigger: KbqDropdownTrigger | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqInlineEditMenu, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<KbqInlineEditMenu, "[kbqInlineEditMenu]", ["kbqInlineEditMenu"], {}, {}, never, never, true, never>;
}
/**
 * Customizable component that enables edit-in-place logic for specified control and it's view.
 * This component is projecting edit/view mode templates and adds keyboard/pointer handlers.
 * Edit mode opens in a positioned overlay that matches the view mode width or can be customized.
 */
export declare class KbqInlineEdit {
    private readonly elementRef;
    private readonly kbqFocusMonitor;
    private readonly overlay;
    private readonly document;
    /**
     * Whether to show save/cancel action buttons in edit mode.
     * @default false
     */
    readonly showActions: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether to automatically show validation error tooltips on save attempts.
     * @default true
     */
    readonly showTooltipOnError: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
    /** Custom validation tooltip message. */
    readonly validationTooltip: import("@angular/core").InputSignal<string | TemplateRef<any> | undefined>;
    /**
     * Disables the component, preventing interaction and mode switching. Only allows menu dropdown.
     * @default false
     */
    readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
    /** Custom width in pixels for the edit mode overlay. Auto-calculated if not set. */
    readonly editModeWidth: import("@angular/core").InputSignalWithTransform<number | undefined, unknown>;
    /** User-defined tooltip placement */
    readonly tooltipPlacement: import("@angular/core").InputSignal<PopUpPlacements | undefined>;
    /** Handler function to retrieve the current value */
    readonly getValueHandler: import("@angular/core").InputSignal<(() => unknown) | undefined>;
    /** Handler function to update the value */
    readonly setValueHandler: import("@angular/core").InputSignal<((value: any) => void) | undefined>;
    /**
     * Customizable function that checks if saving on enter available.
     */
    readonly canSaveOnEnter: import("@angular/core").InputSignal<(event: KeyboardEvent) => boolean>;
    /** Emitted when the inline edit is saved successfully. */
    protected readonly saved: import("@angular/core").OutputEmitterRef<void>;
    /** Emitted when the inline edit is canceled and changes are discarded. */
    protected readonly canceled: import("@angular/core").OutputEmitterRef<void>;
    /** Emitted when mode switched to edit/view */
    protected readonly modeChange: import("@angular/core").OutputEmitterRef<"view" | "edit">;
    /** @docs-private */
    protected readonly menu: import("@angular/core").Signal<KbqInlineEditMenu | undefined>;
    /** @docs-private */
    protected readonly label: import("@angular/core").Signal<KbqLabel | undefined>;
    /** @docs-private */
    protected readonly formFieldRef: import("@angular/core").Signal<KbqFormField | undefined>;
    /** @docs-private */
    protected readonly overlayOrigin: import("@angular/core").Signal<CdkOverlayOrigin>;
    /** @docs-private */
    protected readonly tooltipTrigger: import("@angular/core").Signal<KbqTooltipTrigger | undefined>;
    /** @docs-private */
    protected readonly overlayDir: import("@angular/core").Signal<CdkConnectedOverlay | undefined>;
    /** @docs-private */
    protected readonly regionItems: import("@angular/core").Signal<readonly KbqFocusRegionItem[]>;
    /** @docs-private */
    protected readonly mode: import("@angular/core").WritableSignal<"view" | "edit">;
    /** @docs-private */
    protected readonly overlayWidth: import("@angular/core").WritableSignal<string | number>;
    /** @docs-private */
    protected readonly scrollStrategy: import("@angular/core").WritableSignal<ScrollStrategy>;
    /** @docs-private */
    readonly modeAsReadonly: import("@angular/core").Signal<"view" | "edit">;
    /** @docs-private */
    protected readonly className: import("@angular/core").Signal<string>;
    /** @docs-private */
    protected readonly isEditMode: import("@angular/core").Signal<boolean>;
    /** @docs-private */
    protected readonly tabIndex: import("@angular/core").Signal<0 | -1>;
    /** @docs-private */
    protected readonly placements: typeof PopUpPlacements;
    /** @docs-private */
    protected readonly colors: typeof KbqComponentColors;
    private initialValue;
    constructor();
    /** @docs-private */
    protected toggleMode(): void;
    /** @docs-private */
    protected onClick(event: Event): void;
    /** @docs-private */
    protected onAttach(): void;
    /** @docs-private */
    protected save($event?: Event): void;
    /** @docs-private */
    protected cancel(): void;
    /** @docs-private */
    protected onOverlayKeydown(event: KeyboardEvent): void;
    /**
     * Sets up Tab key listeners on region items.
     * Single item: Tab moves to next edit.
     * Multiple items: Shift+Tab on first or Tab on last moves to next edit.
     */
    private setOverlayKeydownListener;
    private saveAndFocusNextInlineEdit;
    private isInvalid;
    private getValue;
    private setValue;
    private coerceControl;
    private setOverlayWidth;
    private openPanel;
    private getInputNativeElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqInlineEdit, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqInlineEdit, "kbq-inline-edit", ["kbqInlineEdit"], { "showActions": { "alias": "showActions"; "required": false; "isSignal": true; }; "showTooltipOnError": { "alias": "showTooltipOnError"; "required": false; "isSignal": true; }; "validationTooltip": { "alias": "validationTooltip"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "editModeWidth": { "alias": "editModeWidth"; "required": false; "isSignal": true; }; "tooltipPlacement": { "alias": "tooltipPlacement"; "required": false; "isSignal": true; }; "getValueHandler": { "alias": "getValueHandler"; "required": false; "isSignal": true; }; "setValueHandler": { "alias": "setValueHandler"; "required": false; "isSignal": true; }; "canSaveOnEnter": { "alias": "canSaveOnEnter"; "required": false; "isSignal": true; }; }, { "saved": "saved"; "canceled": "canceled"; "modeChange": "modeChange"; }, ["menu", "label", "formFieldRef"], ["kbq-label", "[kbqInlineEditViewMode]", "[kbqInlineEditMenu]", "[kbqInlineEditEditMode]"], true, [{ directive: typeof i1.KbqFocusMonitor; inputs: {}; outputs: {}; }]>;
}
