import type { ComponentInternalInstance, CSSProperties, InjectionKey, Prop, Ref } from 'vue'; export type Position = 'top' | 'left' | 'right' | 'bottom'; interface Layer { top: number; bottom: number; left: number; right: number; } interface LayoutItem extends Layer { id: string; size: number; position: Position; } interface LayoutProvide { register: (vm: ComponentInternalInstance, options: { id: string; order: Ref; position: Ref; layoutSize: Ref; elementSize: Ref; active: Ref; disableTransitions?: Ref; absolute: Ref; }) => { layoutItemStyles: Ref; layoutItemScrimStyles: Ref; zIndex: Ref; }; unregister: (id: string) => void; mainRect: Ref; mainStyles: Ref; getLayoutItem: (id: string) => LayoutItem | undefined; items: Ref; layoutRect: Ref; rootZIndex: Ref; } export declare const VuetifyLayoutKey: InjectionKey; export declare const VuetifyLayoutItemKey: InjectionKey<{ id: string; }>; export declare const makeLayoutProps: (defaults?: Defaults | undefined) => { overlaps: unknown extends Defaults["overlaps"] ? Prop : { type: import("vue").PropType; default: unknown extends Defaults["overlaps"] ? string[] : string[] | Defaults["overlaps"]; }; fullHeight: unknown extends Defaults["fullHeight"] ? BooleanConstructor : { type: import("vue").PropType; default: unknown extends Defaults["fullHeight"] ? boolean : boolean | Defaults["fullHeight"]; }; }; export declare const makeLayoutItemProps: (defaults?: Defaults | undefined) => { name: unknown extends Defaults["name"] ? { type: StringConstructor; } : Omit<{ type: StringConstructor; }, "default" | "type"> & { type: import("vue").PropType; default: unknown extends Defaults["name"] ? string : string | Defaults["name"]; }; order: unknown extends Defaults["order"] ? { type: (NumberConstructor | StringConstructor)[]; default: number; } : Omit<{ type: (NumberConstructor | StringConstructor)[]; default: number; }, "default" | "type"> & { type: import("vue").PropType; default: unknown extends Defaults["order"] ? string | number : Defaults["order"] | NonNullable; }; absolute: unknown extends Defaults["absolute"] ? BooleanConstructor : { type: import("vue").PropType; default: unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"]; }; }; export declare function useLayout(): { getLayoutItem: (id: string) => LayoutItem | undefined; mainRect: Ref; mainStyles: Ref; }; export declare function useLayoutItem(options: { id: string | undefined; order: Ref; position: Ref; layoutSize: Ref; elementSize: Ref; active: Ref; disableTransitions?: Ref; absolute: Ref; }): { layoutItemStyles: Ref; layoutRect: Ref; layoutItemScrimStyles: Ref; }; export declare function createLayout(props: { overlaps?: string[]; fullHeight?: boolean; }): { layoutClasses: Readonly>; layoutStyles: Readonly>; getLayoutItem: (id: string) => { top: number; bottom: number; left: number; right: number; id: string; size: number; position: Position; } | undefined; items: import("vue").ComputedRef<{ top: number; bottom: number; left: number; right: number; id: string; size: number; position: Position; }[]>; layoutRect: Readonly any; } | undefined, { readonly bottom: number; readonly height: number; readonly left: number; readonly right: number; readonly top: number; readonly width: number; readonly x: number; readonly y: number; readonly toJSON: () => any; } | undefined>>; layoutRef: import("../util/index.js").TemplateRef; };