import { OnInit, AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { EditorOptions } from './models';
import * as i0 from "@angular/core";
/**
 * @description Componente de editor de código com syntax highlighting, construído sobre
 * um editor Monaco/CodeMirror. Implementa {@link ControlValueAccessor} para integração
 * com formulários Angular e suporta configuração de linguagem, tema e opções avançadas
 * do editor via `editorOptions`.
 *
 * @example
 * ```html
 * <s-code-editor
 *   formControlName="script"
 *   [editorOptions]="{ language: 'javascript', theme: 'vs-dark' }"
 *   (codeChange)="onCodeChange($event)" />
 * ```
 *
 * @category Inputs
 */
export declare class CodeEditorComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnDestroy {
    private readonly coreFacade;
    /**
     * @description Opções de configuração do editor (linguagem, tema, readonly, etc.).
     * Ao atribuir um novo valor, as opções são aplicadas imediatamente ao editor.
     */
    set editorOptions(options: EditorOptions | undefined);
    /**
     * @description Conteúdo textual do editor. Ao atribuir, o código é propagado ao núcleo do editor.
     */
    set code(code: string);
    /**
     * @description Indica se o código atual é válido segundo as regras do editor.
     * Pode ser usado para exibir indicadores visuais de erro.
     *
     * @default false
     */
    isCodeValid: boolean | undefined;
    /**
     * @description Payload adicional passado ao núcleo do editor, utilizado para
     * contexto de autocompletar ou validações específicas da linguagem.
     */
    set payload(payload: string);
    /** @description Emitido sempre que o conteúdo do editor é alterado. Emite o código atual como string. */
    codeChange: EventEmitter<string>;
    /** @description Emitido quando o estado de validade do código muda. */
    isCodeValidChange: EventEmitter<boolean>;
    /**
     * @deprecated Use `codeChange` ao invés deste output.
     * @description Emitido sempre que o conteúdo do editor é alterado.
     */
    onCodeChange: EventEmitter<string>;
    /** @description Emitido quando o componente finaliza o carregamento e o editor está pronto para uso. */
    onComponentFinishLoad: EventEmitter<void>;
    private readonly coreWrapperElement;
    private readonly _ngUnsubscribe;
    private _onChange;
    private _onTouched;
    writeValue(value: string): void;
    registerOnChange(onChange: (value: string) => void): void;
    registerOnTouched(onTouched: () => void): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    private setCoreWrapperElement;
    private setupCoreListeners;
    static ɵfac: i0.ɵɵFactoryDeclaration<CodeEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CodeEditorComponent, "s-code-editor", never, { "editorOptions": { "alias": "editorOptions"; "required": false; }; "code": { "alias": "code"; "required": false; }; "isCodeValid": { "alias": "isCodeValid"; "required": false; }; "payload": { "alias": "payload"; "required": false; }; }, { "codeChange": "codeChange"; "isCodeValidChange": "isCodeValidChange"; "onCodeChange": "onCodeChange"; "onComponentFinishLoad": "onComponentFinishLoad"; }, never, never, false, never>;
}
