import { EventEmitter, ElementRef } from '@angular/core';
import { FormBuilder } from '@angular/forms';
import { RuleModel, ConditionGroupModel, ActionModel, RuleService } from './services/Rule';
import { I18nService } from './services/system/locale/I18n';
import { UserModel } from 'dotcms-js/dotcms-js';
import { ApiRoot } from 'dotcms-js/dotcms-js';
import { ConditionActionEvent, RuleActionActionEvent, RuleActionEvent, ConditionGroupActionEvent } from './rule-engine.container';
import { ServerSideTypeModel } from './services/ServerSideFieldModel';
import { IPublishEnvironment } from './services/bundle-service';
import { LoggerService } from 'dotcms-js/dotcms-js';
declare class RuleComponent {
    private _user;
    elementRef: ElementRef;
    resources: I18nService;
    ruleService: RuleService;
    apiRoot: ApiRoot;
    private loggerService;
    rule: RuleModel;
    saved: boolean;
    saving: boolean;
    errors: {
        [key: string]: any;
    };
    ruleActions: ActionModel[];
    ruleActionTypes: {
        [key: string]: ServerSideTypeModel;
    };
    conditionTypes: {
        [key: string]: ServerSideTypeModel;
    };
    environmentStores: IPublishEnvironment[];
    hidden: boolean;
    deleteRule: EventEmitter<RuleActionEvent>;
    updateExpandedState: EventEmitter<RuleActionEvent>;
    updateName: EventEmitter<RuleActionEvent>;
    updateEnabledState: EventEmitter<RuleActionEvent>;
    updateFireOn: EventEmitter<RuleActionEvent>;
    createRuleAction: EventEmitter<RuleActionActionEvent>;
    updateRuleActionType: EventEmitter<RuleActionActionEvent>;
    updateRuleActionParameter: EventEmitter<RuleActionActionEvent>;
    deleteRuleAction: EventEmitter<RuleActionActionEvent>;
    updateConditionGroupOperator: EventEmitter<ConditionGroupActionEvent>;
    createConditionGroup: EventEmitter<ConditionGroupActionEvent>;
    createCondition: EventEmitter<ConditionActionEvent>;
    deleteCondition: EventEmitter<ConditionActionEvent>;
    updateConditionType: EventEmitter<ConditionActionEvent>;
    updateConditionParameter: EventEmitter<ConditionActionEvent>;
    updateConditionOperator: EventEmitter<ConditionActionEvent>;
    private _updateEnabledStateDelay;
    private hideFireOn;
    private formModel;
    private fireOn;
    private _rsrcCache;
    private showMoreMenu;
    private showAddToBundleDialog;
    private showPushPublishDialog;
    private actionTypePlaceholder;
    private conditionTypePlaceholder;
    constructor(_user: UserModel, elementRef: ElementRef, resources: I18nService, ruleService: RuleService, apiRoot: ApiRoot, fb: FormBuilder, loggerService: LoggerService);
    initFormModel(fb: FormBuilder): void;
    rsrc(subkey: string, defVal?: string): any;
    ngOnChanges(change: any): void;
    statusText(length?: number): string;
    setRuleExpandedState(expanded: boolean): void;
    setRuleEnabledState(enabled: boolean): void;
    onCreateRuleAction(): void;
    onDeleteCondition(event: ConditionActionEvent, conditionGroup: ConditionGroupModel): void;
    onCreateConditionGroupClicked(): void;
    onCreateCondition(event: ConditionActionEvent): void;
    onUpdateRuleActionType(event: {
        type: string;
        payload: {
            value: string;
            index: number;
        };
    }): void;
    onUpdateRuleActionParameter(event: any): void;
    onDeleteRuleAction(event: {
        type: string;
        payload: {
            value: string;
            index: number;
        };
    }): void;
    onUpdateConditionGroupOperator(event: {
        type: string;
        payload: {
            value: string;
            index: number;
        };
    }, conditionGroup: ConditionGroupModel): void;
    onUpdateConditionType(event: {
        type: string;
        payload: {
            value: string;
            index: number;
        };
    }, conditionGroup: ConditionGroupModel): void;
    onUpdateConditionParameter(event: any, conditionGroup: ConditionGroupModel): void;
    onUpdateConditionOperator(event: any, conditionGroup: ConditionGroupModel): void;
    deleteRuleClicked(event: any): void;
}
export { RuleComponent };
