import type { ExtractPropTypes, PropType } from 'vue';
import type { MaybeRef } from '@veno-ui/utils';
export declare const POSITIONS: readonly ["static", "relative", "fixed", "absolute", "sticky"];
export type PositionProps = ExtractPropTypes<ReturnType<typeof makePositionProps>>;
export declare const makePositionProps: <Defaults extends {
    absolute?: unknown;
    bottom?: unknown;
    fixed?: unknown;
    left?: unknown;
    position?: unknown;
    right?: unknown;
    top?: unknown;
} = {}>(defaults?: Defaults | undefined) => {
    absolute: unknown extends Defaults["absolute"] ? BooleanConstructor : {
        type: PropType<unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"]>;
        default: unknown extends Defaults["absolute"] ? boolean : boolean | Defaults["absolute"];
    };
    bottom: unknown extends Defaults["bottom"] ? (StringConstructor | BooleanConstructor | NumberConstructor)[] : {
        type: PropType<unknown extends Defaults["bottom"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["bottom"]>;
        default: unknown extends Defaults["bottom"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["bottom"];
    };
    fixed: unknown extends Defaults["fixed"] ? BooleanConstructor : {
        type: PropType<unknown extends Defaults["fixed"] ? boolean : boolean | Defaults["fixed"]>;
        default: unknown extends Defaults["fixed"] ? boolean : boolean | Defaults["fixed"];
    };
    left: unknown extends Defaults["left"] ? (StringConstructor | BooleanConstructor | NumberConstructor)[] : {
        type: PropType<unknown extends Defaults["left"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["left"]>;
        default: unknown extends Defaults["left"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["left"];
    };
    position: unknown extends Defaults["position"] ? {
        type: PropType<"fixed" | "static" | "relative" | "absolute" | "sticky">;
        validator: (v: any) => boolean;
    } : Omit<{
        type: PropType<"fixed" | "static" | "relative" | "absolute" | "sticky">;
        validator: (v: any) => boolean;
    }, "type" | "default"> & {
        type: PropType<unknown extends Defaults["position"] ? "fixed" | "static" | "relative" | "absolute" | "sticky" : Defaults["position"] | NonNullable<"fixed" | "static" | "relative" | "absolute" | "sticky">>;
        default: unknown extends Defaults["position"] ? "fixed" | "static" | "relative" | "absolute" | "sticky" : Defaults["position"] | NonNullable<"fixed" | "static" | "relative" | "absolute" | "sticky">;
    };
    right: unknown extends Defaults["right"] ? (StringConstructor | BooleanConstructor | NumberConstructor)[] : {
        type: PropType<unknown extends Defaults["right"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["right"]>;
        default: unknown extends Defaults["right"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["right"];
    };
    top: unknown extends Defaults["top"] ? (StringConstructor | BooleanConstructor | NumberConstructor)[] : {
        type: PropType<unknown extends Defaults["top"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["top"]>;
        default: unknown extends Defaults["top"] ? string | number | boolean : NonNullable<string | number | boolean> | Defaults["top"];
    };
};
export declare function usePosition(props: MaybeRef<PositionProps>, name?: string): {
    positionClasses: import("vue").ComputedRef<string | null>;
    positionStyles: import("vue").ComputedRef<Partial<Record<"bottom" | "left" | "right" | "top", string>>>;
};
