import * as _angular_core from '@angular/core';
import { TemplateRef } from '@angular/core';

interface SdOrgChartItem {
    id: string | number;
    image?: string | null;
    title: string;
    description?: string | null;
    color?: string | null;
    expanded?: boolean;
    children?: SdOrgChartItem[];
}
interface SdOrgChartItemContext<T extends SdOrgChartItem = SdOrgChartItem> {
    $implicit: T;
    item: T;
    depth: number;
    parent: T | null;
    expanded: boolean;
    hasChildren: boolean;
    isLeaf: boolean;
    toggle: () => void;
}
type SdOrgChartItemTemplate<T extends SdOrgChartItem = SdOrgChartItem> = TemplateRef<SdOrgChartItemContext<T>>;
interface SdOrgChartToggleEvent<T extends SdOrgChartItem = SdOrgChartItem> {
    item: T;
    expanded: boolean;
}
interface SdOrgChartOption<T extends SdOrgChartItem = SdOrgChartItem> {
    autoId?: string | null;
    items: T[];
    itemTemplate?: TemplateRef<SdOrgChartItemContext<T>> | null;
    collapsible?: boolean;
    onToggle?: (event: SdOrgChartToggleEvent<T>) => void;
}

declare class SdOrgChartItemDefDirective<T extends SdOrgChartItem = SdOrgChartItem> {
    static ngTemplateContextGuard<T extends SdOrgChartItem>(_dir: SdOrgChartItemDefDirective<T>, _ctx: unknown): _ctx is SdOrgChartItemContext<T>;
    readonly templateRef: TemplateRef<SdOrgChartItemContext<T>>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdOrgChartItemDefDirective<any>, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SdOrgChartItemDefDirective<any>, "[sdOrgChartItemDef]", never, {}, {}, never, never, true, never>;
}

declare class SdOrgChart {
    #private;
    readonly autoIdInput: _angular_core.InputSignal<string | null | undefined>;
    readonly option: _angular_core.InputSignal<SdOrgChartOption<SdOrgChartItem> | undefined>;
    readonly autoId: _angular_core.Signal<string | undefined>;
    readonly items: _angular_core.InputSignal<SdOrgChartItem[] | undefined>;
    readonly itemTemplate: _angular_core.InputSignal<TemplateRef<SdOrgChartItemContext<SdOrgChartItem>> | null | undefined>;
    readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
    readonly itemDef: _angular_core.Signal<SdOrgChartItemDefDirective<any> | undefined>;
    readonly resolvedItems: _angular_core.Signal<SdOrgChartItem[]>;
    readonly resolvedCollapsible: _angular_core.Signal<boolean>;
    readonly resolvedItemTemplate: _angular_core.Signal<TemplateRef<SdOrgChartItemContext<SdOrgChartItem>> | undefined>;
    readonly trackByItem: (_index: number, item: SdOrgChartItem) => string | number;
    hasChildren: (item: SdOrgChartItem) => boolean;
    childrenOf: (item: SdOrgChartItem) => SdOrgChartItem[];
    isExpanded: (item: SdOrgChartItem) => boolean;
    toggle: (item: SdOrgChartItem, event?: Event) => void;
    createContext: (item: SdOrgChartItem, depth: number, parent: SdOrgChartItem | null) => SdOrgChartItemContext;
    nodeAutoId: (item: SdOrgChartItem, part: "node" | "image" | "title" | "description" | "toggle") => string | undefined;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SdOrgChart, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SdOrgChart, "sd-org-chart", never, { "autoIdInput": { "alias": "autoId"; "required": false; "isSignal": true; }; "option": { "alias": "option"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, {}, ["itemDef"], never, true, never>;
}

export { SdOrgChart, SdOrgChartItemDefDirective };
export type { SdOrgChartItem, SdOrgChartItemContext, SdOrgChartItemTemplate, SdOrgChartOption, SdOrgChartToggleEvent };
