import * as i0 from '@angular/core';
import { OnChanges, OnDestroy, TemplateRef, AfterContentInit, OnInit, QueryList, SimpleChanges } from '@angular/core';
import { Direction } from '@angular/cdk/bidi';
import { NzConfigService, NzConfigKey } from 'ng-zorro-antd/core/config';
import { NzBreakpointEnum } 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>;
}

/**
 * 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 NzDescriptionsComponent implements OnChanges, AfterContentInit, OnInit {
    nzConfigService: NzConfigService;
    private cdr;
    private breakpointService;
    private directionality;
    private destroyRef;
    readonly _nzModuleName: NzConfigKey;
    items: QueryList<NzDescriptionsItemComponent>;
    nzBordered: boolean;
    nzLayout: NzDescriptionsLayout;
    nzColumn: number | Record<NzBreakpointEnum, number>;
    nzSize: NzDescriptionsSize;
    nzTitle: string | TemplateRef<void>;
    nzExtra?: string | TemplateRef<void>;
    nzColon: boolean;
    itemMatrix: NzDescriptionsItemRenderProps[][];
    realColumn: number;
    dir: Direction;
    private breakpoint;
    ngOnInit(): void;
    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 };
