import { Vec2, SE3Pose } from "../geometry";
import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "bosdyn.api.spot_cam";
export interface Camera {
    /** Identifier for the camera. */
    name: string;
    /** Resolution of the sensor, where x = width and y = height. */
    resolution: Vec2 | undefined;
    /**
     * The frame name for the parent frame of this camera. This frame will show up in the FrameTreeSnapshot
     * grabbed from the payload registration service.
     */
    baseFrameName: string;
    /**
     * 'base_tfrom_sensor' defines the transform from the specific camera to the named base from.
     * This is deprecated in favor of 'base_tform_sensor' which follows the intended naming convention
     * and FrameTree directionality convention of the Spot system as defined in geometry.proto.
     *
     * @deprecated
     */
    baseTfromSensor: SE3Pose | undefined;
    /** The transform from the named base frame to this specific camera */
    baseTformSensor: SE3Pose | undefined;
    /** Physical cameras */
    pinhole: Camera_PinholeIntrinsics | undefined;
    /** Only synthetic spherical panoramas */
    spherical: Camera_SphericalLimits | undefined;
}
export interface Camera_PinholeIntrinsics {
    /** Focal_length in pixels */
    focalLength: Vec2 | undefined;
    /** Center point in pixels */
    centerPoint: Vec2 | undefined;
    /**
     * The following 4 parameters are radial distortion coefficeints to 4 orders.
     * See: https://en.wikipedia.org/wiki/Distortion_(optics)#Software_correction
     * If all 4 of these values are 0, do not apply any correction.
     */
    k1: number;
    k2: number;
    k3: number;
    k4: number;
}
/**
 * Spherical limits are the minimum and maximum angle of the image.
 * IE the upper left pixel is at min_angle.x, min_angle.y
 * and the lower right pixel is at max_angle.x, max_angle.y
 * for a full-FOV image this will be (-180, 90) and (180, -90)
 */
