interface Header {
    /**
     * The level of the header
     *
     * `1` to `6` for `<h1>` to `<h6>`
     */
    level: number;
    /**
     * The title of the header
     */
    title: string;
    /**
     * The slug of the header
     *
     * Typically the `id` attr of the header anchor
     */
    slug: string;
    /**
     * Link of the header
     *
     * Typically using `#${slug}` as the anchor hash
     */
    link: string;
    /**
     * i18n
     */
    lang?: string;
}
/**
 * @en
 * Menu item, the title menu parsed from the article.
 *
 * @zh
 * 菜单项，从文章中解析出的标题菜单。
 */
type MenuItem = Omit<Header, 'slug' | 'children'> & {
    element: HTMLHeadElement;
    children?: MenuItem[];
};

/**
 * @ref vitepress src/client/theme-chalk/composables/outline.ts
 */
declare const resolvedHeaders: {
    element: HTMLHeadElement;
    link: string;
}[];
interface GetHeadersOptions {
    range?: number | [number, number] | 'deep' | {
        level: [number, number];
    };
    selector?: string;
    filter?: (el: Element) => boolean;
}
declare function buildTree(data: MenuItem[], min: number, max: number): MenuItem[];
declare function addToParent(currIndex: number, headers: MenuItem[], levelsRange: [number, number]): boolean;
declare function resolveHeaders(headers: MenuItem[], range?: GetHeadersOptions['range']): MenuItem[];
declare function serializeHeader(h: Element): string;
/**
 * get headers from document directly
 */
declare function getHeaders(options?: GetHeadersOptions): MenuItem[];

export { type GetHeadersOptions, type Header, type MenuItem, addToParent, buildTree, getHeaders, resolveHeaders, resolvedHeaders, serializeHeader };
