import * as _angular_core from '@angular/core';
import { AfterContentInit, OnChanges } from '@angular/core';
import { BackgroundColorVariant } from '@siemens/element-ng/common';
import { TranslatableString } from '@siemens/element-translate-ng/translate';
import { Subject } from 'rxjs';

declare class SiCollapsiblePanelComponent {
    /**
     * Heading for the collapsible panel.
     */
    readonly heading: _angular_core.InputSignal<TranslatableString | undefined>;
    /**
     * Additional CSS classes for the top element.
     *
     * @defaultValue ''
     */
    readonly headerCssClasses: _angular_core.InputSignal<string>;
    /**
     * Additional CSS classes for the collapsible content region.
     *
     * @defaultValue ''
     */
    readonly contentBgClasses: _angular_core.InputSignal<string>;
    /**
     * Additional CSS classes for the wrapping content element.
     *
     * @defaultValue ''
     */
    readonly contentCssClasses: _angular_core.InputSignal<string>;
    /**
     * Expand/collapse the panel.
     *
     * @defaultValue false
     */
    readonly opened: _angular_core.ModelSignal<boolean>;
    /**
     * The icon to be displayed besides the heading.
     */
    readonly icon: _angular_core.InputSignal<string | undefined>;
    /**
     * Whether the si-collapsible-panel is disabled.
     *
     * @defaultValue false
     */
    readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Color variant for component background.
     *
     * @deprecated This input has no effect on the component styling.
     */
    readonly colorVariant: _angular_core.InputSignal<BackgroundColorVariant | undefined>;
    /**
     * Defines the content of the optional badge. Should be a number or something like "100+".
     * if undefined or empty string, no badge is displayed
     */
    readonly badge: _angular_core.InputSignal<string | number | undefined>;
    /**
     * Defines the background color of the badge. Default is specific to Element flavour.
     */
    readonly badgeColor: _angular_core.InputSignal<string | undefined>;
    /**
     * An event emitted when the user triggered expand/collapse and emit with the new open state.
     * The event is emitted before the animation happens.
     */
    readonly panelToggle: _angular_core.OutputEmitterRef<boolean>;
    protected readonly hcollapsed: _angular_core.Signal<boolean>;
    protected readonly fullHeight: _angular_core.Signal<boolean>;
    protected controlId: string;
    protected headerId: string;
    protected isHCollapsible: boolean;
    protected readonly icons: Record<"elementDown2", string>;
    protected readonly disableAnimation: _angular_core.WritableSignal<boolean>;
    private readonly accordionService;
    private readonly accordionHCollapseService;
    /** Restore the content scroll position between open/close of the panel. */
    private lastScrollPos;
    private readonly contentRef;
    constructor();
    /**
     * Expand/collapse panel.
     * @param open - indicate the panel shall open or close
     * @param enableAnimation - with animation
     */
    openClose(open: boolean, enableAnimation?: boolean): void;
    protected doToggle(event?: Event): void;
    protected keydown(event: KeyboardEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiCollapsiblePanelComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiCollapsiblePanelComponent, "si-collapsible-panel", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "headerCssClasses": { "alias": "headerCssClasses"; "required": false; "isSignal": true; }; "contentBgClasses": { "alias": "contentBgClasses"; "required": false; "isSignal": true; }; "contentCssClasses": { "alias": "contentCssClasses"; "required": false; "isSignal": true; }; "opened": { "alias": "opened"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "colorVariant": { "alias": "colorVariant"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "badgeColor": { "alias": "badgeColor"; "required": false; "isSignal": true; }; }, { "opened": "openedChange"; "panelToggle": "panelToggle"; }, never, ["[si-panel-heading]", "*"], true, never>;
}

declare class SiAccordionComponent implements AfterContentInit, OnChanges {
    /** @defaultValue true */
    readonly expandFirstPanel: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @defaultValue false */
    readonly fullHeight: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @defaultValue false */
    readonly hcollapsed: _angular_core.InputSignal<boolean>;
    /**
     * Indicate whether the accordion is collapsed.
     * @internal
     */
    readonly collapsed: _angular_core.Signal<boolean>;
    private readonly panels;
    private responsive;
    private destroyer;
    private service;
    private resizeObserver;
    private element;
    private accordionHCollapseService;
    ngOnChanges(): void;
    ngAfterContentInit(): void;
    private calcFullHeight;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAccordionComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiAccordionComponent, "si-accordion", never, { "expandFirstPanel": { "alias": "expandFirstPanel"; "required": false; "isSignal": true; }; "fullHeight": { "alias": "fullHeight"; "required": false; "isSignal": true; }; "hcollapsed": { "alias": "hcollapsed"; "required": false; "isSignal": true; }; }, {}, ["panels"], ["*"], true, never>;
}

/** @internal */
declare class SiAccordionService {
    /**
     * Emit an item in the accordion which should be toggled.
     */
    readonly toggle$: Subject<any>;
    /**
     * Subject to emit when the items should be expanded to their full height or restored to normal height.
     *
     * @defaultValue null
     */
    readonly fullHeight: _angular_core.WritableSignal<boolean | null>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAccordionService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<SiAccordionService>;
}

/** @internal */
declare class SiAccordionHCollapseService {
    /**
     * Emitting the current horizontal collapsed state.
     *
     * @defaultValue undefined
     */
    readonly hcollapsed: _angular_core.WritableSignal<boolean | undefined>;
    /**
     * Subject to emit to open the accordion.
     */
    readonly open$: Subject<unknown>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAccordionHCollapseService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<SiAccordionHCollapseService>;
}

declare class SiAccordionModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAccordionModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SiAccordionModule, never, [typeof SiAccordionComponent, typeof SiCollapsiblePanelComponent], [typeof SiAccordionComponent, typeof SiCollapsiblePanelComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SiAccordionModule>;
}

export { SiAccordionComponent, SiAccordionHCollapseService, SiAccordionModule, SiAccordionService, SiCollapsiblePanelComponent };
