import { Direction } from '@angular/cdk/bidi';
import * as i0 from '@angular/core';
import { AfterViewInit, OnChanges, OnInit, EventEmitter, SimpleChanges } from '@angular/core';
import { NzConfigService, NzConfigKey } from 'ng-zorro-antd/core/config';

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */
interface SimpleRect {
    top: number;
    left: number;
    width?: number;
    height?: number;
    bottom?: number;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class NzAffixComponent implements AfterViewInit, OnChanges, OnInit {
    nzConfigService: NzConfigService;
    private scrollSrv;
    private platform;
    private renderer;
    private nzResizeObserver;
    private cdr;
    private directionality;
    private destroyRef;
    readonly _nzModuleName: NzConfigKey;
    private fixedEl;
    nzTarget?: string | Element | Window;
    nzOffsetTop?: null | number;
    nzOffsetBottom?: null | number;
    readonly nzChange: EventEmitter<boolean>;
    dir: Direction;
    private readonly placeholderNode;
    private affixStyle?;
    private placeholderStyle?;
    private positionChangeSubscription;
    private offsetChanged$;
    private timeout?;
    private document;
    private get target();
    constructor();
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    private registerListeners;
    private removeListeners;
    getOffset(element: Element, target: Element | Window | undefined): SimpleRect;
    private setAffixStyle;
    private setPlaceholderStyle;
    private syncPlaceholderStyle;
    updatePosition(e: Event): void;
    private updateRtlClass;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzAffixComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzAffixComponent, "nz-affix", ["nzAffix"], { "nzTarget": { "alias": "nzTarget"; "required": false; }; "nzOffsetTop": { "alias": "nzOffsetTop"; "required": false; }; "nzOffsetBottom": { "alias": "nzOffsetBottom"; "required": false; }; }, { "nzChange": "nzChange"; }, never, ["*"], true, never>;
    static ngAcceptInputType_nzOffsetTop: unknown;
    static ngAcceptInputType_nzOffsetBottom: unknown;
}

declare class NzAffixModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzAffixModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzAffixModule, never, [typeof NzAffixComponent], [typeof NzAffixComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzAffixModule>;
}

export { NzAffixComponent, NzAffixModule };
