import { ConfigurationItem, HostInfo, ParticipantInfo, PrincipalInfo, TokenInfo } from './context';
export declare enum MessageType {
    READY = "meet-sdk-ready",
    INIT = "meet-sync-init",
    DATA = "meet-message-data",
    PARTICIPANTS = "meet-message-participants",
    MEET_STATE = "meet-state-changed",
    TOOLTIPS = "meet-tooltip-reqest",
    REPOSITION = "meet-float-reposition",
    /**
     * Event message of this type is sent when meet participant user profile change.
     * e.g. Display name, color, theme?
     */
    USER_PROFILE = "meet-userprofile-changed",
    /**
     * Event sent from addon to host requesting to be re-initialized
     * (eg. token addon is using expired)
     */
    INIT_REQUESTED = "meet-init-requested",
    /**
     * Event message of this type os sent when host change the context in which addon
     * exists (theme change, fullscreen state etc)
     */
    HOST_CHANGED = "meet-host-changed",
    /**
     * An event sent to addon when host makes addon active.
     */
    STATE_ACTIVE = "meet-addon-active",
    /**
     * An event sent to addon when addon stops being active by host activating other addon.
     */
    STATE_INACTIVE = "meet-addon-inactive",
    /**
     * An event sent to addon when addon needs to start using new Meet API access token.
     */
    TOKEN_REFRESH = "meet-token-refresh",
    /**
     * An event sent from addon to host informing it that
     * it needs to update icon badge adorment text.
     */
    BADGE_TEXT_UPDATE = "meet-badge-update",
    /**
     * Addon sends this message to host to request from host
     * to hide pr show the host shell UI elements etc so user can focus on addon
     * (e.g. Twilio addon before join can request host to hide app bar so user will not be distracted)
     * (e.g. Twilio addon after user joined the call can request host to show app bar)
     */
    HOST_SHELL_REQUEST = "meet-shell-request",
    /**
     * Host sends this message to addons every time a key down event is detected
    */
    HOST_KEYBOARD_DOWN = "meet-keyboard-down",
    /**
     * Addons send the message to the host requesting its mode to be adjusted
     */
    HOST_ACTIVATION_REQUEST = "meet-host-activate",
    /**
     * Event sent from host to addons requesting them to
     * load a previously saved snapshot for a given
     * snapshot id.
     */
    SNAPSHOT_LOAD_REQUEST = "meet-snapshot-load"
}
export declare enum AddonMode {
    HIDDEN = "hidden",
    MINI = "mini",
    NORMAL = "normal",
    FULLSCREEN = "fullscreen"
}
export declare enum ChromeState {
    TOPBAR = "topbar",
    NORMAL = "normal",
    FULLSCREEN = "fullscreen"
}
export declare enum PredefinedColor {
    DARK_INDIGO = "#303F9F",
    DEEP_ORANGE = "#FF5722",
    DARK_GREEN = "#388E3C",
    DARK_YELLOW = "#FBC02D",
    DEEP_PURPLE = "#512DA8",
    DARK_PINK = "#C2185B",
    DARK_TEAL = "#00796B"
}
export declare enum AppTheme {
    LIGHT = "light",
    DARK = "dark"
}
/**
 * Structure describing signalR specific
 * participant information
 *
 * @export
 * @class ParticipantHubInfo
 */
export declare class ParticipantHubInfo extends ParticipantInfo {
    /**
     * SignalR hub context user identifier.
     * Needed for sending messages to this specific user.
     *
     * @type {string}
     * @memberof ParticipantHubInfo
     */
    userIdentifier: string;
}
/**
 * List of states in which meeting can be
 * during the lifetime of the meeting in which
 * addon is loaded.
 *
 * @export
 * @enum {number}
 */
