import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import * as ng_zorro_antd_float_button from 'ng-zorro-antd/float-button';
import * as _angular_core from '@angular/core';
import { TemplateRef, OnInit, ElementRef } from '@angular/core';
import { NzSizeDSType, NzShapeSCType, NzFourDirectionType } from 'ng-zorro-antd/core/types';

/**
 * 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
 */

type NzFloatButtonType = 'primary' | 'default';
interface NzFloatButtonBadgeProps {
    nzShowZero: boolean;
    nzDot: boolean;
    nzOverflowCount: number;
    nzColor: string;
    nzCount: number | TemplateRef<void>;
    nzOffset: [number, number];
    nzSize: NzSizeDSType;
}
type NzFloatButtonBadge = Partial<NzFloatButtonBadgeProps>;

declare class NzFloatButtonComponent {
    readonly nzHref: _angular_core.InputSignal<string | null>;
    readonly nzTarget: _angular_core.InputSignal<string | null>;
    readonly nzType: _angular_core.InputSignal<NzFloatButtonType>;
    readonly nzIcon: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzDescription: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzShape: _angular_core.InputSignal<NzShapeSCType>;
    readonly nzBadge: _angular_core.InputSignal<Partial<ng_zorro_antd_float_button.NzFloatButtonBadgeProps> | null>;
    readonly nzOnClick: _angular_core.OutputEmitterRef<boolean>;
    readonly shape: _angular_core.WritableSignal<NzShapeSCType>;
    protected readonly dir: _angular_core.WritableSignal<_angular_cdk_bidi.Direction>;
    protected readonly class: _angular_core.Signal<string[]>;
    private generateClass;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzFloatButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzFloatButtonComponent, "nz-float-button", ["nzFloatButton"], { "nzHref": { "alias": "nzHref"; "required": false; "isSignal": true; }; "nzTarget": { "alias": "nzTarget"; "required": false; "isSignal": true; }; "nzType": { "alias": "nzType"; "required": false; "isSignal": true; }; "nzIcon": { "alias": "nzIcon"; "required": false; "isSignal": true; }; "nzDescription": { "alias": "nzDescription"; "required": false; "isSignal": true; }; "nzShape": { "alias": "nzShape"; "required": false; "isSignal": true; }; "nzBadge": { "alias": "nzBadge"; "required": false; "isSignal": true; }; }, { "nzOnClick": "nzOnClick"; }, never, never, true, never>;
}

