/**
 * Vue Component Wrapper for Riot.js
 *
 * Provides utilities for mounting Vue components into DOM elements,
 * enabling seamless integration of Vue components in Riot.js applications.
 */
import { Component, App } from 'vue';
export interface MountedComponent {
    app: App;
    element: HTMLElement;
    update: (props: Record<string, unknown>) => void;
    unmount: () => void;
}
export interface MountVueOptions {
    props?: Record<string, unknown>;
    events?: Record<string, (...args: unknown[]) => void>;
    slots?: Record<string, () => unknown>;
}
export interface GenericVueWrapper {
    mount: (element: HTMLElement | null, options?: MountVueOptions) => void;
    update: (props: Record<string, unknown>) => void;
    unmount: () => void;
    isMounted: () => boolean;
}
/**
 * Mount a Vue component into a DOM element
 *
 * @param component - The Vue component to mount
 * @param element - The DOM element to mount into
 * @param props - Initial props to pass to the component
 * @param events - Event handlers object (e.g., { 'il-click': handler })
 * @returns Object with update and unmount methods
 *
 * @example
 * import { mountVueComponent } from '@ambita/infoland-component-library/riot'
 * import MyComponent from './MyComponent.vue'
 *
 * // In Riot component onMounted
 * const component = mountVueComponent(MyComponent, this.$('#container'), {
 *   message: 'Hello'
 * }, {
 *   'custom-event': (data) => console.log('Event!', data)
 * })
 *
 * // Later, update props
 * component.update({ message: 'Updated' })
 *
 * // On unmount
 * component.unmount()
 */
export declare function mountVueComponent(component: Component, element: HTMLElement | null, props?: Record<string, unknown>, events?: Record<string, (...args: unknown[]) => void>, slots?: Record<string, () => unknown>): MountedComponent | null;
/**
 * Create a reusable wrapper for mounting any Vue component in Riot.
 *
 * @example
 * const button = createVueWrapper(AuxButton, {
 *   props: { primary: true },
 *   slots: { default: () => 'Save' }
 * })
 * button.mount(this.refs.container, { events: { click: onSave } })
 */
export declare function createVueWrapper(component: Component, defaults?: MountVueOptions): GenericVueWrapper;
/**
 * Unmount a Vue component from a DOM element
 */
export declare function unmountVueComponent(element: HTMLElement | null): void;
/**
 * Check if an element has a mounted Vue component
 */
export declare function hasMountedComponent(element: HTMLElement): boolean;
