import { Edge_Id } from "./map";
import { SE3Pose } from "../geometry";
import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "bosdyn.api.graph_nav";
/** Route that the robot should follow or is currently following. */
export interface Route {
    /** Ordered list of waypoints to traverse, starting from index 0. */
    waypointId: string[];
    /** Ordered list of edges to traverse between those waypoints. */
    edgeId: Edge_Id[];
}
/**
 * The localization state of the robot. This reports the pose of the robot relative
 * to a particular waypoint on the graph nav map.
 */
export interface Localization {
    /** Waypoint this localization is relative to. */
    waypointId: string;
    /** Pose of body in waypoint frame. */
    waypointTformBody: SE3Pose | undefined;
    /**
     * Pose of body in a common reference frame. The common reference frame defaults to the starting
     * fiducial frame, but can be changed. See Anchoring for more info.
     */
    seedTformBody: SE3Pose | undefined;
    /** Time (in robot time basis) that this localization was valid. */
    timestamp: Date | undefined;
}
export declare const Route: {
    encode(message: Route, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Route;
    fromJSON(object: any): Route;
    toJSON(message: Route): unknown;
    fromPartial<I extends {
        waypointId?: string[] | undefined;
        edgeId?: {
            fromWaypoint?: string | undefined;
            toWaypoint?: string | undefined;
        }[] | undefined;
    } & {
        waypointId?: (string[] & string[] & { [K in Exclude<keyof I["waypointId"], keyof string[]>]: never; }) | undefined;
        edgeId?: ({
            fromWaypoint?: string | undefined;
            toWaypoint?: string | undefined;
        }[] & ({
            fromWaypoint?: string | undefined;
            toWaypoint?: string | undefined;
        } & {
            fromWaypoint?: string | undefined;
            toWaypoint?: string | undefined;
        } & { [K_1 in Exclude<keyof I["edgeId"][number], keyof Edge_Id>]: never; })[] & { [K_2 in Exclude<keyof I["edgeId"], keyof {
            fromWaypoint?: string | undefined;
            toWaypoint?: string | undefined;
        }[]>]: never; }) | undefined;
    } & { [K_3 in Exclude<keyof I, keyof Route>]: never; }>(object: I): Route;
};
export declare const Localization: {
    encode(message: Localization, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Localization;
    fromJSON(object: any): Localization;
    toJSON(message: Localization): unknown;
    fromPartial<I extends {
        waypointId?: string | undefined;
        waypointTformBody?: {
            position?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } | undefined;
            rotation?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } | undefined;
        } | undefined;
        seedTformBody?: {
            position?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } | undefined;
            rotation?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } | undefined;
        } | undefined;
        timestamp?: Date | undefined;
    } & {
        waypointId?: string | undefined;
        waypointTformBody?: ({
            position?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } | undefined;
            rotation?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } | undefined;
        } & {
            position?: ({
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } & { [K in Exclude<keyof I["waypointTformBody"]["position"], keyof import("../geometry").Vec3>]: never; }) | undefined;
            rotation?: ({
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } & { [K_1 in Exclude<keyof I["waypointTformBody"]["rotation"], keyof import("../geometry").Quaternion>]: never; }) | undefined;
        } & { [K_2 in Exclude<keyof I["waypointTformBody"], keyof SE3Pose>]: never; }) | undefined;
        seedTformBody?: ({
            position?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } | undefined;
            rotation?: {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } | undefined;
        } & {
            position?: ({
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
            } & { [K_3 in Exclude<keyof I["seedTformBody"]["position"], keyof import("../geometry").Vec3>]: never; }) | undefined;
            rotation?: ({
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
                z?: number | undefined;
                w?: number | undefined;
            } & { [K_4 in Exclude<keyof I["seedTformBody"]["rotation"], keyof import("../geometry").Quaternion>]: never; }) | undefined;
        } & { [K_5 in Exclude<keyof I["seedTformBody"], keyof SE3Pose>]: never; }) | undefined;
        timestamp?: Date | undefined;
    } & { [K_6 in Exclude<keyof I, keyof Localization>]: never; }>(object: I): Localization;
};
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export declare type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
declare type KeysOfUnion<T> = T extends T ? keyof T : never;
export declare type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};
export {};
//# sourceMappingURL=nav.d.ts.map