declare class NzFloatButtonContentComponent {
    readonly nzBadge: _angular_core.InputSignal<Partial<ng_zorro_antd_float_button.NzFloatButtonBadgeProps> | null>;
    readonly nzIcon: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzDescription: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzShape: _angular_core.InputSignal<NzShapeSCType>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzFloatButtonContentComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzFloatButtonContentComponent, "nz-float-button-content", ["nzFloatButtonContent"], { "nzBadge": { "alias": "nzBadge"; "required": false; "isSignal": true; }; "nzIcon": { "alias": "nzIcon"; "required": false; "isSignal": true; }; "nzDescription": { "alias": "nzDescription"; "required": false; "isSignal": true; }; "nzShape": { "alias": "nzShape"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class NzFloatButtonTopComponent implements OnInit {
    private readonly scrollSrv;
    private readonly platform;
    private readonly ngZone;
    private readonly directionality;
    private readonly destroyRef;
    private readonly document;
    readonly backTop: _angular_core.Signal<ElementRef<any> | undefined>;
    readonly nzVisibilityHeight: _angular_core.InputSignal<number | undefined>;
    readonly nzHref: _angular_core.InputSignal<string | null>;
    readonly nzType: _angular_core.InputSignal<NzFloatButtonType>;
    readonly nzShape: _angular_core.InputSignal<NzShapeSCType>;
    readonly nzIcon: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzDescription: _angular_core.InputSignal<TemplateRef<void> | null>;
    readonly nzTemplate: _angular_core.InputSignal<TemplateRef<void> | null>;
    readonly nzTarget: _angular_core.InputSignal<string | HTMLElement | null>;
    readonly nzDuration: _angular_core.InputSignalWithTransform<number, unknown>;
    readonly nzBadge: _angular_core.InputSignal<Partial<ng_zorro_antd_float_button.NzFloatButtonBadgeProps> | null>;
    readonly nzOnClick: _angular_core.OutputEmitterRef<boolean>;
    protected readonly visible: _angular_core.WritableSignal<boolean>;
    private readonly visibilityHeight;
    readonly shape: _angular_core.WritableSignal<NzShapeSCType>;
    protected readonly class: _angular_core.Signal<string[]>;
    protected readonly fadeAnimationEnter: _angular_core.Signal<string>;
    protected readonly fadeAnimationLeave: _angular_core.Signal<string>;
    private target?;
    private backTopClickSubscription;
    private scrollListenerDestroy$;
    constructor();
    ngOnInit(): void;
    private getTarget;
    private handleScroll;
    private registerScrollEvent;
    private generateClass;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzFloatButtonTopComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzFloatButtonTopComponent, "nz-float-button-top", ["nzFloatButtonTop"], { "nzVisibilityHeight": { "alias": "nzVisibilityHeight"; "required": false; "isSignal": true; }; "nzHref": { "alias": "nzHref"; "required": false; "isSignal": true; }; "nzType": { "alias": "nzType"; "required": false; "isSignal": true; }; "nzShape": { "alias": "nzShape"; "required": false; "isSignal": true; }; "nzIcon": { "alias": "nzIcon"; "required": false; "isSignal": true; }; "nzDescription": { "alias": "nzDescription"; "required": false; "isSignal": true; }; "nzTemplate": { "alias": "nzTemplate"; "required": false; "isSignal": true; }; "nzTarget": { "alias": "nzTarget"; "required": false; "isSignal": true; }; "nzDuration": { "alias": "nzDuration"; "required": false; "isSignal": true; }; "nzBadge": { "alias": "nzBadge"; "required": false; "isSignal": true; }; }, { "nzOnClick": "nzOnClick"; }, never, never, true, never>;
}

declare class NzFloatButtonGroupComponent {
    readonly nzFloatButtonComponents: _angular_core.Signal<readonly NzFloatButtonComponent[]>;
    readonly nzFloatButtonTopComponents: _angular_core.Signal<readonly NzFloatButtonTopComponent[]>;
    readonly nzHref: _angular_core.InputSignal<string | null>;
    readonly nzTarget: _angular_core.InputSignal<string | null>;
    readonly nzType: _angular_core.InputSignal<NzFloatButtonType>;
    readonly nzIcon: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzDescription: _angular_core.InputSignal<string | TemplateRef<void> | null>;
    readonly nzShape: _angular_core.InputSignal<NzShapeSCType>;
    readonly nzTrigger: _angular_core.InputSignal<"click" | "hover" | null>;
    readonly nzOpen: _angular_core.InputSignal<boolean | null>;
    readonly nzPlacement: _angular_core.InputSignal<NzFourDirectionType>;
    /**
     * @deprecated Use `nzOpenChange` instead. This will be removed in v23.0.0.
     */
    readonly nzOnOpenChange: _angular_core.OutputEmitterRef<boolean>;
    readonly nzOpenChange: _angular_core.OutputEmitterRef<boolean>;
    protected readonly dir: _angular_core.WritableSignal<_angular_cdk_bidi.Direction>;
    protected readonly open: _angular_core.WritableSignal<boolean>;
    protected readonly isMenuMode: _angular_core.Signal<boolean>;
    protected readonly isControlledMode: _angular_core.Signal<boolean>;
    protected readonly class: _angular_core.Signal<string[]>;
    protected readonly enterAnimation: _angular_core.Signal<string>;
    protected readonly leaveAnimation: _angular_core.Signal<string>;
    constructor();
    clickOpenMenu(): void;
    hoverOpenMenu(): void;
    clickCloseMenu(): void;
    hoverCloseMenu(): void;
    private handleEvent;
    private generateClass;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzFloatButtonGroupComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzFloatButtonGroupComponent, "nz-float-button-group", ["nzFloatButtonGroup"], { "nzHref": { "alias": "nzHref"; "required": false; "isSignal": true; }; "nzTarget": { "alias": "nzTarget"; "required": false; "isSignal": true; }; "nzType": { "alias": "nzType"; "required": false; "isSignal": true; }; "nzIcon": { "alias": "nzIcon"; "required": false; "isSignal": true; }; "nzDescription": { "alias": "nzDescription"; "required": false; "isSignal": true; }; "nzShape": { "alias": "nzShape"; "required": false; "isSignal": true; }; "nzTrigger": { "alias": "nzTrigger"; "required": false; "isSignal": true; }; "nzOpen": { "alias": "nzOpen"; "required": false; "isSignal": true; }; "nzPlacement": { "alias": "nzPlacement"; "required": false; "isSignal": true; }; }, { "nzOnOpenChange": "nzOnOpenChange"; "nzOpenChange": "nzOpenChange"; }, ["nzFloatButtonComponents", "nzFloatButtonTopComponents"], ["*"], true, never>;
}

declare class NzFloatButtonModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzFloatButtonModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NzFloatButtonModule, never, [typeof NzFloatButtonComponent, typeof NzFloatButtonGroupComponent, typeof NzFloatButtonTopComponent, typeof NzFloatButtonContentComponent], [typeof NzFloatButtonComponent, typeof NzFloatButtonGroupComponent, typeof NzFloatButtonTopComponent, typeof NzFloatButtonContentComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<NzFloatButtonModule>;
}

export { NzFloatButtonComponent, NzFloatButtonContentComponent, NzFloatButtonGroupComponent, NzFloatButtonModule, NzFloatButtonTopComponent };
export type { NzFloatButtonBadge, NzFloatButtonBadgeProps, NzFloatButtonType };
