import type { MaybeRefOrGetter, Ref } from "vue";
import type { Entangled, ExtendedRef, UnwrapRefOrGetter } from "#reactivity";
import type { Prettify, ValueOf, DescriptorMarked } from "#utilities";
export type EntangledProperties
, Ignore extends PropertyKey> = Omit<{
[K in keyof P]: P[K] extends Ref ? V : P[K] extends DescriptorMarked ? 'value' extends keyof D ? D['value'] extends Ref ? 'unwrap' extends keyof D ? D['unwrap'] extends false ? D['value'] : V | D['value'] : V : D['value'] : 'get' extends keyof D ? D['get'] extends (...args: any) => infer V ? V : undefined : undefined : P[K];
}, Ignore>;
type ExtractEntangled = T extends ExtendedRef ? E : T extends Entangled ? P : T;
export type WithEntangled, Ignore extends PropertyKey> = O extends ExtendedRef ? ExtendedRef>, Ignore | I> : O extends Entangled ? Entangled>, Ignore | I> : O & EntangledProperties, Ignore>;
export type EntangledUnwrappedPropertyKeys, Ignore extends PropertyKey> = ValueOf<{
[K in Exclude]: P[K] extends Ref ? K : P[K] extends DescriptorMarked ? D extends {
value: infer V;
} ? V extends Ref ? D extends {
unwrap: false;
} ? never : K : never : never : never;
}> | (string & {});
export type EntangledUnwrappedPropertyRefs, K extends keyof P> = P[K] extends Ref ? P[K] : P[K] extends DescriptorMarked ? D extends {
value: infer V;
} ? V extends Ref ? D extends {
unwrap: infer U;
} ? U extends false ? undefined : V : V : undefined : undefined : undefined;
export type ExtendedRefImplOptions, Shallow extends boolean = boolean> = {
/**
* Whether the created extendedRef's underlying ref is shallow.
* @default false
*/
shallow?: Shallow;
/**
* Custom extendedRef's `value` getter function.
*/
get?: () => UnwrapRefOrGetter;
/**
* Custom extendedRef's `value` setter function.
*/
set?: (value: U) => void;
};
export {};
//# sourceMappingURL=extendedReactivity.types.d.ts.map