import type { ComponentObjectPropsOptions, ComputedRef, DeepReadonly, ExtractPropTypes, Ref, } from 'vue' export declare type PropRefs = { [K in keyof T]-?: ComputedRef> } export declare type NotUndefined = T extends undefined ? never : T export declare type InferDefault = T extends | null | number | string | boolean | symbol | Function ? T | ((props: P) => T) : (props: P) => T export declare type InferDefaults = { [K in keyof T]?: InferDefault> } export declare type PropsWithDefaults = Base & { [K in keyof Defaults]: K extends keyof Base ? Defaults[K] extends undefined ? Base[K] : NotUndefined : never } export declare function withDefaults< PropsWithRefs extends PropRefs>, Defaults extends InferDefaults, Props = { -readonly [K in keyof PropsWithRefs]: PropsWithRefs[K] extends Readonly< Ref > ? T : PropsWithRefs[K] } >(props: PropsWithRefs, defaults: Defaults): PropRefs export declare function withDefaults< Props, Defaults extends InferDefaults >(props: Props, defaults: Defaults): PropsWithDefaults export declare function definePropsRefs( props: PropNames[] ): PropRefs<{ [key in PropNames]: Ref }> export declare function definePropsRefs< PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions >(props: PP): PropRefs> export declare function definePropsRefs(): PropRefs