export interface Camera_SphericalLimits {
    minAngle: Vec2 | undefined;
    maxAngle: Vec2 | undefined;
}
export declare const Camera: {
    encode(message: Camera, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Camera;
    fromJSON(object: any): Camera;
    toJSON(message: Camera): unknown;
    fromPartial<I extends {
        name?: string | undefined;
        resolution?: {
            x?: number | undefined;
            y?: number | undefined;
        } | undefined;
        baseFrameName?: string | undefined;
        baseTfromSensor?: {
            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;
        baseTformSensor?: {
            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;
        pinhole?: {
            focalLength?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
            centerPoint?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
            k1?: number | undefined;
            k2?: number | undefined;
            k3?: number | undefined;
            k4?: number | undefined;
        } | undefined;
        spherical?: {
            minAngle?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
            maxAngle?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
        } | undefined;
    } & {
        name?: string | undefined;
        resolution?: ({
            x?: number | undefined;
            y?: number | undefined;
        } & {
            x?: number | undefined;
            y?: number | undefined;
        } & { [K in Exclude<keyof I["resolution"], keyof Vec2>]: never; }) | undefined;
        baseFrameName?: string | undefined;
        baseTfromSensor?: ({
            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_1 in Exclude<keyof I["baseTfromSensor"]["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_2 in Exclude<keyof I["baseTfromSensor"]["rotation"], keyof import("../geometry").Quaternion>]: never; }) | undefined;
        } & { [K_3 in Exclude<keyof I["baseTfromSensor"], keyof SE3Pose>]: never; }) | undefined;
        baseTformSensor?: ({
            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_4 in Exclude<keyof I["baseTformSensor"]["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_5 in Exclude<keyof I["baseTformSensor"]["rotation"], keyof import("../geometry").Quaternion>]: never; }) | undefined;
        } & { [K_6 in Exclude<keyof I["baseTformSensor"], keyof SE3Pose>]: never; }) | undefined;
        pinhole?: ({
            focalLength?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
            centerPoint?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
            k1?: number | undefined;
            k2?: number | undefined;
            k3?: number | undefined;
            k4?: number | undefined;
        } & {
            focalLength?: ({
                x?: number | undefined;
                y?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
            } & { [K_7 in Exclude<keyof I["pinhole"]["focalLength"], keyof Vec2>]: never; }) | undefined;
            centerPoint?: ({
                x?: number | undefined;
                y?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
            } & { [K_8 in Exclude<keyof I["pinhole"]["centerPoint"], keyof Vec2>]: never; }) | undefined;
            k1?: number | undefined;
            k2?: number | undefined;
            k3?: number | undefined;
            k4?: number | undefined;
        } & { [K_9 in Exclude<keyof I["pinhole"], keyof Camera_PinholeIntrinsics>]: never; }) | undefined;
        spherical?: ({
            minAngle?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
            maxAngle?: {
                x?: number | undefined;
                y?: number | undefined;
            } | undefined;
        } & {
            minAngle?: ({
                x?: number | undefined;
                y?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
            } & { [K_10 in Exclude<keyof I["spherical"]["minAngle"], keyof Vec2>]: never; }) | undefined;
            maxAngle?: ({
                x?: number | undefined;
                y?: number | undefined;
            } & {
                x?: number | undefined;
                y?: number | undefined;
            } & { [K_11 in Exclude<keyof I["spherical"]["maxAngle"], keyof Vec2>]: never; }) | undefined;
        } & { [K_12 in Exclude<keyof I["spherical"], keyof Camera_SphericalLimits>]: never; }) | undefined;
    } & { [K_13 in Exclude<keyof I, keyof Camera>]: never; }>(object: I): Camera;
};
export declare const Camera_PinholeIntrinsics: {
    encode(message: Camera_PinholeIntrinsics, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Camera_PinholeIntrinsics;
    fromJSON(object: any): Camera_PinholeIntrinsics;
    toJSON(message: Camera_PinholeIntrinsics): unknown;
    fromPartial<I extends {
        focalLength?: {
            x?: number | undefined;
            y?: number | undefined;
        } | undefined;
        centerPoint?: {
            x?: number | undefined;
            y?: number | undefined;
        } | undefined;
        k1?: number | undefined;
        k2?: number | undefined;
        k3?: number | undefined;
        k4?: number | undefined;
    } & {
        focalLength?: ({
            x?: number | undefined;
            y?: number | undefined;
        } & {
            x?: number | undefined;
            y?: number | undefined;
        } & { [K in Exclude<keyof I["focalLength"], keyof Vec2>]: never; }) | undefined;
        centerPoint?: ({
            x?: number | undefined;
            y?: number | undefined;
        } & {
            x?: number | undefined;
            y?: number | undefined;
        } & { [K_1 in Exclude<keyof I["centerPoint"], keyof Vec2>]: never; }) | undefined;
        k1?: number | undefined;
        k2?: number | undefined;
        k3?: number | undefined;
        k4?: number | undefined;
    } & { [K_2 in Exclude<keyof I, keyof Camera_PinholeIntrinsics>]: never; }>(object: I): Camera_PinholeIntrinsics;
};
export declare const Camera_SphericalLimits: {
    encode(message: Camera_SphericalLimits, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Camera_SphericalLimits;
    fromJSON(object: any): Camera_SphericalLimits;
    toJSON(message: Camera_SphericalLimits): unknown;
    fromPartial<I extends {
        minAngle?: {
            x?: number | undefined;
            y?: number | undefined;
        } | undefined;
        maxAngle?: {
            x?: number | undefined;
            y?: number | undefined;
        } | undefined;
    } & {
        minAngle?: ({
            x?: number | undefined;
            y?: number | undefined;
        } & {
            x?: number | undefined;
            y?: number | undefined;
        } & { [K in Exclude<keyof I["minAngle"], keyof Vec2>]: never; }) | undefined;
        maxAngle?: ({
            x?: number | undefined;
            y?: number | undefined;
        } & {
            x?: number | undefined;
            y?: number | undefined;
        } & { [K_1 in Exclude<keyof I["maxAngle"], keyof Vec2>]: never; }) | undefined;
    } & { [K_2 in Exclude<keyof I, keyof Camera_SphericalLimits>]: never; }>(object: I): Camera_SphericalLimits;
};
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=camera.d.ts.map