import { Options } from '@nolebase/vitepress-plugin-enhanced-readabilities/client';
import { Options as Options$1 } from '@nolebase/vitepress-plugin-git-changelog/client';
import { Options as Options$2 } from '@nolebase/vitepress-plugin-inline-link-preview/client';
import { Options as Options$3 } from '@nolebase/vitepress-plugin-page-properties/client';
import { EnhanceAppContext } from 'vitepress';
import { h } from 'vue';

interface PresetClientOptions<PagePropertiesObject extends object = any> {
    enhancedMark?: false;
    enhancedReadabilities?: false | {
        options?: Options;
    };
    gitChangelog?: false | {
        options?: Options$1;
    };
    highlightTargetedHeading?: false;
    index?: false;
    inlineLinkPreview?: false | {
        options?: Options$2;
    };
    pageProperties?: false | {
        options?: Options$3<PagePropertiesObject>;
    };
    thumbnailHash?: false;
}

type Slots = ReturnType<typeof h>[];
interface PresetClient {
    enhanceLayout?: () => Record<string, Array<() => Slots[number]>>;
    enhanceApp?: (ctx: EnhanceAppContext) => void | Promise<void>;
}

declare function presetClient<PagePropertiesObject extends object = any>(options?: PresetClientOptions<PagePropertiesObject>): PresetClient;

export { presetClient };
