import { NotificationService } from '@alauda/ui';
import { Location } from '@angular/common';
import { Injector, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { Observable } from 'rxjs';
import { InterceptDeactivateService } from '..';
import * as i0 from "@angular/core";
/**
 * http://confluence.alauda.cn/display/FRON/Issue-Angular+related
 * 由于formControl存在内存泄漏问题，内部 form 展示-隐藏切换应当采用 hidden 进行控制
 */
export declare abstract class BaseFormContainer<T = any> implements OnInit {
    isUpdate: boolean;
    initResource: T;
    initResource$: Observable<T>;
    private readonly ngForm;
    codeEditorOptions: import("../../code/code-editor-configs").IEditorConstructionOptions;
    actionsConfig: import("@alauda/code-editor").CodeEditorActionsConfig;
    formView: 'UI' | 'YAML';
    submitting: boolean;
    resource: T;
    yaml: string;
    originalYaml: string;
    fb: UntypedFormBuilder;
    interceptDeactivate: InterceptDeactivateService;
    form: UntypedFormGroup;
    protected notification: NotificationService;
    protected location: Location;
    protected fillResource: (resource: T) => T;
    abstract submit(): void;
    constructor(injector: Injector);
    ngOnInit(): void;
    switchFormView(view: 'YAML' | 'UI'): void;
    cancel(escape?: boolean): void;
    protected checkForm(): boolean;
    protected yamlToResource(yaml: string): T;
    protected resourceToYaml(resource: T): string;
    protected updateResource(resource: T): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormContainer<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFormContainer<any>, never, never, { "isUpdate": "isUpdate"; "initResource": "initResource"; }, {}, never, never, false>;
}
