import type { ExtractPropTypes, PropType } from 'vue';
export type Placement = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'right-start' | 'right-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end';
export type Alignment = 'start' | 'end';
export type OffsetOptions = {
    mainAxis?: number;
    crossAxis?: number;
};
export type Point = {
    x?: number;
    y?: number;
};
export type EmitEventFn = (event: 'positionChange' | 'update:modelValue', result?: unknown) => void;
export interface Rect {
    x: number;
    y: number;
    width?: number;
    height?: number;
}
export declare const flexibleOverlayProps: {
    modelValue: {
        type: BooleanConstructor;
        default: boolean;
    };
    origin: {
        type: PropType<HTMLElement>;
        require: boolean;
    };
    position: {
        type: PropType<Placement[]>;
        default: string[];
    };
    offset: {
        type: PropType<number | OffsetOptions>;
        default: number;
    };
    shiftOffset: {
        type: NumberConstructor;
    };
    align: {
        type: PropType<Alignment> | null;
        default: null;
    };
    showArrow: {
        type: BooleanConstructor;
        default: boolean;
    };
    isArrowCenter: {
        type: BooleanConstructor;
        default: boolean;
    };
    clickEventBubble: {
        type: BooleanConstructor;
        default: boolean;
    };
    fitOriginWidth: {
        type: BooleanConstructor;
        default: boolean;
    };
    autoUpdatePosition: {
        type: BooleanConstructor;
        default: boolean;
    };
};
export type FlexibleOverlayProps = ExtractPropTypes<typeof flexibleOverlayProps>;
