import * as _angular_core from '@angular/core';
import { OnChanges, AfterViewInit, AfterContentInit, OnInit, ElementRef, SimpleChanges } from '@angular/core';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import { NzConfigKey } from 'ng-zorro-antd/core/config';
import { NzSizeLDSType } from 'ng-zorro-antd/core/types';
import { NzIconDirective } from 'ng-zorro-antd/icon';
import * as i1 from 'ng-zorro-antd/space';
import * as i2 from 'ng-zorro-antd/core/transition-patch';
import * as i3 from 'ng-zorro-antd/core/wave';

type NzButtonType = 'primary' | 'default' | 'dashed' | 'link' | 'text' | null;
type NzButtonShape = 'circle' | 'round' | null;
type NzButtonSize = NzSizeLDSType;
declare class NzButtonComponent implements OnChanges, AfterViewInit, AfterContentInit, OnInit {
    private elementRef;
    private cdr;
    private renderer;
    private destroyRef;
    readonly _nzModuleName: NzConfigKey;
    nzIconDirectiveElement: ElementRef;
    nzBlock: boolean;
    nzGhost: boolean;
    /**
     * @deprecated Will be removed in v22.0.0. Please use `nz-input-search` instead.
     */
    nzSearch: boolean;
    nzLoading: boolean;
    nzDanger: boolean;
    disabled: boolean;
    tabIndex: number | string | null;
    nzType: NzButtonType;
    nzShape: NzButtonShape;
    nzSize: NzButtonSize;
    protected readonly dir: _angular_core.WritableSignal<_angular_cdk_bidi.Direction>;
    private readonly elementOnly;
    private readonly size;
    private readonly formSize;
    private readonly compactSize;
    private readonly loading$;
    protected readonly finalSize: _angular_core.Signal<NzSizeLDSType | undefined>;
    readonly iconDir: _angular_core.Signal<NzIconDirective | undefined>;
    readonly loadingIconDir: _angular_core.Signal<NzIconDirective | undefined>;
    readonly iconOnly: _angular_core.Signal<boolean>;
    constructor();
    ngOnInit(): void;
    ngOnChanges({ nzLoading, nzSize }: SimpleChanges): void;
    ngAfterViewInit(): void;
    ngAfterContentInit(): void;
    insertSpan(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<NzButtonComponent, "button[nz-button], a[nz-button]", ["nzButton"], { "nzBlock": { "alias": "nzBlock"; "required": false; }; "nzGhost": { "alias": "nzGhost"; "required": false; }; "nzSearch": { "alias": "nzSearch"; "required": false; }; "nzLoading": { "alias": "nzLoading"; "required": false; }; "nzDanger": { "alias": "nzDanger"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "nzType": { "alias": "nzType"; "required": false; }; "nzShape": { "alias": "nzShape"; "required": false; }; "nzSize": { "alias": "nzSize"; "required": false; }; }, {}, ["iconDir", "nzIconDirectiveElement"], ["*"], true, [{ directive: typeof i1.NzSpaceCompactItemDirective; inputs: {}; outputs: {}; }]>;
    static ngAcceptInputType_nzBlock: unknown;
    static ngAcceptInputType_nzGhost: unknown;
    static ngAcceptInputType_nzSearch: unknown;
    static ngAcceptInputType_nzLoading: unknown;
    static ngAcceptInputType_nzDanger: unknown;
    static ngAcceptInputType_disabled: unknown;
}

declare class NzButtonModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<NzButtonModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<NzButtonModule, never, [typeof NzButtonComponent], [typeof NzButtonComponent, typeof i2.ɵNzTransitionPatchModule, typeof i3.NzWaveModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<NzButtonModule>;
}

export { NzButtonComponent, NzButtonModule };
export type { NzButtonShape, NzButtonSize, NzButtonType };
