import type * as Layer from "../../Layer.ts";
import * as HttpRouter from "../http/HttpRouter.ts";
import type * as HttpApi from "./HttpApi.ts";
import type * as HttpApiGroup from "./HttpApiGroup.ts";
/**
 * Theme preset identifier accepted by the Scalar API reference UI.
 *
 * @category models
 * @since 4.0.0
 */
export type ScalarThemeId = "alternate" | "default" | "moon" | "purple" | "solarized" | "bluePlanet" | "saturn" | "kepler" | "mars" | "deepSpace" | "laserwave" | "none";
/**
 * Configuration passed to the embedded Scalar API reference UI.
 *
 * **Details**
 *
 * This configuration follows Scalar's API reference configuration:
 * https://github.com/scalar/scalar/blob/main/documentation/configuration.md
 *
 * @category models
 * @since 4.0.0
 */
export type ScalarConfig = {
    /** A string to use one of the color presets */
    theme?: ScalarThemeId;
    /** The layout to use for the references */
    layout?: "modern" | "classic";
    /** URL to a request proxy for the API client */
    proxyUrl?: string;
    /** Whether to show the sidebar */
    showSidebar?: boolean;
    /**
     * Whether to show models in the sidebar, search, and content.
     *
     * @default false
     */
    hideModels?: boolean;
    /**
     * Whether to show the "Test Request" button.
     *
     * @default false
     */
    hideTestRequestButton?: boolean;
    /**
     * Whether to show the sidebar search bar.
     *
     * @default false
     */
    hideSearch?: boolean;
    /** Whether dark mode is on or off initially (light mode) */
    darkMode?: boolean;
    /** forceDarkModeState makes it always this state no matter what */
    forceDarkModeState?: "dark" | "light";
    /** Whether to show the dark mode toggle */
    hideDarkModeToggle?: boolean;
    /**
     * Path to a favicon image.
     *
     * **Example** (Relative favicon)
     *
     * ```ts
     * const favicon = "/favicon.svg"
     * ```
     *
     * @default undefined
     */
    favicon?: string;
    /** Custom CSS to be added to the page */
    customCss?: string;
    /**
     * Origin used when the OpenAPI document contains relative server URLs and is
     * rendered during SSR.
     *
     * **Details**
     *
     * Browsers can derive the origin from `window.location.origin`; server
     * rendering needs this value supplied explicitly.
     *
     * **Example** (Local server URL)
     *
     * ```ts
     * const baseServerURL = "http://localhost:3000"
     * ```
     *
     * @default undefined
     */
    baseServerURL?: string;
    /**
     * Whether Scalar loads its default Inter and JetBrains Mono fonts.
     *
     * **Details**
     *
     * Set this to `false` when supplying custom fonts.
     *
     * @default true
     */
    withDefaultFonts?: boolean;
    /**
     * Whether all tags are open by default instead of only the tag matching the
     * current URL.
     *
     * @default false
     */
    defaultOpenAllTags?: boolean;
    /**
     * Whether to display the operation ID in the operation reference.
     *
     * @default false
     */
    showOperationId?: boolean;
};
/**
 * Mounts a Scalar API reference page for an `HttpApi` using the bundled Scalar script.
 *
 * **Details**
 *
 * The route serves the OpenAPI specification generated from the API at the
 * configured path, defaulting to `/docs`.
 *
 * @category layers
 * @since 4.0.0
 */
export declare const layer: <Id extends string, Groups extends HttpApiGroup.Any>(api: HttpApi.HttpApi<Id, Groups>, options?: {
    readonly path?: `/${string}` | undefined;
    readonly scalar?: ScalarConfig;
} | undefined) => Layer.Layer<never, never, HttpRouter.HttpRouter>;
/**
 * Mounts a Scalar API reference page for an `HttpApi` that loads Scalar from jsDelivr.
 *
 * **Details**
 *
 * The route serves the OpenAPI specification generated from the API at the
 * configured path, defaulting to `/docs`; `version` selects the Scalar package
 * version loaded from the CDN.
 *
 * @category layers
 * @since 4.0.0
 */
export declare const layerCdn: <Id extends string, Groups extends HttpApiGroup.Any>(api: HttpApi.HttpApi<Id, Groups>, options?: {
    readonly path?: `/${string}` | undefined;
    readonly scalar?: ScalarConfig;
    readonly version?: string | undefined;
} | undefined) => Layer.Layer<never, never, HttpRouter.HttpRouter>;
//# sourceMappingURL=HttpApiScalar.d.ts.map