import { MessageBusTopicMediator } from "@omnia/fx";
import { ActionHandler, ActionRegistration, ActionHandlerRegistrationId, ApiPath, GuidValue, IActionHandlerInstance, IActionHandlerInstanceProperties, IActionHandlerSettings, IExtendApiManifestWithConfiguration, IMessageBusTopicPublishSubscriber, MultilingualString } from "@omnia/fx-models";
import { MessageBusExposeOnlySubscription } from "../../core";
export interface IActionHandlerTriggeredRendererComponent {
    actionHandler: ActionHandlerInstance;
}
export interface IActionHandlerEventsApi {
    actionTriggered: IMessageBusTopicPublishSubscriber<ActionHandlerInstance>;
    actionInitialized: IMessageBusTopicPublishSubscriber<ActionHandlerInstance>;
    actionCompleted: IMessageBusTopicPublishSubscriber<ActionHandlerInstance>;
}
export interface IActionApi {
    registrations: Promise<IActionRegistrationApi>;
    handlers: Promise<IActionHandlerRegisterApi>;
}
declare module "@omnia/fx-models/ux/UxApi" {
    interface IOmniaUxApi {
        actions: IActionApi;
    }
    interface IOmniaUxExtendApiManifest {
        actions: {
            registrations: ApiPath;
            handlers: IExtendApiManifestWithConfiguration<ActionHandlerRegistrationId>;
        };
    }
}
export interface IActionHandlerRegisterApi {
    register: (action: ActionHandlerRegistration) => void;
    getActionHandler: (id: ActionHandlerRegistrationId) => Promise<new () => ActionHandlerBase>;
}
export interface IActionRegistrationApi {
    registerActionHandler: (action: ActionRegistration | ActionRegistration[]) => void;
    getAllHandlers: () => ActionRegistration[];
}
export declare abstract class ActionHandlerBase<TSettings extends IActionHandlerSettings = IActionHandlerSettings> implements IActionHandlerInstanceProperties<TSettings> {
    abstract onActivated(): void | Promise<void>;
    abstract onTriggered(renderingCallback: (elementName: string, themeTargetId?: string, domProps?: Object) => void, setFocusedElementCallback?: () => Promise<HTMLElement>): any;
    abstract onDisposing(): any;
    customTextColor?(settings: IActionHandlerSettings): string;
    customBackgroundColor?(settings: IActionHandlerSettings): string;
    constructor();
    id: GuidValue;
    typeId: ActionHandlerRegistrationId;
    toolTip: MultilingualString;
    settings: IActionHandlerSettings;
    loading: boolean;
    disabled: boolean;
    displayText: MultilingualString;
    text: MultilingualString;
    customRendererElementName: string;
    hidden: boolean;
    isTriggered: boolean;
    onChanged: MessageBusTopicMediator<{
        propertyName: string;
        newValue: any;
        oldValue: any;
    }>;
    private _reactiveProps;
    protected createReactiveProperty(propName: string, value: any): void;
    private configProxy;
}
export declare class ActionHandlerRegistration {
    typeId: ActionHandlerRegistrationId;
    handler: new () => ActionHandlerBase;
    constructor(typeId: ActionHandlerRegistrationId, handler: new () => ActionHandlerBase);
}
export declare class ActionHandlerContext {
    private serviceContainerContext;
    createInstance<T extends ActionHandlerInstance = ActionHandlerInstance>(actionHandler: ActionHandler): Promise<T>;
}
export declare class ActionHandlerInstance implements IActionHandlerInstance {
    private instance;
    private actionHandlerStore;
    constructor(instance: ActionHandlerBase, actionHandler: ActionHandler);
    id: GuidValue;
    typeId: ActionHandlerRegistrationId;
    toolTip: MultilingualString;
    settings: IActionHandlerSettings;
    loading: boolean;
    disabled: boolean;
    displayText: MultilingualString;
    text: MultilingualString;
    customRendererElementName: string;
    hidden: boolean;
    isTriggered: boolean;
    private _initializedMessage;
    private _triggeredMessage;
    private _disposedMessage;
    private _initialized;
    initialized(): void | Promise<void>;
    triggered(renderingCallback: (elementName: string, themeTargetId?: string, domProps?: Object) => void, setFocusedElementCallback?: () => Promise<HTMLElement>): void;
    customTextColor(): string;
    customBackgroundColor(): string;
    dispose(): void;
    onActivated(): MessageBusExposeOnlySubscription<void>;
    onTriggered(): MessageBusExposeOnlySubscription<void>;
    onDisposed(): MessageBusExposeOnlySubscription<void>;
    onChanged(): MessageBusExposeOnlySubscription<{
        propertyName: string;
        newValue: any;
        oldValue: any;
    }>;
    private configProxy;
}
