import { OnInit } from '@angular/core';
import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';
import { WizardModel } from '../models/wizard-model';
import { FormWizardStepComponent } from './form-wizard-step.component';
import * as i0 from "@angular/core";
/**
 * A base class for reactive form based wizard steps
 */
export declare abstract class ReactiveFormWizardStepComponent<TModel extends WizardModel, TResourceStrings> extends FormWizardStepComponent<TModel, TResourceStrings> implements OnInit {
    /**
     * Injected Reference to Angular FormBuilder
     */
    protected formBuilder: FormBuilder;
    /**
     * A reference to the form control for binding the state of the wizard state
     */
    protected get formControl(): AbstractControl;
    /**
     * form element for our form controls
     */
    form: FormGroup;
    /**
     * Called when the a new form creation is needed. Occurs once during this components lifecycle
     */
    protected abstract buildForm(): FormGroup;
    /**
     * Called when the form value has updated and needs to synchronize the model value
     */
    protected abstract updateFromForm(): void;
    /**
     * Called when the model value has updated and needs to synchronize the form value
     */
    protected abstract updateFromModel(): void;
    /**
     * Implementation of ngOnInit lifecycle OnInit interface.
     */
    ngOnInit(): void;
    /**
     * Called from the wizard when the model changes
     */
    onWizardModelChanged(model: TModel): void;
    /**
     * Called when the form value has changed
     */
    protected onFormValueChanged(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ReactiveFormWizardStepComponent<any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ReactiveFormWizardStepComponent<any, any>, never, never, {}, {}, never, never, false, never>;
}
