import { W as WebsocketsOptions } from '../index-6iAzVvXp.js';

/**
 * Minimal compiler types for webpack/rspack compatibility.
 * We define these inline to avoid requiring @rspack/core or webpack as dependencies.
 */
interface Compiler {
    options: {
        resolve: {
            alias?: Record<string, string | false>;
        };
    };
    hooks: {
        beforeCompile: {
            tapPromise: (name: string, fn: () => Promise<void>) => void;
        };
    };
    webpack: {
        NormalModuleReplacementPlugin: new (pattern: RegExp, fn: (resource: {
            request?: string;
        }) => void) => {
            apply: (compiler: Compiler) => void;
        };
    };
}
/**
 * Options for configuring the Storybook Repack plugin.
 */
interface StorybookPluginOptions {
    /**
     * The path to the Storybook config folder. Defaults to './.rnstorybook'.
     */
    configPath?: string;
    /**
     * If false, strips Storybook from the bundle. Defaults to true.
     */
    enabled?: boolean;
    /**
     * WebSocket configuration for syncing storybook instances or sending events to storybook.
     * When set to 'auto', uses port 7007 and auto-detects the host LAN IP address.
     */
    websockets?: WebsocketsOptions | 'auto';
    /**
     * Whether to use JavaScript files for Storybook configuration instead of TypeScript.
     * When true, generates storybook.requires.js instead of storybook.requires.ts.
     * Defaults to false.
     */
    useJs?: boolean;
    /**
     * Whether to include doc tools in the storybook.requires file.
     * Doc tools provide additional documentation features. Defaults to true.
     */
    docTools?: boolean;
    /**
     * Whether to use lite mode for the storybook. In lite mode, the default storybook UI
     * is mocked out so you don't need to install all its dependencies like reanimated etc.
     * Defaults to false.
     */
    liteMode?: boolean;
    /**
     * Whether to enable MCP (Model Context Protocol) server support. Defaults to false.
     * When enabled, adds an /mcp endpoint to the channel server,
     * allowing AI agents (Claude Code, Cursor, etc.) to query component documentation.
     * If websockets are disabled, MCP documentation tools still work but story selection is unavailable.
     */
    experimental_mcp?: boolean;
}
/**
 * Repack/Rspack plugin for React Native Storybook.
 *
 * Provides equivalent functionality to the Metro {@link withStorybook} wrapper:
 * - Auto-generates `storybook.requires.ts` before compilation
 * - Starts a WebSocket channel server for remote control / syncing
 * - Supports `enabled: false` to strip Storybook from the bundle
 * - Supports `liteMode` to mock out the full Storybook UI
 *
 * @example
 * ```javascript
 * import { StorybookPlugin } from '@storybook/react-native/repack/withStorybook';
 *
 * // In your rspack.config.mjs plugins array:
 * new StorybookPlugin({
 *   enabled: true,
 *   websockets: 'auto',
 * })
 * ```
 *
 * @example
 * ```javascript
 * // Disable Storybook in production builds:
 * new StorybookPlugin({
 *   enabled: process.env.STORYBOOK_ENABLED !== 'false',
 *   websockets: 'auto',
 * })
 * ```
 */
declare class StorybookPlugin {
    private options;
    private generated;
    private serverStarted;
    constructor(options?: StorybookPluginOptions);
    apply(compiler: Compiler): void;
    /**
     * When enabled: generate storybook.requires, optionally start websocket server,
     * and set up liteMode aliases.
     */
    private applyEnabled;
    /**
     * When disabled: redirect all Storybook imports to empty modules,
     * and replace the config folder index with a stub component.
     */
    private applyDisabled;
}

export { StorybookPlugin, type StorybookPluginOptions };
