import { Component } from "@odoo/owl";
import { SpreadsheetChildEnv } from "../../types/spreadsheet_env";
interface RippleProps {
    color: string;
    opacity: number;
    duration: number;
    /** If true, the ripple will play from the element center instead of the position of the click */
    ignoreClickPosition?: boolean;
    /** Width of the ripple. Defaults to the width of the element the ripple is on (without margins). */
    width?: number;
    /** Height of the ripple. Defaults to the height of the element the ripple is on (without margins). */
    height?: number;
    offsetY?: number;
    offsetX?: number;
    allowOverflow?: boolean;
    enabled: boolean;
    onAnimationEnd: () => void;
    class?: string;
}
interface RippleEffectProps extends Omit<Required<RippleProps>, "ignoreClickPosition" | "enabled" | "class"> {
    x: string;
    y: string;
    style: string;
}
declare class RippleEffect extends Component<RippleEffectProps, SpreadsheetChildEnv> {
    static template: string;
    static props: {
        x: StringConstructor;
        y: StringConstructor;
        color: StringConstructor;
        opacity: NumberConstructor;
        duration: NumberConstructor;
        width: NumberConstructor;
        height: NumberConstructor;
        offsetY: NumberConstructor;
        offsetX: NumberConstructor;
        allowOverflow: BooleanConstructor;
        onAnimationEnd: FunctionConstructor;
        style: StringConstructor;
    };
    private rippleRef;
    setup(): void;
    get rippleStyle(): string;
}
export declare class Ripple extends Component<RippleProps, SpreadsheetChildEnv> {
    static template: string;
    static props: {
        color: {
            type: StringConstructor;
            optional: boolean;
        };
        opacity: {
            type: NumberConstructor;
            optional: boolean;
        };
        duration: {
            type: NumberConstructor;
            optional: boolean;
        };
        ignoreClickPosition: {
            type: BooleanConstructor;
            optional: boolean;
        };
        width: {
            type: NumberConstructor;
            optional: boolean;
        };
        height: {
            type: NumberConstructor;
            optional: boolean;
        };
        offsetY: {
            type: NumberConstructor;
            optional: boolean;
        };
        offsetX: {
            type: NumberConstructor;
            optional: boolean;
        };
        allowOverflow: {
            type: BooleanConstructor;
            optional: boolean;
        };
        enabled: {
            type: BooleanConstructor;
            optional: boolean;
        };
        onAnimationEnd: {
            type: FunctionConstructor;
            optional: boolean;
        };
        slots: ObjectConstructor;
        class: {
            type: StringConstructor;
            optional: boolean;
        };
    };
    static components: {
        RippleEffect: typeof RippleEffect;
    };
    static defaultProps: {
        color: string;
        opacity: number;
        duration: number;
        enabled: boolean;
        onAnimationEnd: () => void;
        class: string;
    };
    private childContainer;
    private state;
    private currentId;
    onClick(ev: MouseEvent): void;
    private getRippleStyle;
    private getRippleChildRectInfo;
    private removeRipple;
    getRippleEffectProps(id: number): RippleEffectProps;
}
export {};
