import { MonacoLanguageService } from '@alauda/code-editor';
import { EventEmitter, OnDestroy, AfterViewInit } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { BehaviorSubject, Observable } from 'rxjs';
import { KubernetesSchemaService } from '../../core/services/kubernetes-schema.service';
import { YamlUtilService } from '../../core/services/yaml-util.service';
import { Arrayable } from '../../core/types/helpers';
import { KubernetesResource, OpenAPIV3SchemaObject } from '../../core/types/public-api';
import { EditorInstanceProvider } from '../managed-fields-folder.util';
import { YamlExample } from '../yaml-sidebar/types';
import * as i0 from "@angular/core";
export declare class ResourceYamlEditorComponent<T extends KubernetesResource> implements ControlValueAccessor, OnDestroy, EditorInstanceProvider, AfterViewInit {
    readonly yamlUtil: YamlUtilService;
    readonly schemaService: KubernetesSchemaService;
    private readonly monacoLanguageService;
    private destroy$;
    private _value;
    private _originalValue;
    private onChange;
    private onTouched;
    showSidebar$$: BehaviorSubject<boolean>;
    showDebugPanel$$: BehaviorSubject<boolean>;
    modelUri: string;
    private yamlSchemaService;
    private monacoEditor;
    private registeredSchemas;
    private codeEditorRef;
    hasWrapper: boolean;
    showDebugInfo: boolean;
    sidebarEnable: boolean;
    schema: OpenAPIV3SchemaObject;
    schemaEnable: boolean;
    exampleEnable: boolean;
    resource: Arrayable<T>;
    autoFoldManagedFields: boolean;
    set originalValue(value: string);
    get originalValue(): string;
    options: import("../code-editor-configs").IEditorConstructionOptions;
    actionsConfig: import("@alauda/code-editor").CodeEditorActionsConfig;
    tryYaml: EventEmitter<string>;
    readonly resource$: Observable<Arrayable<T>>;
    readonly schema$: Observable<OpenAPIV3SchemaObject>;
    autoFillNamespace: boolean;
    extraExamples: YamlExample[];
    hasFolded: boolean;
    /**
     * 自动获取的 schema，当没有手动提供 schema 时使用
     */
    autoSchema$: Observable<OpenAPIV3SchemaObject>;
    /**
     * 最终使用的 schema，优先使用手动提供的，否则使用自动获取的
     */
    finalSchema$: Observable<OpenAPIV3SchemaObject>;
    constructor(yamlUtil: YamlUtilService, schemaService: KubernetesSchemaService, monacoLanguageService: MonacoLanguageService);
    ngAfterViewInit(): void;
    selfFoldManagedFields(): void;
    get value(): string;
    set value(val: string);
    writeValue(value: string): void;
    registerOnChange(fn: (value: string) => void): void;
    registerOnTouched(fn: () => void): void;
    toggleSidebar(): void;
    toggleDebugInfo(): void;
    getCurrentResource(): T | null;
    getCurrentSchema(): OpenAPIV3SchemaObject | null;
    getDebugInfo(): {
        hasResource: boolean;
        resourceApiVersion: string;
        resourceKind: string;
        hasManualSchema: boolean;
        workspaceHelperAvailable: boolean;
        currentWorkspace: Readonly<{
            project: string;
            cluster: string;
            namespace: string;
        }>;
    };
    onTryYaml(yamlContent: string): void;
    /**
     * 设置 YAML schema 以提供 hover 提示和自动完成
     */
    setYamlSchema(resource: T, schema: OpenAPIV3SchemaObject): void;
    /**
     * 获取 Monaco 编辑器实例
     */
    getEditorInstance(): import('monaco-editor/esm/vs/editor/editor.api').editor.IStandaloneCodeEditor | null;
    /**
     * 手动折叠 managedFields
     */
    foldManagedFields(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ResourceYamlEditorComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ResourceYamlEditorComponent<any>, "acl-resource-yaml-editor", never, { "hasWrapper": { "alias": "hasWrapper"; "required": false; }; "showDebugInfo": { "alias": "showDebugInfo"; "required": false; }; "sidebarEnable": { "alias": "sidebarEnable"; "required": false; }; "schema": { "alias": "schema"; "required": false; }; "schemaEnable": { "alias": "schemaEnable"; "required": false; }; "exampleEnable": { "alias": "exampleEnable"; "required": false; }; "resource": { "alias": "resource"; "required": false; }; "autoFoldManagedFields": { "alias": "autoFoldManagedFields"; "required": false; }; "originalValue": { "alias": "originalValue"; "required": false; }; "options": { "alias": "options"; "required": false; }; "actionsConfig": { "alias": "actionsConfig"; "required": false; }; "autoFillNamespace": { "alias": "autoFillNamespace"; "required": false; }; "extraExamples": { "alias": "extraExamples"; "required": false; }; }, { "tryYaml": "tryYaml"; }, never, never, true, never>;
}
