import { z } from 'zod';
import { Division } from '../reusable/divisions.js';
import { BaseAnchorSchema } from './anchors.js';
import { BaseDropdownSchema } from './dropdown.js';
import { GroupsConfig, DecoratedGroupsConfig } from './groups.js';
import { BaseLanguageSchema } from './languages.js';
import { BaseMenuItemSchema } from './menu.js';
import { PagesConfig, DecoratedPagesConfig } from './pages.js';
import { BaseTabSchema } from './tabs.js';
import { BaseVersionSchema } from './version.js';
type NavigationType = 'default' | 'decorated';
declare const SomeApiSchema: z.ZodObject<{
    openapi: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, z.ZodObject<{
        source: z.ZodEffects<z.ZodString, string, string>;
        directory: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        source: string;
        directory?: string | undefined;
    }, {
        source: string;
        directory?: string | undefined;
    }>]>>;
    asyncapi: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">, z.ZodObject<{
        source: z.ZodEffects<z.ZodString, string, string>;
        directory: z.ZodOptional<z.ZodString>;
    }, "strict", z.ZodTypeAny, {
        source: string;
        directory?: string | undefined;
    }, {
        source: string;
        directory?: string | undefined;
    }>]>>;
}, "strip", z.ZodTypeAny, {
    openapi?: string | string[] | {
        source: string;
        directory?: string | undefined;
    } | undefined;
    asyncapi?: string | string[] | {
        source: string;
        directory?: string | undefined;
    } | undefined;
}, {
    openapi?: string | string[] | {
        source: string;
        directory?: string | undefined;
    } | undefined;
    asyncapi?: string | string[] | {
        source: string;
        directory?: string | undefined;
    } | undefined;
}>;
type OtherConfigs<T extends NavigationType> = T extends 'default' ? z.infer<typeof SomeApiSchema> & {
    global?: GlobalNavigation;
} : {
    global?: GlobalNavigation;
};
type ExcludedDivisions = {
    languages: 'languages' | 'menu';
    versions: 'versions' | 'menu';
    dropdowns: 'dropdowns' | 'menu';
    anchors: 'anchors' | 'menu';
    tabs: 'tabs' | 'menu';
    menu: 'languages' | 'versions' | 'dropdowns' | 'anchors' | 'menu';
};
type BaseNavigation<T extends NavigationType, K extends Division> = {
    languages: K extends ExcludedDivisions['languages'] ? never : LanguageNavigation<T>[];
} | {
    versions: K extends ExcludedDivisions['versions'] ? never : VersionNavigation<T>[];
} | {
    dropdowns: K extends ExcludedDivisions['dropdowns'] ? never : DropdownNavigation<T>[];
} | {
    anchors: K extends ExcludedDivisions['anchors'] ? never : AnchorNavigation<T>[];
} | {
    tabs: K extends ExcludedDivisions['tabs'] ? never : TabNavigation<T>[];
} | {
    menu: K extends ExcludedDivisions['menu'] ? never : MenuItemNavigation<T>[];
} | {
    groups: T extends 'default' ? GroupsConfig : DecoratedGroupsConfig;
} | {
    pages: T extends 'default' ? PagesConfig : DecoratedPagesConfig;
} | {
    href: string;
};
export type AnchorNavigation<T extends NavigationType> = BaseAnchorSchema & (OtherConfigs<T> | (BaseNavigation<T, 'anchors'> & OtherConfigs<T>));
export type LanguageNavigation<T extends NavigationType> = BaseLanguageSchema & (OtherConfigs<T> | (BaseNavigation<T, 'languages'> & OtherConfigs<T>));
export type VersionNavigation<T extends NavigationType> = BaseVersionSchema & (OtherConfigs<T> | (BaseNavigation<T, 'versions'> & OtherConfigs<T>));
export type DropdownNavigation<T extends NavigationType> = BaseDropdownSchema & (OtherConfigs<T> | (BaseNavigation<T, 'dropdowns'> & OtherConfigs<T>));
export type TabNavigation<T extends NavigationType> = BaseTabSchema & (OtherConfigs<T> | (BaseNavigation<T, 'tabs'> & OtherConfigs<T>));
export type MenuItemNavigation<T extends NavigationType> = BaseMenuItemSchema & (OtherConfigs<T> | (BaseNavigation<T, 'menu'> & OtherConfigs<T>));
export type GlobalNavigation = {
    languages?: (BaseLanguageSchema & {
        href: string;
    })[];
    versions?: (BaseVersionSchema & {
        href: string;
    })[];
    tabs?: (BaseTabSchema & {
        href: string;
    })[];
    dropdowns?: (BaseDropdownSchema & {
        href: string;
    })[];
    anchors?: (BaseAnchorSchema & {
        href: string;
    })[];
};
export {};
