import { LoadMissionResponse, PlayMissionResponse, PauseMissionResponse, StopMissionResponse, RestartMissionResponse, GetStateResponse, GetInfoResponse, GetMissionResponse, AnswerQuestionResponse, LoadMissionRequest, PlayMissionRequest, PauseMissionRequest, StopMissionRequest, RestartMissionRequest, GetStateRequest, GetInfoRequest, GetMissionRequest, AnswerQuestionRequest } from "./mission";
import { Observable } from "rxjs";
import { DataChunk } from "../data_chunk";
export declare const protobufPackage = "bosdyn.api.mission";
/** The MissionService can be used to specify high level autonomous behaviors for Spot using behavior trees. */
export interface MissionService {
    /** Load a mission to run later. */
    LoadMission(request: LoadMissionRequest): Promise<LoadMissionResponse>;
    /**
     * Alternative loading method for large missions, that allows you to break the
     * mission up into multiple streamed requests.  The data chunks should deserialize
     * into a LoadMissionRequest
     */
    LoadMissionAsChunks(request: Observable<DataChunk>): Promise<LoadMissionResponse>;
    /**
     * Start executing a loaded mission.
     * Will not restart a mission that has run to completion. Use RestartMission to do that.
     */
    PlayMission(request: PlayMissionRequest): Promise<PlayMissionResponse>;
    /** Pause mission execution. */
    PauseMission(request: PauseMissionRequest): Promise<PauseMissionResponse>;
    /**
     * Stop a running mission.
     * Must use RestartMission, not PlayMission, to begin from the beginning.
     */
    StopMission(request: StopMissionRequest): Promise<StopMissionResponse>;
    /**
     * Start executing a loaded mission from the beginning.
     * Does not need to be called after LoadMission.
     */
    RestartMission(request: RestartMissionRequest): Promise<RestartMissionResponse>;
    /** Get the state of the mission. */
    GetState(request: GetStateRequest): Promise<GetStateResponse>;
    /** Get static information regarding the mission. Used to interpret mission state. */
    GetInfo(request: GetInfoRequest): Promise<GetInfoResponse>;
    /** Download the mission as it was uploaded to the service. */
    GetMission(request: GetMissionRequest): Promise<GetMissionResponse>;
    /** Specify an answer to the question asked by the mission. */
    AnswerQuestion(request: AnswerQuestionRequest): Promise<AnswerQuestionResponse>;
}
export declare class MissionServiceClientImpl implements MissionService {
    private readonly rpc;
    constructor(rpc: Rpc);
    LoadMission(request: LoadMissionRequest): Promise<LoadMissionResponse>;
    LoadMissionAsChunks(request: Observable<DataChunk>): Promise<LoadMissionResponse>;
    PlayMission(request: PlayMissionRequest): Promise<PlayMissionResponse>;
    PauseMission(request: PauseMissionRequest): Promise<PauseMissionResponse>;
    StopMission(request: StopMissionRequest): Promise<StopMissionResponse>;
    RestartMission(request: RestartMissionRequest): Promise<RestartMissionResponse>;
    GetState(request: GetStateRequest): Promise<GetStateResponse>;
    GetInfo(request: GetInfoRequest): Promise<GetInfoResponse>;
    GetMission(request: GetMissionRequest): Promise<GetMissionResponse>;
    AnswerQuestion(request: AnswerQuestionRequest): Promise<AnswerQuestionResponse>;
}
interface Rpc {
    request(service: string, method: string, data: Uint8Array): Promise<Uint8Array>;
    clientStreamingRequest(service: string, method: string, data: Observable<Uint8Array>): Promise<Uint8Array>;
    serverStreamingRequest(service: string, method: string, data: Uint8Array): Observable<Uint8Array>;
    bidirectionalStreamingRequest(service: string, method: string, data: Observable<Uint8Array>): Observable<Uint8Array>;
}
export {};
//# sourceMappingURL=mission_service.d.ts.map