import { Subject } from 'rxjs';
import { DeferredData, Rpc } from '../rpc';
import { RpcSubjectServer } from '../rpc-subject-server';
import { RpcShellNavigateHandler } from './rpc-shell-navigate-handler';
import { RpcShellNavigate, RpcShellNavigateResult } from './rpc-shell-navigate-model';
/**
 * Shell navigate subject interface.
 */
export interface RpcShellNavigateSubject extends Subject<DeferredData<RpcShellNavigate, RpcShellNavigateResult>> {
}
/**
 * The class to implement shell navigate with Subject server.
 */
export declare class RpcShellNavigateSubjectServer extends RpcSubjectServer<RpcShellNavigate, RpcShellNavigateResult> implements RpcShellNavigateHandler {
    /**
     * Initializes a new instance of the RpcShellNavigateSubjectServer class.
     */
    constructor(rpc: Rpc);
    /**
     * The handler to respond a request for shell navigate call.
     *
     * @param data The shell navigate object.
     * @return Promise<RpcShellNavigateResult> the promise object of shell navigate result.
     */
    handler(data: RpcShellNavigate): Promise<RpcShellNavigateResult>;
}
