export type DeepModelOptions<T> = {
    default?: T;
    /**
     * Watch the props for changes and update the model accordingly.
     *
     * However, you must also preserve reference of @update:modelValue
     * in the parent component, otherwise the component will update recursively.
     *
     * Example:
     * ```vue
     *
     * // file: MyComponent.vue using defineDeepModel
     * <template>
     *   <div>{{ model }}</div>
     * </template>
     * <script setup>
     * import { defineDeepModel } from '@/composable/defineDeepModel'
     * const model = defineDeepModel('modelValue', { watchProps: true })
     * </script>
     *
     *
     * // file: MainComponent.vue
     * <template>
     * <!-- preserve reference of model -->
     *   <MyComponent v-model="model" />
     *
     * //   <!-- or -->
     *   <MyComponent :model-value="model" @update:model-value="(obj) => model = obj" />
     * </template>
     * <script setup>
     * import { ref } from 'vue'
     *
     * const model = ref({})
     * </script>
     * ```
     */
    watchProps?: boolean;
};
/** Use in "\<script setup\>" only! */
export declare function defineDeepModel<T>(name?: string, opt?: DeepModelOptions<T>): T;
