import { AfterViewInit, ChangeDetectorRef, ElementRef, QueryList, Renderer2 } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import { FlexibleColumnLayoutComponent } from '@fundamental-ngx/core/flexible-column-layout';
import { DynamicPageBackgroundType, DynamicPageResponsiveSize } from './constants';
import { DynamicPageContentComponent } from './dynamic-page-content/dynamic-page-content.component';
import { DynamicPageHeaderComponent } from './dynamic-page-header/header/dynamic-page-header.component';
import { DynamicPageSubheaderComponent } from './dynamic-page-header/subheader/dynamic-page-subheader.component';
import { DynamicPageWrapperDirective } from './dynamic-page-wrapper.directive';
import { DynamicPageService } from './dynamic-page.service';
import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
import { TabList } from '@fundamental-ngx/core/shared';
import { DynamicPage } from './dynamic-page.interface';
import * as i0 from "@angular/core";
export declare class DynamicPageComponent implements AfterViewInit, DynamicPage {
    protected _cd: ChangeDetectorRef;
    private _elementRef;
    private _renderer;
    private _dynamicPageService;
    private _columnLayout;
    private _dynamicPageWrapper;
    /** Whether DynamicPage should snap on scroll */
    disableSnapOnScroll: boolean;
    /** aria label for the page */
    ariaLabel: Nullable<string>;
    /**
     * aria roledescription for the page
     * default: "Dynamic Page"
     *
     */
    ariaRoledescription: string;
    /**
     * sets background for content to `list`, `transparent`, or `solid` background color.
     * Default is `solid`.
     */
    background: DynamicPageBackgroundType;
    /** Whether DynamicPage should have responsive sides spacing changing with Page window width.
     * max-width: 599px                         - small
     * min-width: 600px and max-width: 1023px   - medium
     * min-width: 1024px and max-width: 1439px  - large
     * min-width: 1440px                        - extra large
     */
    autoResponsive: boolean;
    /**
     * sets size which in turn adds corresponding padding for the size type.
     * size can be `small`, `medium`, `large`, or `extra-large`.
     */
    set size(size: DynamicPageResponsiveSize);
    get size(): DynamicPageResponsiveSize;
    /** Offset in PX
     * Should be added, when there is something else at the bottom and dynamic page is not expanded to bottom's corners
     */
    offset: number;
    /**
     * Whether dynamic page should be expanded in whole page.
     */
    expandContent: boolean;
    /**
     * Whether dynamic page has position relative.
     * This is needed in cases where Dynamic Page is used in Flexible Column Layout and has a floating footer
     */
    positionRelative: boolean;
    /** @hidden reference to header component  */
    _pageSubheaderComponent: DynamicPageSubheaderComponent;
    /** @hidden reference to title component  */
    _headerComponent: DynamicPageHeaderComponent;
    /** @hidden reference to content component  */
    _contentComponent: QueryList<DynamicPageContentComponent>;
    /** @hidden reference to footer component  */
    _footerComponent: DynamicPageContentComponent;
    /** @hidden reference to tab component */
    _tabComponent: TabList;
    /** @hidden */
    _dynamicPageElement: ElementRef;
    /** @hidden */
    _scrollbar: ScrollbarDirective;
    /** Whether the dynamic page is collapsed */
    collapsed: import("@angular/core").Signal<boolean>;
    /** @hidden */
    _size: DynamicPageResponsiveSize;
    /** @hidden */
    _headerCollapsible: boolean;
    /** @hidden */
    _isExpanded: import("@angular/core").Signal<boolean>;
    /** @hidden */
    private _headerButton;
    /** @hidden **/
    private readonly _destroyRef;
    /** @hidden */
    constructor(_cd: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>, _renderer: Renderer2, _dynamicPageService: DynamicPageService, _columnLayout: FlexibleColumnLayoutComponent, _dynamicPageWrapper: DynamicPageWrapperDirective);
    /** @hidden */
    ngAfterViewInit(): void;
    /** toggle the visibility of the header on click of title area. */
    toggleCollapse(): void;
    /**
     * Triggers recheck for spacing and sizing of elements inside DynamicPage.
     */
    refreshSize(): void;
    /** @hidden */
    _getScrollElement(): HTMLElement | null;
    /** Set the positions of the tabs and content with respect to the window */
    private _setContainerPositions;
    /** @hidden */
    private _propagatePropertiesToChildren;
    /** @hidden
     * Functionality handling column layout changes,
     * - recalculate height of content element
     * - recheck size depending on width of DynamicPage
     */
    private _listenToLayoutChange;
    /** @hidden */
    private _propagateSizeToChildren;
    /** @hidden */
    private _listenOnCollapse;
    /** @hidden */
    private _getCalculatedFullHeight;
    /** @hidden */
    private _sizeChangeHandle;
    /** @hidden */
    private _addScrollListeners;
    /** @hidden Listen for window resize and adjust tab and content positions accordingly */
    private _listenOnResize;
    /** @hidden */
    private _listenToWrapperResize;
    /** @hidden */
    private _listenToWindowResize;
    /** @hidden
     * set top position of DynamicPage on scrolling
     */
    private _setDynamicPageHeight;
    /** @hidden */
    private _removeShadowWhenTabComponent;
    /** @hidden */
    private _setContentFooterSpacer;
    static ɵfac: i0.ɵɵFactoryDeclaration<DynamicPageComponent, [null, null, null, null, { optional: true; }, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DynamicPageComponent, "fd-dynamic-page", never, { "disableSnapOnScroll": { "alias": "disableSnapOnScroll"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaRoledescription": { "alias": "ariaRoledescription"; "required": false; }; "background": { "alias": "background"; "required": false; }; "autoResponsive": { "alias": "autoResponsive"; "required": false; }; "size": { "alias": "size"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "expandContent": { "alias": "expandContent"; "required": false; }; "positionRelative": { "alias": "positionRelative"; "required": false; }; }, {}, ["_pageSubheaderComponent", "_headerComponent", "_footerComponent", "_tabComponent", "_contentComponent"], ["fd-dynamic-page-header", "fd-dynamic-page-subheader", "fd-tab-list", "fd-wizard", "fdp-icon-tab-bar", "fd-dynamic-page-content", "fd-dynamic-page-content", "fd-dynamic-page-footer"], true, never>;
}
