import type { InjectionKey, MaybeRefOrGetter, PropType, Ref } from 'vue'; import type { ActiveStrategy } from './activeStrategies.js'; import type { OpenStrategy } from './openStrategies.js'; import type { SelectStrategy } from './selectStrategies.js'; import type { ListItem } from '../list-items.js'; import type { EventProp } from '../../util/index.js'; export type ActiveStrategyProp = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | ActiveStrategy | ((mandatory: boolean) => ActiveStrategy); export type SelectStrategyProp = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | 'trunk' | 'branch' | SelectStrategy | ((mandatory: boolean) => SelectStrategy); export type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy; export type ItemsRegistrationType = 'props' | 'render'; export interface NestedProps { activatable: boolean; selectable: boolean; activeStrategy: ActiveStrategyProp | undefined; selectStrategy: SelectStrategyProp | undefined; openStrategy: OpenStrategyProp | undefined; activated: any; selected: any; opened: any; mandatory: boolean; itemsRegistration: ItemsRegistrationType; 'onUpdate:activated': EventProp<[any]> | undefined; 'onUpdate:selected': EventProp<[any]> | undefined; 'onUpdate:opened': EventProp<[any]> | undefined; } type NestedProvide = { id: Ref; isGroupActivator?: boolean; root: { children: Ref>; parents: Ref>; disabled: Ref>; activatable: Ref; selectable: Ref; opened: Ref>; activated: Ref>; scrollToActive: Ref; selected: Ref>; selectedValues: Ref; itemsRegistration: Ref; register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void; unregister: (id: unknown) => void; updateDisabled: (id: unknown, isDisabled: boolean) => void; open: (id: unknown, value: boolean, event?: Event) => void; activate: (id: unknown, value: boolean, event?: Event) => void; select: (id: unknown, value: boolean, event?: Event) => void; openOnSelect: (id: unknown, value: boolean, event?: Event) => void; getPath: (id: unknown) => unknown[]; }; }; export declare const VNestedSymbol: InjectionKey; export declare const emptyNested: NestedProvide; export declare const makeNestedProps: (defaults?: Defaults | undefined) => { activatable: unknown extends Defaults["activatable"] ? BooleanConstructor : { type: PropType; default: unknown extends Defaults["activatable"] ? boolean : boolean | Defaults["activatable"]; }; selectable: unknown extends Defaults["selectable"] ? BooleanConstructor : { type: PropType; default: unknown extends Defaults["selectable"] ? boolean : boolean | Defaults["selectable"]; }; activeStrategy: unknown extends Defaults["activeStrategy"] ? PropType : { type: PropType; default: unknown extends Defaults["activeStrategy"] ? ActiveStrategyProp : Defaults["activeStrategy"] | NonNullable; }; selectStrategy: unknown extends Defaults["selectStrategy"] ? PropType : { type: PropType; default: unknown extends Defaults["selectStrategy"] ? SelectStrategyProp : Defaults["selectStrategy"] | NonNullable; }; openStrategy: unknown extends Defaults["openStrategy"] ? PropType : { type: PropType; default: unknown extends Defaults["openStrategy"] ? OpenStrategyProp : Defaults["openStrategy"] | NonNullable; }; opened: unknown extends Defaults["opened"] ? null : { type: PropType; default: unknown extends Defaults["opened"] ? any : any; }; activated: unknown extends Defaults["activated"] ? null : { type: PropType; default: unknown extends Defaults["activated"] ? any : any; }; selected: unknown extends Defaults["selected"] ? null : { type: PropType; default: unknown extends Defaults["selected"] ? any : any; }; mandatory: unknown extends Defaults["mandatory"] ? BooleanConstructor : { type: PropType; default: unknown extends Defaults["mandatory"] ? boolean : boolean | Defaults["mandatory"]; }; itemsRegistration: unknown extends Defaults["itemsRegistration"] ? { type: PropType; default: string; } : Omit<{ type: PropType; default: string; }, "default" | "type"> & { type: PropType; default: unknown extends Defaults["itemsRegistration"] ? ItemsRegistrationType : Defaults["itemsRegistration"] | NonNullable; }; }; export declare const useNested: (props: NestedProps, { items, returnObject, scrollToActive, }: { items: Ref; returnObject: MaybeRefOrGetter; scrollToActive: MaybeRefOrGetter; }) => { children: Ref>; parents: Ref>; disabled: Ref>; activatable: Ref; selectable: Ref; opened: Ref>; activated: Ref>; scrollToActive: Ref; selected: Ref>; selectedValues: Ref; itemsRegistration: Ref; register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void; unregister: (id: unknown) => void; updateDisabled: (id: unknown, isDisabled: boolean) => void; open: (id: unknown, value: boolean, event?: Event) => void; activate: (id: unknown, value: boolean, event?: Event) => void; select: (id: unknown, value: boolean, event?: Event) => void; openOnSelect: (id: unknown, value: boolean, event?: Event) => void; getPath: (id: unknown) => unknown[]; }; export declare const useNestedItem: (id: MaybeRefOrGetter, isDisabled: MaybeRefOrGetter, isGroup: boolean) => { root: { children: Ref>; parents: Ref>; disabled: Ref>; activatable: Ref; selectable: Ref; opened: Ref>; activated: Ref>; scrollToActive: Ref; selected: Ref>; selectedValues: Ref; itemsRegistration: Ref; register: (id: unknown, parentId: unknown, isDisabled: boolean, isGroup?: boolean) => void; unregister: (id: unknown) => void; updateDisabled: (id: unknown, isDisabled: boolean) => void; open: (id: unknown, value: boolean, event?: Event) => void; activate: (id: unknown, value: boolean, event?: Event) => void; select: (id: unknown, value: boolean, event?: Event) => void; openOnSelect: (id: unknown, value: boolean, event?: Event) => void; getPath: (id: unknown) => unknown[]; }; id: import("vue").ComputedRef<{} | null>; open: (open: boolean, e: Event) => void; openOnSelect: (open: boolean, e?: Event) => void; isOpen: import("vue").ComputedRef; parent: import("vue").ComputedRef; activate: (activated: boolean, e?: Event) => void; isActivated: import("vue").ComputedRef; scrollToActive: Ref; select: (selected: boolean, e?: Event) => void; isSelected: import("vue").ComputedRef; isIndeterminate: import("vue").ComputedRef; isLeaf: import("vue").ComputedRef; isGroupActivator: boolean | undefined; }; export declare const useNestedGroupActivator: () => void;