import { DslDefinition } from '@oinone/kunlun-dsl';
import { RenderWidget, VueWidget } from '@oinone/kunlun-vue-widget';
import { ComponentOptionsMixin, Ref, SetupContext, Slots } from 'vue';
import { CustomWidgetProps, InternalWidget } from '../resolve';
/**
 * 函数式组件标签混入可选项
 * 使用此混入方式，必须使用setup调用{@link useWidgetTag}方法
 */
export declare const UseWidgetTagMixin: ComponentOptionsMixin;
export interface UseWidgetTagContext {
    dslDefinition?: DslDefinition;
    slotName?: string;
    inline?: boolean;
    slotContext?: Record<string, unknown>;
}
export interface UseWidgetTagOptions {
    getWidgetTag?: () => InternalWidget | string;
    getMetadataHandle?: () => string;
    getRootHandle?: () => string;
    getParentHandle?: () => string;
    getDslDefinition?: () => DslDefinition | undefined;
    getSlotName?: () => string;
    getInline?: () => boolean;
    getCustomProps?: () => Record<string, unknown>;
    getProps?: () => CustomWidgetProps;
    getCurrentSlots?: () => Slots | undefined;
    createWidget?: (props: CustomWidgetProps) => RenderWidget | undefined;
}
export interface UseWidgetResult {
    widgetHandle: Ref<string>;
    widget: Ref<VueWidget | undefined>;
    widgets: Ref<VueWidget[]>;
    getWidgetTag: () => InternalWidget | string;
    getMetadataHandle: () => string;
    getRootHandle: () => string;
    getParentHandle: () => string;
    getDslDefinition: () => DslDefinition | undefined;
    getSlotName: () => string;
    getInline: () => boolean;
    getCustomProps: () => Record<string, unknown>;
    getProps: () => CustomWidgetProps;
    getCurrentSlots: () => Slots | undefined;
}
export declare function useWidgetTag(props: UseWidgetTagContext, context: SetupContext, options?: UseWidgetTagOptions): UseWidgetResult;
