import { EstablishSessionResponse, TickResponse, StopResponse, TeardownSessionResponse, EstablishSessionRequest, TickRequest, StopRequest, TeardownSessionRequest } from "./remote";
export declare const protobufPackage = "bosdyn.api.mission";
/**
 * Interface for mission callbacks.  Mission RemoteGrpc nodes will act as clients
 * to this service type, calling out to this service when loaded, ticked, or unloaded.
 */
export interface RemoteMissionService {
    /** Call this once at mission load time, once for each node that references this remote service. */
    EstablishSession(request: EstablishSessionRequest): Promise<EstablishSessionResponse>;
    /** Call this every time the RemoteGrpc node is ticked. */
    Tick(request: TickRequest): Promise<TickResponse>;
    /**
     * Call this every time the RemoteGrpc node WAS ticked in the previous cycle, but was NOT ticked
     * in this cycle. Signals that the next tick will be a restart, rather than a continuation.
     */
    Stop(request: StopRequest): Promise<StopResponse>;
    /**
     * Tells the service it can forget any data associated with the given session ID.
     * Should be called once for every EstablishSession call.
     */
    TeardownSession(request: TeardownSessionRequest): Promise<TeardownSessionResponse>;
}
export declare class RemoteMissionServiceClientImpl implements RemoteMissionService {
    private readonly rpc;
    constructor(rpc: Rpc);
    EstablishSession(request: EstablishSessionRequest): Promise<EstablishSessionResponse>;
    Tick(request: TickRequest): Promise<TickResponse>;
    Stop(request: StopRequest): Promise<StopResponse>;
    TeardownSession(request: TeardownSessionRequest): Promise<TeardownSessionResponse>;
}
interface Rpc {
    request(service: string, method: string, data: Uint8Array): Promise<Uint8Array>;
}
export {};
//# sourceMappingURL=remote_service.d.ts.map