type SideBarConfig = {
    id: string;
    visible: boolean;
};
type ResourceDependency = {
    id: string;
    version?: string;
};
type CustomSideBarItem = {
    label: string;
    slug: string;
    items?: CustomSideBarItem[];
};
type ManualSideBarConfig = {
    label: string;
    badge?: {
        text: string;
        color: string;
    };
    collapsed?: boolean;
    items: CustomSideBarItem[];
};
type AutoGeneratedSideBarConfig = {
    label: string;
    autogenerated: {
        directory: string;
    };
    badge?: {
        text: string;
        color: string;
    };
    collapsed?: boolean;
};
type TableConfiguration = {
    columns: {
        [key: string]: {
            visible?: boolean;
        };
    };
};
type PagesConfiguration = {
    type: 'item' | 'group';
    title: string;
    icon?: string;
    pages?: string[];
};
type AuthConfig = {
    enabled: boolean;
};
type GA4Config = {
    measurementId: string;
};
type GTMConfig = {
    tagId: string;
};
type PostHogConfig = {
    apiKey: string;
    apiHost?: string;
};
type IntegrationsConfig = {
    ga4?: GA4Config;
    gtm?: GTMConfig;
    posthog?: PostHogConfig;
    /** Log all analytics events to the browser console */
    debug?: boolean;
};
type ScalarConfiguration = any;
interface Config {
    title: string;
    tagline: false;
    organizationName: string;
    homepageLink: string;
    editUrl: string;
    repositoryUrl?: string;
    landingPage?: string;
    base?: string;
    port?: string;
    host?: string;
    trailingSlash?: boolean;
    output?: 'server' | 'static';
    /**
     * Theme for the catalog UI.
     * - 'default': Default purple/slate theme
     * - 'ocean': Deep blue/teal ocean-inspired theme
     * @default 'default'
     */
    theme?: 'default' | 'ocean';
    auth?: AuthConfig;
    rss?: {
        enabled: boolean;
        limit: number;
    };
    llmsTxt?: {
        enabled: boolean;
    };
    logo?: {
        alt: string;
        src: string;
        text?: string;
    };
    asyncAPI?: {
        renderParsedSchemas?: boolean;
        allowAnyEnvInSpecHeaders?: boolean;
    };
    mdxOptimize?: boolean;
    compress?: boolean;
    sidebar?: SideBarConfig[];
    navigation?: {
        pages: PagesConfiguration[];
    };
    docs: {
        sidebar: {
            type?: 'TREE_VIEW' | 'LIST_VIEW';
            showOrphanedMessages?: boolean;
        };
    };
    dependencies?: {
        commands?: ResourceDependency[];
        events?: ResourceDependency[];
        services?: ResourceDependency[];
        domains?: ResourceDependency[];
    };
    mermaid?: {
        maxTextSize?: number;
        iconPacks?: string[];
    };
    chat?: {
        enabled: boolean;
        provider?: 'openai' | 'anthropic' | 'google';
        model?: string;
        max_tokens?: number;
        similarityResults?: number;
        temperature?: number;
        topP?: number;
        topK?: number;
        frequencyPenalty?: number;
        presencePenalty?: number;
    };
    customDocs?: {
        sidebar?: (ManualSideBarConfig | AutoGeneratedSideBarConfig)[];
    };
    api?: {
        /**
         * Enable or disable the /api/catalog endpoint that dumps the entire catalog as JSON.
         * Disabling this can significantly reduce memory usage during builds for large catalogs (1000+ files).
         * @default false
         */
        fullCatalogAPIEnabled?: boolean;
    };
    changelog?: {
        enabled: boolean;
    };
    visualiser?: {
        enabled?: boolean;
        channels?: {
            renderMode?: 'flat' | 'single';
        };
    };
    environments?: {
        name: string;
        url: string;
        description?: string;
        shortName?: string;
    }[];
    users?: {
        tableConfiguration?: TableConfiguration;
    };
    teams?: {
        tableConfiguration?: TableConfiguration;
    };
    events?: {
        tableConfiguration?: TableConfiguration;
    };
    services?: {
        tableConfiguration?: TableConfiguration;
    };
    domains?: {
        tableConfiguration?: TableConfiguration;
    };
    flows?: {
        tableConfiguration?: TableConfiguration;
    };
    containers?: {
        tableConfiguration?: TableConfiguration;
    };
    commands?: {
        tableConfiguration?: TableConfiguration;
    };
    queries?: {
        tableConfiguration?: TableConfiguration;
    };
    integrations?: IntegrationsConfig;
    scalarConfiguration?: ScalarConfiguration;
}

export type { Config, SideBarConfig };
