import { PureObject } from '../../types';
import { Ref, WritableComputedRef } from 'vue';

interface DefaultUseModelConfig<V = any> {
    emitEvent?: string;
    defaultValue?: V;
}
/**
 * 用于接受一个不可修改的prop，实现对prop某个深层次属性的v-model
 * 装饰器`@Model`的composable版本
 * @param { Ref | AnyFunc<PureObject> } objRef ref
 * @param { string } key 属性路径，如`'name'`、`'user.name'`、`'user.phone[0]'`
 * @param { DefaultUseModelConfig } config 额外配置
 * @param { string } config.emitEvent emit事件名称
 * @param { string } config.defaultValue 默认值
 * @returns { WritableComputedRef }
 */
export declare const useModelDeepValue: <V = any, T extends {} = PureObject>(objRef: Ref<T> | (() => T), key: string, config?: DefaultUseModelConfig<V>) => WritableComputedRef<V>;
/**
 * 用于接受一个不可修改的prop，实现对prop表层属性的v-model
 * 装饰器`@Model`的composable版本
 * @param { Ref | AnyFunc<PureObject> } objRef ref
 * @param { string } key 属性路径，如`'name'`、`'user.name'`、`'user.phone[0]'`
 * @param { DefaultUseModelConfig | string } config 额外配置或者emit事件名称
 * @param { string } config.emitEvent emit事件名称
 * @param { string } config.defaultValue 默认值
 * @returns { WritableComputedRef }
 */
export declare const useModelValue: <T extends PureObject, K extends keyof T>(objRef: Ref<T> | (() => T), key: K, config?: DefaultUseModelConfig<T[K]> | string) => WritableComputedRef<T[K]>;
export {};
