import type { Ref, UnwrapNestedRefs } from 'vue';
import type { OARequest } from '../lib/codeSamples/request';
import type { OperationSlot, ParsedOperation } from '../types';
export interface ThemeConfig {
    highlighterTheme: {
        light: any;
        dark: any;
    };
}
export interface PathConfig {
    showBaseURL: Ref<boolean>;
}
export interface RequestConfig {
    defaultView: Ref<'schema' | 'contentType' | 'autogenerated'>;
}
export interface JsonViewerConfig {
    deep: Ref<number>;
    renderer: Ref<'vue-json-pretty' | 'shiki' | string>;
}
export interface SchemaViewerConfig {
    deep: Ref<number>;
}
export interface HeadingLevels {
    h1: number;
    h2: number;
    h3: number;
    h4: number;
    h5: number;
    h6: number;
}
export interface ResponseConfig {
    responseCodeSelector: Ref<'tabs' | 'select'>;
    maxTabs: Ref<number>;
    body: {
        defaultView: Ref<'schema' | 'contentType' | 'autogenerated'>;
    };
}
type PlaygroundJsonEditorMode = 'text' | 'tree' | 'table';
export interface PlaygroundConfig {
    jsonEditor: {
        mode: Ref<PlaygroundJsonEditorMode>;
        mainMenuBar: Ref<boolean>;
        navigationBar: Ref<boolean>;
    };
}
export interface SecurityConfig {
    defaultScheme: Ref<string | null>;
}
type OperationBadges = 'deprecated' | 'operationId';
export interface OperationConfig {
    badges?: Ref<OperationBadges[]>;
    slots?: Ref<OperationSlot[]>;
    /** @deprecated Use server.getServers instead */
    getServers?: GetServersFunction | null;
    hiddenSlots?: Ref<OperationSlot[]>;
    cols?: Ref<1 | 2>;
    defaultBaseUrl?: string;
}
export type Languages = 'es' | 'en' | 'ja' | 'pt-BR' | string;
export type Messages = Record<Languages, Record<string, string>>;
export interface AvailableLocale {
    code: string;
    label: string;
}
export interface I18nConfig {
    locale: Ref<Languages>;
    fallbackLocale: Ref<Languages>;
    messages: Messages;
    availableLocales?: AvailableLocale[];
}
export interface SpecConfig {
    groupByTags?: Ref<boolean>;
    collapsePaths?: Ref<boolean>;
    showPathsSummary?: Ref<boolean>;
    avoidCirculars?: Ref<boolean>;
    lazyRendering?: Ref<boolean>;
    defaultTag?: string;
    defaultTagDescription?: string;
    wrapExamples?: boolean;
}
export interface ServerConfig {
    allowCustomServer: boolean;
    getServers: GetServersFunction | null;
}
export interface UseThemeConfig {
    theme?: Partial<ThemeConfig>;
    path?: Partial<PathConfig>;
    requestBody?: Partial<RequestConfig>;
    jsonViewer?: Partial<JsonViewerConfig>;
    schemaViewer?: Partial<SchemaViewerConfig>;
    headingLevels?: Partial<HeadingLevels>;
    response?: Partial<ResponseConfig>;
    playground?: Partial<PlaygroundConfig>;
    security?: Partial<SecurityConfig>;
    operation?: Partial<OperationConfig>;
    i18n?: Partial<I18nConfig>;
    spec?: Partial<SpecConfig>;
    codeSamples?: Partial<CodeSamplesConfig>;
    linksPrefixes?: Partial<LinksPrefixesConfig>;
    server?: Partial<ServerConfig>;
}
export interface CodeSamplesConfig {
    langs: string[];
    defaultLang: string;
    availableLanguages: LanguageConfig[];
    generator: GeneratorFunction;
    defaultHeaders: Record<string, string>;
}
export interface LinksPrefixesConfig {
    tags: string;
    operations: string;
}
interface LanguageConfig {
    lang: string;
    label: string;
    highlighter: string;
    icon?: string;
}
export type PartialUseThemeConfig = Partial<UnwrapNestedRefs<UseThemeConfig>>;
type GeneratorFunction = (lang: string, request: OARequest) => Promise<string>;
type GetServersFunction = ({ method, path, operation }: {
    method: string;
    path: string;
    operation: ParsedOperation;
}) => string[] | null;
export declare const DEFAULT_OPERATION_SLOTS: OperationSlot[];
export declare const DEFAULT_BASE_URL = "http://localhost";
export declare const availableLanguages: LanguageConfig[];
export declare function useTheme(initialConfig?: PartialUseThemeConfig): {
    isDark: import("vue").WritableComputedRef<boolean, boolean>;
    schemaConfig: Partial<RequestConfig> | undefined;
    reset: () => void;
    getState: () => {
        theme?: {
            highlighterTheme?: {
                light: any;
                dark: any;
            } | undefined;
        } | undefined;
        path?: {
            showBaseURL?: boolean | undefined;
        } | undefined;
        requestBody?: {
            defaultView?: "schema" | "contentType" | "autogenerated" | undefined;
        } | undefined;
        jsonViewer?: {
            deep?: number | undefined;
            renderer?: string | undefined;
        } | undefined;
        schemaViewer?: {
            deep?: number | undefined;
        } | undefined;
        headingLevels?: {
            h1?: number | undefined;
            h2?: number | undefined;
            h3?: number | undefined;
            h4?: number | undefined;
            h5?: number | undefined;
            h6?: number | undefined;
        } | undefined;
        response?: {
            responseCodeSelector?: "tabs" | "select" | undefined;
            maxTabs?: number | undefined;
            body?: {
                defaultView: "schema" | "contentType" | "autogenerated";
            } | undefined;
        } | undefined;
        playground?: {
            jsonEditor?: {
                mode: PlaygroundJsonEditorMode;
                mainMenuBar: boolean;
                navigationBar: boolean;
            } | undefined;
        } | undefined;
        security?: {
            defaultScheme?: string | null | undefined;
        } | undefined;
        operation?: {
            badges?: OperationBadges[] | undefined;
            slots?: OperationSlot[] | undefined;
            getServers?: {} | null | undefined;
            hiddenSlots?: OperationSlot[] | undefined;
            cols?: 1 | 2 | undefined;
            defaultBaseUrl?: string | undefined;
        } | undefined;
        i18n?: {
            locale?: string | undefined;
            fallbackLocale?: string | undefined;
            messages?: {
                [x: string]: {
                    [x: string]: string;
                };
            } | undefined;
            availableLocales?: {
                code: string;
                label: string;
            }[] | undefined;
        } | undefined;
        spec?: {
            groupByTags?: boolean | undefined;
            collapsePaths?: boolean | undefined;
            showPathsSummary?: boolean | undefined;
            avoidCirculars?: boolean | undefined;
            lazyRendering?: boolean | undefined;
            defaultTag?: string | undefined;
            defaultTagDescription?: string | undefined;
            wrapExamples?: boolean | undefined;
        } | undefined;
        codeSamples?: {
            langs?: string[] | undefined;
            defaultLang?: string | undefined;
            availableLanguages?: {
                lang: string;
                label: string;
                highlighter: string;
                icon?: string | undefined;
            }[] | undefined;
            generator?: {} | undefined;
            defaultHeaders?: {
                [x: string]: string;
            } | undefined;
        } | undefined;
        linksPrefixes?: {
            tags?: string | undefined;
            operations?: string | undefined;
        } | undefined;
        server?: {
            allowCustomServer?: boolean | undefined;
            getServers?: {} | null | undefined;
        } | undefined;
    };
    getLocale: () => Languages;
    setLocale: (value: Languages) => void;
    getHighlighterTheme: () => {
        light: any;
        dark: any;
    } | undefined;
    /** @deprecated Use `getRequestBodyDefaultView` instead. */
    getSchemaDefaultView: () => "schema" | "contentType" | "autogenerated" | undefined;
    getRequestBodyDefaultView: () => "schema" | "contentType" | "autogenerated" | undefined;
    /** @deprecated Use `setRequestBodyDefaultView` instead. */
    setSchemaDefaultView: (value: "schema" | "contentType" | "autogenerated") => void;
    setRequestBodyDefaultView: (value: "schema" | "contentType" | "autogenerated") => void;
    getShowBaseURL: () => boolean | undefined;
    setShowBaseURL: (value: boolean) => void;
    getJsonViewerDeep: () => number | undefined;
    setJsonViewerDeep: (value: number) => void;
    getJsonViewerRenderer: () => "vue-json-pretty" | "shiki" | string;
    setJsonViewerRenderer: (value: "vue-json-pretty" | "shiki" | string) => void;
    getSchemaViewerDeep: () => number | undefined;
    setSchemaViewerDeep: (value: number) => void;
    getHeadingLevels: () => Partial<HeadingLevels> | undefined;
    getHeadingLevel: (level: keyof HeadingLevels) => `h${1 | 2 | 3 | 4 | 5 | 6}`;
    setHeadingLevels: (levels: Partial<UnwrapNestedRefs<HeadingLevels>>) => void;
    getResponseCodeSelector: () => "tabs" | "select" | undefined;
    setResponseCodeSelector: (value: "tabs" | "select") => void;
    getResponseCodeMaxTabs: () => number | undefined;
    setResponseCodeMaxTabs: (value: number) => void;
    getResponseBodyDefaultView: () => "schema" | "contentType" | "autogenerated" | undefined;
    setResponseBodyDefaultView: (value: "schema" | "contentType" | "autogenerated") => void;
    getPlaygroundJsonEditorMode: () => PlaygroundJsonEditorMode | undefined;
    setPlaygroundJsonEditorMode: (value: PlaygroundJsonEditorMode) => void;
    getPlaygroundJsonEditorMainMenuBar: () => boolean | undefined;
    setPlaygroundJsonEditorMainMenuBar: (value: boolean) => void;
    getPlaygroundJsonEditorNavigationBar: () => boolean | undefined;
    setPlaygroundJsonEditorNavigationBar: (value: boolean) => void;
    getSecurityDefaultScheme: () => string | null | undefined;
    setSecurityDefaultScheme: (value: string | null) => void;
    getOperationBadges: () => OperationBadges[];
    setOperationBadges: (value: OperationBadges[]) => void;
    getOperationSlots: () => OperationSlot[] | undefined;
    setOperationSlots: (value: OperationSlot[]) => void;
    getOperationHiddenSlots: () => OperationSlot[] | undefined;
    setOperationHiddenSlots: (value: OperationSlot[]) => void;
    getOperationCols: () => 1 | 2 | undefined;
    setOperationCols: (value: number) => void;
    getOperationDefaultBaseUrl: () => string;
    getOperationServers: () => GetServersFunction | null;
    getI18nConfig: () => I18nConfig;
    setI18nConfig: (config: Partial<UnwrapNestedRefs<I18nConfig>>) => void;
    getSpecConfig: () => Partial<SpecConfig> | undefined;
    getWrapExamples: () => boolean | undefined;
    setSpecConfig: (config: Partial<UnwrapNestedRefs<SpecConfig>>) => void;
    getCodeSamplesLangs: () => string[] | undefined;
    getCodeSamplesDefaultLang: () => string;
    getCodeSamplesAvailableLanguages: () => LanguageConfig[] | undefined;
    getCodeSamplesGenerator: () => GeneratorFunction | undefined;
    getCodeSamplesDefaultHeaders: () => Record<string, string> | undefined;
    setCodeSamplesConfig: (config: Partial<UnwrapNestedRefs<CodeSamplesConfig>>) => void;
    getLinksPrefixesConfig: () => Partial<LinksPrefixesConfig> | undefined;
    setLinksPrefixesConfig: (config: Partial<UnwrapNestedRefs<LinksPrefixesConfig>>) => void;
    getTagsLinkPrefix: () => string | undefined;
    getOperationsLinkPrefix: () => string | undefined;
    getServerConfig: () => ServerConfig;
    setServerConfig: (config: Partial<UnwrapNestedRefs<ServerConfig>>) => void;
    getServerAllowCustomServer: () => boolean;
};
export {};
