import type { ComponentObjectPropsOptions, ExtractPropTypes } from 'vue' // copy from vue-core export type Prettify = { [K in keyof T]: T[K] } & {} type NotUndefined = T extends undefined ? never : T type InferDefaults = { [K in keyof T]?: InferDefault } type NativeType = null | number | string | boolean | symbol | Function type InferDefault = | ((props: P) => T & {}) | (T extends NativeType ? T : never) type PropsWithDefaults< T, Defaults extends InferDefaults, BKeys extends keyof T, > = Omit & { [K in keyof Defaults]-?: K extends keyof T ? Defaults[K] extends undefined ? T[K] : NotUndefined : never } & { readonly [K in BKeys]-?: boolean } type DefineProps = Readonly & { readonly [K in BKeys]-?: boolean } type BooleanKey = K extends any ? [T[K]] extends [boolean | undefined] ? K : never : never // end export type AttachWithDefaults = Props & { withDefaults: (() => Props) & (, Defaults extends InferDefaults>( defaults?: Defaults, ) => Prettify>) } export declare function defineProps( props: PropNames[], ): Prettify< AttachWithDefaults< Readonly<{ [key in PropNames]?: any }> > > export declare function defineProps< PP extends ComponentObjectPropsOptions = ComponentObjectPropsOptions, >(props: PP): Prettify>>> export declare function defineProps(): AttachWithDefaults< DefineProps> >