import type { OpenAPIV3 } from '@scalar/openapi-types';
import type { DefaultTheme } from 'vitepress';
import type { OpenAPIDocument } from '../types';
type MethodAliases = Record<string, string>;
export type SidebarItemTemplateFn = (method: OpenAPIV3.HttpMethods, path: string) => string;
export type SidebarGroupTemplateFn = (path: string, depth: number) => string;
export interface SidebarConfig {
    spec?: OpenAPIDocument | null;
    linkPrefix?: string;
    tagLinkPrefix?: string;
    defaultTag?: string;
    methodAliases?: MethodAliases;
    sidebarItemTemplate?: SidebarItemTemplateFn;
    sidebarGroupTemplate?: SidebarGroupTemplateFn;
}
export interface SidebarGroupConfig {
    tag: string | string[];
    text?: string;
    linkPrefix?: string;
    addedOperations?: Set<string>;
    sidebarItemTemplate?: SidebarItemTemplateFn;
    sidebarGroupTemplate?: SidebarGroupTemplateFn;
}
export interface SidebarGroupsConfig {
    tags?: string[] | null;
    linkPrefix?: string | null;
    sidebarItemTemplate?: SidebarItemTemplateFn;
    sidebarGroupTemplate?: SidebarGroupTemplateFn;
}
export interface OASidebarItem extends DefaultTheme.SidebarItem {
    path?: string;
    isOperation?: boolean;
    flattenedItems?: OASidebarItem[];
}
export declare function useSidebar({ spec, linkPrefix, tagLinkPrefix, defaultTag, methodAliases, sidebarItemTemplate, sidebarGroupTemplate, }?: SidebarConfig): {
    sidebarItemTemplate: SidebarItemTemplateFn;
    sidebarGroupTemplate: SidebarGroupTemplateFn;
    generateSidebarItem: (method: OpenAPIV3.HttpMethods, path: string, itemLinkPrefix?: string, localItemTemplate?: SidebarItemTemplateFn) => OASidebarItem | null;
    generateSidebarGroup: ({ tag, text, linkPrefix: groupLinkPrefix, addedOperations, sidebarItemTemplate: localItemTemplate, sidebarGroupTemplate: localGroupTemplate, }: SidebarGroupConfig) => OASidebarItem;
    generateSidebarGroups: ({ tags, linkPrefix: groupsLinkPrefix, sidebarItemTemplate: localItemTemplate, sidebarGroupTemplate: localGroupTemplate, }?: SidebarGroupsConfig) => OASidebarItem[];
    itemsByTags: ({ tags, linkPrefix: tagsLinkPrefix, }?: SidebarGroupsConfig) => OASidebarItem[];
    itemsByPaths: ({ startsWith, collapsible, depth, linkPrefix: itemLinkPrefix, sidebarItemTemplate, sidebarGroupTemplate, }?: {
        startsWith?: string;
        collapsible?: boolean;
        depth?: number;
        linkPrefix?: string;
        sidebarItemTemplate?: SidebarItemTemplateFn;
        sidebarGroupTemplate?: SidebarGroupTemplateFn;
    }) => DefaultTheme.SidebarItem[];
};
export {};
