import { RulesEngineAction, RulesEngineActionHandler } from '@o3r/core';
import { Subject } from 'rxjs';
import * as i2 from '@o3r/components';
import { PlaceholderRequestReply } from '@o3r/components';
import * as i0 from '@angular/core';
import * as i1 from '@ngrx/effects';

/** ActionUpdatePlaceholderBlock  */
declare const RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE = "UPDATE_PLACEHOLDER";
/**
 * Content of action that updates a placeholder
 */
interface ActionUpdatePlaceholderBlock extends RulesEngineAction {
    actionType: typeof RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE;
    placeholderId: string;
    value: string;
    priority?: number;
}

/**
 * Service to handle async PlaceholderTemplate actions
 */
declare class PlaceholderRulesEngineActionHandler implements RulesEngineActionHandler<ActionUpdatePlaceholderBlock> {
    private readonly logger;
    private readonly injector;
    protected placeholdersActions$: Subject<{
        placeholderId: string;
        templateUrl: string;
        priority: number;
    }[]>;
    /** @inheritdoc */
    readonly supportingActions: readonly ["UPDATE_PLACEHOLDER"];
    constructor();
    /**
     * Localize the url, replacing the language marker
     * @param url
     * @param language
     */
    protected resolveUrlWithLang(url: string, language: string | null): string;
    /**
     * Retrieve template as json from a given url
     * @param url
     */
    protected retrieveTemplate(url: string): Promise<PlaceholderRequestReply>;
    /** @inheritdoc */
    executeActions(actions: ActionUpdatePlaceholderBlock[]): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PlaceholderRulesEngineActionHandler, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PlaceholderRulesEngineActionHandler>;
}

declare class PlaceholderRulesEngineActionModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PlaceholderRulesEngineActionModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PlaceholderRulesEngineActionModule, never, [typeof i1.EffectsFeatureModule, typeof i2.PlaceholderRequestStoreModule, typeof i2.PlaceholderTemplateStoreModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PlaceholderRulesEngineActionModule>;
}

export { PlaceholderRulesEngineActionHandler, PlaceholderRulesEngineActionModule, RULES_ENGINE_PLACEHOLDER_UPDATE_ACTION_TYPE };
export type { ActionUpdatePlaceholderBlock };
//# sourceMappingURL=o3r-components-rules-engine.d.ts.map
