import { GuidValue } from "../shared";
import { MultilingualString } from "./MultilingualString";
export declare abstract class ActionHandlerRegistrationId {
    private value;
    static create(id: GuidValue): ActionHandlerRegistrationId;
    abstract toString(): string;
}
export declare abstract class ActionHandlerManifestId {
    private value;
    static create(id: GuidValue): ActionHandlerManifestId;
    abstract toString(): string;
}
export interface ActionRegistration {
    id: ActionHandlerRegistrationId;
    title: string;
    settingsElementName?: string;
    hideInLimitedMode?: boolean;
}
export interface IActionHandlerSettingsComponent {
    actionHandler: ActionHandler;
    updateActionHandler: () => void;
}
export interface IActionHandlerCustomRendererComponent {
    actionHandler: ActionHandler;
    renderingMode: ActionHandlerRenderingModes;
}
export interface IActionHandlerSettings {
}
export declare enum ActionHandlerRenderingModes {
    Icon = 0,
    Button = 1,
    ListItem = 2,
    ListItemWithoutIcon = 3,
    ListItemWithoutText = 4
}
export interface ActionHandler {
    id: GuidValue;
    typeId: ActionHandlerRegistrationId;
    text: MultilingualString;
    toolTip: MultilingualString;
    settings?: IActionHandlerSettings;
    /**
     * client-side, these properties will not be stored on server-side (i.e. not included in server-side model)
     **/
    loading?: boolean;
    hidden?: boolean;
    disabled?: boolean;
    displayText: MultilingualString;
    customRendererElementName?: string;
}
export interface ActionInitializeMessage {
    actionHandler: ActionHandler;
}
export interface ActionTriggeredMessage {
    actionHandler: ActionHandler;
    renderingCallback: (elementName: string, actionHandler: ActionHandler, themeTargetId?: string) => void;
}
export interface ActionHandledCompleteMessage {
    actionHandler: ActionHandler;
}
export interface IActionHandlerInstanceProperties<TSettings extends IActionHandlerSettings = IActionHandlerSettings> {
    id: GuidValue;
    typeId: ActionHandlerRegistrationId;
    toolTip: MultilingualString;
    settings: IActionHandlerSettings;
    loading: boolean;
    disabled: boolean;
    displayText: MultilingualString;
    text: MultilingualString;
    customRendererElementName: string;
    hidden: boolean;
    isTriggered: boolean;
}
export interface IActionHandlerInstance extends IActionHandlerInstanceProperties {
    initialized(): void | Promise<void>;
    triggered(renderingCallback: (elementName: string, themeTargetId?: string, domProps?: Object) => void, setFocusedElementCallback?: () => Promise<HTMLElement>): any;
    dispose(): void;
}
