import { RpcBaseData } from '../rpc-base';
/**
 * RPC dialog request name and version.
 */
export declare class RpcDialogKey {
    static command: string;
    static version: string;
}
/**
 * The RPC dialog type.
 */
export declare enum RpcDialogType {
    /**
     * Open the confirmation dialog.
     */
    OpenConfirmationDialog = 1,
    /**
     * Open the confirmation list dialog.
     */
    OpenConfirmationListDialog = 2,
    /**
     * Open the message dialog.
     */
    OpenMessageDialog = 3,
    /**
     * Open the choice dialog.
     */
    OpenChoiceDialog = 6,
    /**
     * Open the register AAD dialog.
     */
    OpenRegisterAadDialog = 7,
    /**
     * Close the dialog.
     */
    Close = 4,
    /**
     * Polling the status of the dialog.
     */
    PollingStatus = 5
}
/**
 * The RPC dialog state.
 */
export declare enum RpcDialogState {
    /**
     * The dialog is opened.
     */
    Opened = 1,
    /**
     * The dialog is closed.
     */
    Closed = 2,
    /**
     * The dialog is terminated by shell or rpc request.
     */
    ForcedTerminated = 3,
    /**
     * The dialog is failed.
     */
    Failed = 4
}
/**
 * The RPC confirmation dialog request.
 */
export interface RpcDialogConfirmationRequest {
    /**
     * The text for the dialog cancel button.
     */
    cancelButtonText: string;
    /**
     * The text for the dialog checkbox.
     */
    checkboxText?: string;
    /**
     * The text for the doubleCheck checkbox
     */
    doubleCheckText?: string;
    /**
     * The text for the dialog confirm button.
     */
    confirmButtonText: string;
    /**
     * The message of the dialog body.
     */
    message: string;
    /**
     * The title of the dialog.
     */
    title: string;
    /**
     * (Optional) The link to open referenced information on new tab.
     */
    externalLink?: RpcDialogMessageLink;
    /**
     * The alert of the dialog.
     */
    alert?: RpcAlert;
    /**
     * The alertButtonStyle of the dialog.
     */
    alertButtonStyle?: RpcAlertSeverity;
}
/**
 * The RPC confirmation list dialog request.
 */
export interface RpcDialogConfirmationListRequest {
    /**
     * The cancel button text.
     */
    cancelButtonText: string;
    /**
     * The checkbox text.
     */
    checkboxText?: string;
    /**
     * The confirmation button text.
     */
    confirmButtonText: string;
    /**
     * The list footer text.
     */
    listFooterText: string;
    /**
     * The list of data.
     */
    list: string[];
    /**
     * The list header text.
     */
    listHeaderText: string;
    /**
     * The title text.
     */
    title: string;
}
/**
 * The RPC choice dialog request.
 */
export interface RpcDialogChoiceRequest {
    /**
     * The text for the dialog cancel button.
     */
    cancelButtonText: string;
    /**
     * The choices of the
     */
    choices: {
        name: string;
        value: any;
    }[];
    /**
     * The text for the dialog confirm button.
     */
    confirmButtonText: string;
    /**
     * The text at the bottom of the dialog content.
     */
    footnote: string;
    /**
     * The message of the dialog body.
     */
    message: string;
    /**
     * The title of the dialog.
     */
    title: string;
}
/**
 * The RPC message dialog link.
 */
export interface RpcDialogMessageLink {
    /**
     * The link title.
     */
    title: string;
    /**
     * The link url.
     */
    url: string;
}
/**
 * The RPC message dialog request.
 */
export interface RpcDialogMessageRequest {
    /**
     * (Optional) The button text of the dialog.
     */
    buttonText?: string;
    /**
     * The message of the dialog body.
     */
    message: string;
    /**
     * The title of the dialog.
     */
    title: string;
    /**
     * (Optional) The link to open referenced information on new tab.
     */
    externalLink?: RpcDialogMessageLink;
    /**
     * (Optional) The text of the checkbox.
     */
    checkboxText?: string;
}
/**
 * The RPC confirmation dialog response.
 */
export interface RpcDialogConfirmationResponse {
    /**
     * The result of the dialog confirmation.
     */
    confirmed: boolean;
    /**
     * The result of the dialog checkbox.
     */
    checkboxResult?: boolean;
}
/**
 * The RPC message dialog response.
 */
export interface RpcDialogMessageResponse {
    /**
     * The result of the dialog checkbox.
     */
    checkboxResult?: boolean;
}
/**
 * The RPC choice dialog response.
 */
export interface RpcDialogChoiceResponse {
    /**
     * The result of the dialog confirmation.
     */
    confirmed: boolean;
    /**
     * The result of the dialog checkbox.
     */
    choice: {
        name: string;
        value: any;
    };
}
/**
 * The RPC dialog request data.
 */
export interface RpcDialogData extends RpcBaseData {
    /**
     * The identification of dialog.
     */
    dialogId: string;
    /**
     * The type of RPC dialog request.
     */
    type: RpcDialogType;
    /**
     * The request of RPC dialog.
     */
    request?: RpcDialogConfirmationRequest | RpcDialogConfirmationListRequest | RpcDialogMessageRequest | RpcDialogChoiceRequest;
}
/**
 * The RPC dialog response.
 */
export interface RpcDialogResult {
    /**
     * The identification of dialog.
     */
    dialogId: string;
    /**
     * The type of RPC dialog.
     */
    type: RpcDialogType;
    /**
     * The state of RPC dialog.
     */
    state: RpcDialogState;
    /**
     * The response of RPC dialog.
     */
    response?: RpcDialogConfirmationResponse | RpcDialogMessageResponse | RpcDialogChoiceResponse;
    /**
     * The time opened.
     */
    openedTime?: number;
    /**
     * The time closed.
     */
    closedTime?: number;
    /**
     * The failed error message.
     */
    failedMessage?: string;
}
/**
 * The levels of severity of a RPC alert.
 */
export declare enum RpcAlertSeverity {
    Informational = 0,
    Warning = 1,
    Error = 2
}
/**
 * Defines a RPC Alert object used with Confirmation Dialog
 */
export interface RpcAlert {
    message?: string;
    severity?: RpcAlertSeverity;
}
