import type { ExtractPropTypes, InjectionKey, Prop, Ref } from 'vue';
import type { LayoutInstance, LayoutItem } from './types';
export declare const LayoutKey: InjectionKey<LayoutInstance>;
export declare const ROOT_ZINDEX = 1000;
export declare const makeLayoutProps: <Defaults extends {
    overlaps?: unknown;
    fullHeight?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    overlaps: unknown extends Defaults["overlaps"] ? Prop<string[], string[]> : {
        type: import("vue").PropType<unknown extends Defaults["overlaps"] ? string[] : string[] | Defaults["overlaps"]>;
        default: unknown extends Defaults["overlaps"] ? string[] : string[] | Defaults["overlaps"];
    };
    fullHeight: unknown extends Defaults["fullHeight"] ? BooleanConstructor : {
        type: import("vue").PropType<unknown extends Defaults["fullHeight"] ? boolean : boolean | Defaults["fullHeight"]>;
        default: unknown extends Defaults["fullHeight"] ? boolean : boolean | Defaults["fullHeight"];
    };
};
export declare function provideLayout(props: ExtractPropTypes<ReturnType<typeof makeLayoutProps>>, name?: string): {
    layoutClasses: import("vue").ComputedRef<{
        [x: string]: boolean;
    }>;
    layoutStyles: import("vue").ComputedRef<{
        zIndex: number;
    }>;
    getLayoutItem: (id: string) => LayoutItem | undefined;
    items: import("vue").ComputedRef<LayoutItem[]>;
    layoutRect: Readonly<Ref<{
        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: Ref<Element | undefined>;
};
export declare function useLayout(): LayoutInstance;
