import * as i0 from '@angular/core';
import { OnChanges, OnDestroy, TemplateRef, AfterContentInit, QueryList, SimpleChanges } from '@angular/core';
import * as _angular_cdk_bidi from '@angular/cdk/bidi';
import { NzConfigKey } from 'ng-zorro-antd/core/config';
import { ResponsiveLike } from 'ng-zorro-antd/core/services';
import { Subject } from 'rxjs';

/**
 * 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 NzDescriptionsItemComponent implements OnChanges, OnDestroy {
    content: TemplateRef<void>;
    nzSpan: number;
    nzTitle: string | TemplateRef<void>;
    readonly inputChange$: Subject<void>;
    ngOnChanges(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzDescriptionsItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzDescriptionsItemComponent, "nz-descriptions-item", ["nzDescriptionsItem"], { "nzSpan": { "alias": "nzSpan"; "required": false; }; "nzTitle": { "alias": "nzTitle"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_nzSpan: unknown;
}

/**
 * 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 NzDescriptionsSize = 'default' | 'middle' | 'small';
type NzDescriptionsLayout = 'horizontal' | 'vertical';
interface NzDescriptionsItemRenderProps {
    title: string | TemplateRef<void>;
    span: number;
    content: TemplateRef<void>;
}

declare class NzDescriptionsComponent implements OnChanges, AfterContentInit {
    private readonly cdr;
    private readonly breakpointService;
    private readonly destroyRef;
    protected readonly dir: i0.WritableSignal<_angular_cdk_bidi.Direction>;
    readonly _nzModuleName: NzConfigKey;
    items: QueryList<NzDescriptionsItemComponent>;
    nzBordered: boolean;
    nzLayout: NzDescriptionsLayout;
    nzColumn: number | Partial<ResponsiveLike<number>>;
    nzSize: NzDescriptionsSize;
    nzTitle: string | TemplateRef<void>;
    nzExtra?: string | TemplateRef<void>;
    nzColon: boolean;
    itemMatrix: NzDescriptionsItemRenderProps[][];
    realColumn: number;
    private breakpoint;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterContentInit(): void;
    /**
     * Prepare the render matrix according to description items' spans.
     */
    private prepareMatrix;
    private getColumn;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzDescriptionsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzDescriptionsComponent, "nz-descriptions", ["nzDescriptions"], { "nzBordered": { "alias": "nzBordered"; "required": false; }; "nzLayout": { "alias": "nzLayout"; "required": false; }; "nzColumn": { "alias": "nzColumn"; "required": false; }; "nzSize": { "alias": "nzSize"; "required": false; }; "nzTitle": { "alias": "nzTitle"; "required": false; }; "nzExtra": { "alias": "nzExtra"; "required": false; }; "nzColon": { "alias": "nzColon"; "required": false; }; }, {}, ["items"], never, true, never>;
    static ngAcceptInputType_nzBordered: unknown;
    static ngAcceptInputType_nzColon: unknown;
}

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

export { NzDescriptionsComponent, NzDescriptionsItemComponent, NzDescriptionsModule };
export type { NzDescriptionsItemRenderProps, NzDescriptionsLayout, NzDescriptionsSize };
