import { RpcBaseData } from '../rpc-base';
import { RpcRemoteState } from '../rpc-manager';
/**
 * RPC report request name and version.
 */
export declare class RpcReportKey {
    static command: string;
    static version: string;
}
/**
 * Rpc report command data.
 */
export interface RpcReportData {
    /**
     * The relative path to report in the browser url
     */
    path?: string;
    /**
     * The relative path originally requested to open.
     */
    beforeRedirectedPath?: string;
    /**
     * The data to reports to the shell
     */
    selectablePath?: SelectablePath[];
    /**
     * Whether to replace url, useful for absolute redirecting
     */
    replaceUrl?: boolean;
}
/**
 * The interface for the inbound report data with some extra information like remote name and other information
 */
export interface RpcReportDataInternal extends RpcBaseData, RpcReportData {
}
/**
 * Represents each of the items that could be used in a path selector to delve up
 */
export interface SelectablePath {
    /**
     * The string to display for each delve level bar
     */
    label: string;
    /**
     * The path to which this selectable path item will navigate to
     */
    path: string;
}
/**
 * Interface that indicates the status of the RPC remote endpoint
 */
export interface RpcRemoteStatusData {
    /**
     * The status of the remote RPC endpoint
     */
    status: RpcRemoteState;
    /**
     * The sub name of the opened iframe instance.
     */
    subName: string;
    /**
     * The entry point to load the iframe as src.
     */
    entryPoint: string;
}
/**
 * The RPC report Data object that includes the status of the remote RPC endpoint
 * that is the source of the message. This interface is used in the RPC endpoint that is receiving
 * the data. The PRC endpoint sending the data should use RpcReportData instead
 */
export interface RpcReportDataInbound extends RpcReportDataInternal, RpcRemoteStatusData {
}
