import { Ref } from 'vue';
import type { UnwrapNestedRefs } from 'vue';
import type { MaybeRef } from '../types/index';
/**
 * toggle show
 * @param state init value (default `false`)
 */
export declare function useShow(state?: MaybeRef<boolean>): {
    show: Ref<boolean>;
    toggleShow: () => void;
};
/**
 * emit value to parent
 * @param key value key
 * @param emit update function
 */
export declare function useEmitValue(key?: string, emit?: (name: string, ...args: unknown[]) => void): (value: unknown) => void;
type UseSplitReactive<T extends object, K extends Array<keyof T>[]> = {
    [P in keyof K]: P extends `${number}` ? UnwrapNestedRefs<Pick<T, Extract<K[P], Array<keyof T>>[number]>> : never;
};
/**
 * split reactive object to multiple reactive objects
 * @param reactive the reactive object in vue
 * @param args split keys
 */
export declare function useSplitReactive<T extends object, K extends Array<keyof T>[]>(reactive: T, ...args: K): UseSplitReactive<T, K>;
export {};