export declare enum PredefinedMeetingState {
    MEETING_DRAFT = "MeetingDraft",
    MEETING_CREATED = "MeetingCreated",
    MEETING_CANCELED = "MeetingCanceled",
    MEETING_ARCHIVED = "MeetingArchived",
    SCHEDULING_STARTED = "SchedulingStarted",
    SCHEDULING_TIME = "SchedulingTime",
    SCHEDULING_FAILED = "SchedulingFailed",
    SCHEDULING_COMPLETED = "SchedulingCompleted",
    MEETING_STARTED = "MeetingStarted",
    MEETING_FAILED = "MeetingFailed",
    MEETING_STOPPED = "MeetingStopped",
    MEETING_COMPLETED = "MeetingCompleted",
    FEEDBACK_COLLECTING = "FeedbackCollecting",
    FEEDBACK_FAILED = "FeedbackFailed",
    FEEDBACK_COMPLETED = "FeedbackCompleted",
    BILLABLE_STARTED = "BillableStarted",
    BILLABLE_STOPPED = "BillableStopped"
}
export interface Dictionary {
    [key: string]: string;
}
/**
 * SDK addon message sent and received from other addons and/or host
 *
 * @export
 * @class AddonMessage
 */
export declare class AddonMessage {
    constructor(type: MessageType);
    /**
     * Type of message being sent
     *
     * @type {string}
     * @memberof AddonMessage
     */
    type: string;
    /**
     * Event payload containing the data which message receiver will know how to interpret
     * for a given message type.
     *
     * @type {string}
     * @memberof AddonMessage
     */
    payload?: string;
}
/**
 * A message sent from host to addon
 * requesting from addon to perform initialization
 * with given parameters.
 *
 * @export
 * @class InitMessage
 * @extends {AddonMessage}
 */
export declare class InitMessage extends AddonMessage {
    /**
     * Host runtime context defining in privacy protecting way
     * meeting attributes which addon uses to establish its own session.
     *
     * @type {Context}
     * @memberof InitMessage
     */
    principal: PrincipalInfo;
    /**
     * Information about the addon host needed for implementing
     * iframe POST messaging between addon and host
     *
     * @type {HostInfo}
     * @memberof InitMessage
     */
    host: HostInfo;
    /**
     * Gets or sets a collection of zero or more addon runtime settings
     * which addon author defined to be passed to addon.
     * @type {AddonSettings}
     * @memberof InitMessage
     */
    settings: Dictionary;
    /**
     * A set of configuration properties which are to be
     * defined per meeting during the meeting creation
     * and define the
     *
     * @type {ConfigurationValue[]}
     * @memberof InitMessage
     */
    configuration: ConfigurationItem[];
    /**
     * Zero or more participants who are online in the moment of
     * addon initialization defined with addon specific identifiers.
     *
     * @type {ParticipantInfo[]}
     * @memberof InitMessage
     */
    participants: ParticipantInfo[];
    /**
     * Gets ths info about the mode in which addon is
     * requested to be initialized which addon should use
     * to configure its UI
     *
     * @type {AddonMode}
     * @memberof InitMessage
     */
    mode: AddonMode;
    /**
     * Gets or sets the information about the meeting state in the moment
     * of addon initialization.
     *
     * @type {PredefinedMeetingState}
     * @memberof InitMessage
     */
    state: PredefinedMeetingState;
    /**
     * Gets the info about chrome state of the host.
     * @type {ChromeState}
     * @memberof HostChangedMessage
     */
    chromeState: ChromeState;
    /**
  * Creates an instance of InitMessage.
  * @memberof InitMessage
  */
    constructor();
}
/**
 * A message sent from addon to a host when
 * initialization had completed and addon is
 * ready for performing its functionality
 *
 * @export
 * @class ReadyMessage
 * @extends {AddonMessage}
 */
export declare class ReadyMessage extends AddonMessage {
    /**
     * Creates an instance of ReadyMessage.
     * @memberof ReadyMessage
     */
    constructor();
}
/**
 * A message sent from addon to a host when
 * host needs to initialize the addon
 * (e.g. addon token expired and addon needs a new token)
 *
 * @export
 * @class InitRequestMessage
 * @extends {AddonMessage}
 */
export declare class InitRequestMessage extends AddonMessage {
    /**
     * Creates an instance of ReadyMessage.
     * @memberof ReadyMessage
     */
    constructor();
}
/**
 * Event message of this type os sent when host change the context in which addon
* exists (theme change, fullscreen state etc)
 *
 * @export
 * @class HostChangedMessage
 * @extends {AddonMessage}
 */
