/// <reference path="../../index.d.ts" />
import { JsxNode, PublicLitElement as LitElement, TargetedEvent } from '@arcgis/lumina';
import { PropertyValues } from 'lit';
/**
 * @remarks
 * This component has 3 main parts to manage:
 * 1. setting up the theme colors from monaco for syntax highlighting
 *   - done via stylesheets created and applied in adoptedStyleSheets
 *   - These styles need to update when: 1. the theme changes, 2. the component is first loaded, 3. the component reconnects with a different theme
 * 2. setting the html content of the code block, which is "colorized" by monaco
 *   - This needs to happen when: 1. the code changes, 2. the language changes
 * 3. managing the code content provided via the default slot
 *   - This needs to handle: 1. slotchange events, 2. mutations to the assigned nodes (e.g., innerHTML or textContent changes)
 */

/**
 * A code viewer component for displaying code snippets.
 * Supports syntax highlighting for various programming languages, include arcade and arcgis-sql-expression.
 *
 * [Read more...](https://developers.arcgis.com/javascript/latest/references/coding-components/arcgis-code-viewer/)
 *
 * @example
 * ```tsx
 * <arcgis-code-viewer language="javascript">
 * function greet() {
 *   console.log("Hello, World!");
 * }
 * </arcgis-code-viewer>
 * ```
 * @example
 * HTML snippets (preserve markup)
 * ```tsx
 * <arcgis-code-viewer language="html">
 * <template>
 * <div class="greeting"><span>Hello</span> World!</div>
 * </template>
 * </arcgis-code-viewer>
 * ```
 * When `language="html"`, the component will attempt to preserve your original markup instead of reducing it
 * to plain text. For safety and to prevent the markup from rendering in-page, wrap the snippet in a `<template>`.
 * If no `<template>` is provided, the component falls back to concatenating the `outerHTML` of element nodes and the
 * raw text of text nodes. Script contents are treated as inert string data; they are never executed.
 * @internal
 */
export declare class ArcgisCodeViewer extends LitElement {
    /**
     * The language for the component.
     * Currently supported language: arcade, arcgis-sql-expression, plus all the following languages found in monaco-editor's repo:
     * https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages.
     *
     * Note: The number of supported languages is limited in cdn builds to reduce package size. In cdn builds,
     * only the following languages are supported: css, html, javascript, typescript, and arcade, arcgis-sql-expression.
     *
     * @default "arcade"
     */
    language: string;
    /**
     * When `true`, adds a round style to the component.
     *
     * @default false
     */
    round: boolean;
}
