/**
 * @create-markdown/preview - Web Component
 * <markdown-preview> custom element for rendering markdown anywhere
 */
import type { Block } from '@create-markdown/core';
import type { PreviewPlugin } from './plugins/types';
export type ShadowModeOption = 'open' | 'closed' | 'none';
/**
 * Options for registering the web component
 */
export interface RegisterOptions {
    /** Custom tag name (default: 'markdown-preview') */
    tagName?: string;
    /** Default theme */
    defaultTheme?: 'github' | 'github-dark' | 'minimal' | 'system' | string;
    /** Default plugins to apply */
    plugins?: PreviewPlugin[];
    /** Shadow DOM mode. Use 'none' to render in light DOM and inherit page CSS. */
    shadowMode?: ShadowModeOption;
}
/**
 * Attributes supported by the web component
 */
export interface MarkdownPreviewAttributes {
    /** Theme name */
    theme?: string;
    /** Link target */
    'link-target'?: '_blank' | '_self';
    /** Whether to use async rendering with plugins */
    async?: string;
}
/**
 * The MarkdownPreview custom element
 */
declare class MarkdownPreviewElement extends HTMLElement {
    /** @internal */ static _shadowMode: ShadowModeOption;
    private _shadow;
    private plugins;
    private defaultTheme;
    private styleElement;
    private contentElement;
    static get observedAttributes(): string[];
    private get renderRoot();
    constructor();
    connectedCallback(): void;
    attributeChangedCallback(_name: string, _oldValue: string | null, _newValue: string | null): void;
    setPlugins(plugins: PreviewPlugin[]): void;
    setDefaultTheme(theme: string): void;
    getMarkdown(): string;
    setMarkdown(markdown: string): void;
    setBlocks(blocks: Block[]): void;
    private getOptions;
    private getBlocks;
    private render;
    private updateStyles;
}
/**
 * Register the <markdown-preview> custom element
 */
export declare function registerPreviewElement(options?: RegisterOptions): void;
/**
 * Auto-register if in browser environment
 */
export declare function autoRegister(): void;
export { MarkdownPreviewElement };
//# sourceMappingURL=web-component.d.ts.map