export declare class HostChangedMessage extends AddonMessage {
    /**
     * Gets ths info about the mode in which addon is
     * requested to be initialized which addon should use
     * to configure its UI
     *
     * @type {AddonMode}
     * @memberof InitMessage
     */
    addonMode: AddonMode;
    /**
     * Gets the info about chrome state of the host.
     * @type {ChromeState}
     * @memberof HostChangedMessage
     */
    chromeState: ChromeState;
    /**
     * Color theme of the addon
     *
     * @type {AppTheme}
     * @memberof HostChangedMessage
     */
    theme: AppTheme;
    /**
   * Creates an instance of HostChangedMessage.
   * @memberof HostChangedMessage
   */
    constructor();
}
/**
 * A messages sent to addon by host when host activates addon.
 *
 * @export
 * @class AddonActivatedMessage
 * @extends {AddonMessage}
 */
export declare class AddonActivatedMessage extends AddonMessage {
    /**
     * Creates an instance of AddonActivatedMessage.
     * @memberof AddonActivatedMessage
     */
    constructor();
    inactiveRoute: string;
}
/**
 * A messages sent to addon by host when host inactivate addon.
 *
 * @export
 * @class AddonInactivatedMessage
 * @extends {AddonMessage}
 */
export declare class AddonInactivatedMessage extends AddonMessage {
    /**
     * Creates an instance of AddonInactivatedMessage.
     * @memberof AddonInactivatedMessage
     */
    constructor();
    activeRoute: string;
}
/**
 * A messages sent to addon by host when there is new access token
 * to be used for accessing Meet API
 *
 * @export
 * @class TokenRefreshMessage

 * @extends {AddonMessage}
 */
export declare class TokenRefreshMessage extends AddonMessage {
    /**
     * Creates an instance of TokenRefreshMessage.
     * @memberof TokenRefreshMessage
     */
    constructor();
    token: TokenInfo;
}
/**
 * A messages sent to addon by host when host inactivate addon.
 *
 * @export
 * @class BadgeUpdateMessage
 * @extends {AddonMessage}
 */
export declare class BadgeUpdateMessage extends AddonMessage {
    /**
     * Creates an instance of BadgeUpdateMessage.
     * @memberof BadgeUpdateMessage
     */
    constructor();
    text: string;
}
export declare type ShellState = 'show' | 'hide';
export declare class HostShellRequestMessage extends AddonMessage {
    /**
     * Creates an instance of HostShellRequestMessage.
     * @memberof HostShellRequestMessage
     */
    constructor();
    /**
     * What is the state of the host addon is  requesting.
     *
     * @type {boolean}
     * @memberof HostShellRequestMessage
     */
    state: ShellState;
}
export declare class KeyDownMessage extends AddonMessage {
    /**
     * Creates an instance of KeyDownMessage.
     * @memberof KeyDownMessage
     */
    constructor();
    altKey: boolean;
    ctrlKey: boolean;
    keyCode: number;
    metaKey: boolean;
    shiftKey: boolean;
    returnValue: boolean;
}
/**
 * Message sent from addon to host requesting to be activated (navigated to focus)
 *
 * @export
 * @class HostActivationRequestMessage
 * @extends {AddonMessage}
 */
export declare class HostActivationRequestMessage extends AddonMessage {
    /**
     * Creates an instance of HostActivationRequestMessage.
     * @memberof HostActivationRequestMessage
     */
    constructor();
}
/**
 * Event sent from host to addons requesting them to
 * load a previously saved snapshot for a given
 * snapshot id.
 *
 * @export
 * @class SnapshotLoadMessage
 * @extends {AddonMessage}
 */
export declare class SnapshotLoadMessage extends AddonMessage {
    /**
     *Creates an instance of SnapshotLoadMessage.
     * @memberof SnapshotLoadMessage
     */
    constructor();
    /**
     * Snapshot identifier addon host should use
     * to intialize addon into the state stored under
     * this snapshot id.
     *
     * @type {string}
     * @memberof SnapshotSaveMessage
     */
    snapshotId: string;
}
