import * as _angular_core from '@angular/core';
import { OnInit, OnChanges, OnDestroy, SimpleChanges, Signal } from '@angular/core';
import { Subject, BehaviorSubject } from 'rxjs';
import { TranslatableString } from '@siemens/element-translate-ng/translate';

declare class SiListDetailsComponent implements OnInit, OnChanges, OnDestroy {
    private resizeSubs?;
    private elementRef;
    private resizeObserver;
    private readonly listDetailsContainer;
    protected readonly animationsGloballyDisabled: boolean;
    /**
     * A numeric value defining the minimum width in px, which the component needs
     * to be displayed in its large layout. Whenever smaller than
     * this threshold, the small layout will be used. Default is
     * value is BOOTSTRAP_BREAKPOINTS.mdMinimum.
     *
     * @defaultValue BOOTSTRAP_BREAKPOINTS.mdMinimum
     */
    readonly expandBreakpoint: _angular_core.InputSignal<number>;
    readonly hasLargeSize: _angular_core.Signal<boolean>;
    /**
     * Whether the details are currently active or not, mostly relevant in the
     * responsive scenario when the viewport only shows either the list or the detail.
     *
     * @defaultValue false
     */
    readonly detailsActive: _angular_core.ModelSignal<boolean>;
    /**
     * Whether the list and detail parts should be resizable by a splitter or not.
     * This is only supported in the 'large' scenario (when `hasLargeSize` is `true`).
     * Default value is `false`.
     *
     * @defaultValue false
     */
    readonly disableResizing: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * The percentage width of the list view of the overall component width.
     *
     * @defaultValue 32
     */
    readonly listWidth: _angular_core.ModelSignal<number>;
    /**
     * Sets the minimal width of the list component in pixel.
     *
     * @defaultValue 300
     */
    readonly minListSize: _angular_core.InputSignal<number>;
    /**
     * Sets the minimal width of the detail component in pixel.
     *
     * @defaultValue 300
     */
    readonly minDetailsSize: _angular_core.InputSignal<number>;
    /**
     * An optional stateId to uniquely identify a component instance.
     * Required for persistence of ui state.
     */
    readonly stateId: _angular_core.InputSignal<string | undefined>;
    protected readonly splitSizes: _angular_core.Signal<[number, number]>;
    protected readonly listStateId: _angular_core.Signal<string | undefined>;
    protected readonly detailsStateId: _angular_core.Signal<string | undefined>;
    protected readonly opacity: _angular_core.Signal<"" | "0">;
    /** @internal */
    readonly detailsExpandedAnimation: _angular_core.Signal<"disabled" | "details-active expanded" | "collapsed">;
    private hadLargeSizePreviously;
    private detailsActivePreviously;
    private previouslyFocusedElementInList;
    /** @internal */
    readonly transferFocusToList: Subject<HTMLElement | undefined>;
    /**
     * A behavior subject because the details component may only be created when details are visible.
     * @internal
     */
    readonly transferFocusToDetails: BehaviorSubject<boolean>;
    private animationDone?;
    ngOnChanges(changes: SimpleChanges<this>): void;
    ngOnInit(): void;
    ngOnDestroy(): void;
    private readonly resizeDimensions;
    protected onSplitSizesChange(sizes: number[]): void;
    /** @internal */
    detailsBackClicked(options?: {
        animationDone?: () => void;
    }): void;
    protected detailsExpandedAnimationDone(event: TransitionEvent): void;
    private transferFocus;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiListDetailsComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiListDetailsComponent, "si-list-details", never, { "expandBreakpoint": { "alias": "expandBreakpoint"; "required": false; "isSignal": true; }; "detailsActive": { "alias": "detailsActive"; "required": false; "isSignal": true; }; "disableResizing": { "alias": "disableResizing"; "required": false; "isSignal": true; }; "listWidth": { "alias": "listWidth"; "required": false; "isSignal": true; }; "minListSize": { "alias": "minListSize"; "required": false; "isSignal": true; }; "minDetailsSize": { "alias": "minDetailsSize"; "required": false; "isSignal": true; }; "stateId": { "alias": "stateId"; "required": false; "isSignal": true; }; }, { "detailsActive": "detailsActiveChange"; "listWidth": "listWidthChange"; }, never, ["si-list-pane", "si-details-pane"], true, never>;
}

declare class SiListPaneComponent {
    protected parent: SiListDetailsComponent;
    private element;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiListPaneComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiListPaneComponent, "si-list-pane", never, {}, {}, never, ["*"], true, never>;
}

declare class SiListPaneHeaderComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiListPaneHeaderComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiListPaneHeaderComponent, "si-list-pane-header", never, {}, {}, never, ["*"], true, never>;
}

declare class SiListPaneBodyComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiListPaneBodyComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiListPaneBodyComponent, "si-list-pane-body", never, {}, {}, never, ["*"], true, never>;
}

declare class SiDetailsPaneComponent {
    protected parent: SiListDetailsComponent;
    private readonly routerOutlet;
    private subscription?;
    private destroyer;
    /** @internal */
    readonly isRouterBased: _angular_core.Signal<boolean>;
    constructor();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiDetailsPaneComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDetailsPaneComponent, "si-details-pane", never, {}, {}, ["routerOutlet"], ["*"], true, never>;
}

declare class SiDetailsPaneHeaderComponent {
    protected readonly icons: Record<"elementBack", string>;
    private parent;
    /**
     * Optional title to be displayed.
     */
    readonly title: _angular_core.InputSignal<TranslatableString | undefined>;
    /**
     * You can hide the back button in the mobile view by setting true. Required
     * in add, edit workflows on mobile sizes. During add or edit, the back button
     * should be hidden. Default value is `false`.
     *
     * @defaultValue false
     */
    readonly hideBackButton: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Details back button text. Required for a11y.
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_LIST_DETAILS.BACK:Back`)
     * ```
     */
    readonly backButtonText: _angular_core.InputSignal<TranslatableString>;
    /**
     * The URL to navigate to when the back buttons is clicked.
     * This is only used when the `si-details-pane` is used with a router-outlet.
     *
     * @defaultValue '../'
     */
    readonly backButtonUrl: _angular_core.InputSignal<string>;
    private isRouterBased;
    private router;
    private activatedRoute;
    private readonly backButton;
    constructor();
    protected get hasLargeSize(): Signal<boolean>;
    protected backClicked(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiDetailsPaneHeaderComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDetailsPaneHeaderComponent, "si-details-pane-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "hideBackButton": { "alias": "hideBackButton"; "required": false; "isSignal": true; }; "backButtonText": { "alias": "backButtonText"; "required": false; "isSignal": true; }; "backButtonUrl": { "alias": "backButtonUrl"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

declare class SiDetailsPaneBodyComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiDetailsPaneBodyComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDetailsPaneBodyComponent, "si-details-pane-body", never, {}, {}, never, ["*"], true, never>;
}

declare class SiDetailsPaneFooterComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiDetailsPaneFooterComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDetailsPaneFooterComponent, "si-details-pane-footer", never, {}, {}, never, ["*"], true, never>;
}

export { SiDetailsPaneBodyComponent, SiDetailsPaneComponent, SiDetailsPaneFooterComponent, SiDetailsPaneHeaderComponent, SiListDetailsComponent, SiListPaneBodyComponent, SiListPaneComponent, SiListPaneHeaderComponent };
