import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
import { Message, proto3 } from "@bufbuild/protobuf";
import { Pose, PoseInFrame, Vector3 } from "../../common/v1/common_pb";
import { Metadata } from "./metadata_pb";
/**
 * Arrows represents a set of arrows in 3D space
 * Metadata:
 * - colors: []uint8 of a single color: [r, g, b, a]
 *   or a color per arrow: [r, g, b, a, ...]
 *   defaults to [0, 255, 0, 180] (green)
 *
 * @generated from message draw.v1.Arrows
 */
export declare class Arrows extends Message<Arrows> {
    /**
     * The poses of the arrows
     * float32 array of poses: [x, y, z, ox, oy, oz]
     *
     * @generated from field: bytes poses = 1;
     */
    poses: Uint8Array<ArrayBuffer>;
    constructor(data?: PartialMessage<Arrows>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Arrows";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Arrows;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Arrows;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Arrows;
    static equals(a: Arrows | PlainMessage<Arrows> | undefined, b: Arrows | PlainMessage<Arrows> | undefined): boolean;
}
/**
 * Line represents a line in 3D space
 * Metadata:
 * - colors: []uint8 of a single color: [r, g, b, a]
 *   or two colors for lines and points: [r, g, b, a, r, g, b, a]
 *   defaults to [0, 128, 255, 180] (blue) for lines, [0, 77, 204, 180] (darker blue) for points
 *
 * @generated from message draw.v1.Line
 */
export declare class Line extends Message<Line> {
    /**
     * The positions of the line points
     * float32 array of positions: [x, y, z, ...]
     *
     * @generated from field: bytes positions = 1;
     */
    positions: Uint8Array<ArrayBuffer>;
    /**
     * optional width of the line in millimeters, defaults to 5
     *
     * @generated from field: optional float line_width = 2;
     */
    lineWidth?: number;
    /**
     * optional size of the points in millimeters, defaults to 10
     *
     * @generated from field: optional float point_size = 3;
     */
    pointSize?: number;
    constructor(data?: PartialMessage<Line>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Line";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Line;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Line;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Line;
    static equals(a: Line | PlainMessage<Line> | undefined, b: Line | PlainMessage<Line> | undefined): boolean;
}
/**
 * Points represents a set of points in 3D space
 * Metadata:
 * - colors: []uint8 of a single color: [r, g, b, a]
 *   or a color per point: [r, g, b, a, ...]
 *   defaults to [51, 51, 51, 180] (gray)
 *
 * @generated from message draw.v1.Points
 */
export declare class Points extends Message<Points> {
    /**
     * The positions of the points
     * float32 array of positions: [x, y, z, ...]
     *
     * @generated from field: bytes positions = 1;
     */
    positions: Uint8Array<ArrayBuffer>;
    /**
     * Size of the points in millimeters, defaults to 10
     *
     * @generated from field: optional float point_size = 2;
     */
    pointSize?: number;
    constructor(data?: PartialMessage<Points>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Points";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Points;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Points;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Points;
    static equals(a: Points | PlainMessage<Points> | undefined, b: Points | PlainMessage<Points> | undefined): boolean;
}
/**
 * ModelAsset represents the type of model
 *
 * @generated from message draw.v1.ModelAsset
 */
export declare class ModelAsset extends Message<ModelAsset> {
    /**
     * The mime type of the model asset
     *
     * @generated from field: string mime_type = 1;
     */
    mimeType: string;
    /**
     * Expected file size in bytes (helpful for progress tracking)
     *
     * @generated from field: optional uint64 size_bytes = 2;
     */
    sizeBytes?: bigint;
    /**
     * The content of the model asset
     *
     * @generated from oneof draw.v1.ModelAsset.content
     */
    content: {
        /**
         * The url of the model asset
         *
         * @generated from field: string url = 3;
         */
        value: string;
        case: "url";
    } | {
        /**
         * The binary data of the model asset
         *
         * @generated from field: bytes data = 4;
         */
        value: Uint8Array;
        case: "data";
    } | {
        case: undefined;
        value?: undefined;
    };
    constructor(data?: PartialMessage<ModelAsset>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.ModelAsset";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ModelAsset;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ModelAsset;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ModelAsset;
    static equals(a: ModelAsset | PlainMessage<ModelAsset> | undefined, b: ModelAsset | PlainMessage<ModelAsset> | undefined): boolean;
}
/**
 * Model represents a 3D model in various formats
 * Metadata:
 * - colors: []uint8 of no colors
 *
 * @generated from message draw.v1.Model
 */
export declare class Model extends Message<Model> {
    /**
     * The list of assets that make up the model
     *
     * @generated from field: repeated draw.v1.ModelAsset assets = 1;
     */
    assets: ModelAsset[];
    /**
     * Uniform scale factor, defaults to [1.0, 1.0, 1.0]
     *
     * @generated from field: optional viam.common.v1.Vector3 scale = 2;
     */
    scale?: Vector3;
    /**
     * Name of the animation to play, defaults to empty string (no animation)
     *
     * @generated from field: optional string animation_name = 3;
     */
    animationName?: string;
    constructor(data?: PartialMessage<Model>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Model";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Model;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Model;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Model;
    static equals(a: Model | PlainMessage<Model> | undefined, b: Model | PlainMessage<Model> | undefined): boolean;
}
/**
 * Nurbs represents a NURBS curve in 3D space
 * Metadata:
 * - colors: []uint8 of a single color: [r, g, b, a]
 *   defaults to [0, 255, 255, 180] (cyan)
 *
 * @generated from message draw.v1.Nurbs
 */
export declare class Nurbs extends Message<Nurbs> {
    /**
     * The control points of the NURBS
     * []float32 of poses: [x, y, z, ox, oy, oz, theta, ...]
     *
     * @generated from field: bytes control_points = 1;
     */
    controlPoints: Uint8Array<ArrayBuffer>;
    /**
     * The knots of the NURBS
     * float32 array of knots: [knot, ...]
     *
     * @generated from field: bytes knots = 2;
     */
    knots: Uint8Array<ArrayBuffer>;
    /**
     * The degree of the NURBS, defaults to 3
     *
     * @generated from field: optional int32 degree = 3;
     */
    degree?: number;
    /**
     * The weights of the NURBS, defaults to [1, 1, 1, ...]
     * float32 array of weights: [weight, ...]
     *
     * @generated from field: optional bytes weights = 4;
     */
    weights?: Uint8Array;
    /**
     * optional width of the line in millimeters, defaults to 5
     *
     * @generated from field: optional float line_width = 5;
     */
    lineWidth?: number;
    constructor(data?: PartialMessage<Nurbs>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Nurbs";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Nurbs;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Nurbs;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Nurbs;
    static equals(a: Nurbs | PlainMessage<Nurbs> | undefined, b: Nurbs | PlainMessage<Nurbs> | undefined): boolean;
}
/**
 * @generated from message draw.v1.Shape
 */
export declare class Shape extends Message<Shape> {
    /**
     * The center of the shape
     *
     * @generated from field: viam.common.v1.Pose center = 1;
     */
    center?: Pose;
    /**
     * The label of the shape
     *
     * @generated from field: string label = 2;
     */
    label: string;
    /**
     * The type of the shape
     *
     * @generated from oneof draw.v1.Shape.geometry_type
     */
    geometryType: {
        /**
         * @generated from field: draw.v1.Arrows arrows = 3;
         */
        value: Arrows;
        case: "arrows";
    } | {
        /**
         * @generated from field: draw.v1.Line line = 4;
         */
        value: Line;
        case: "line";
    } | {
        /**
         * @generated from field: draw.v1.Points points = 5;
         */
        value: Points;
        case: "points";
    } | {
        /**
         * @generated from field: draw.v1.Model model = 6;
         */
        value: Model;
        case: "model";
    } | {
        /**
         * @generated from field: draw.v1.Nurbs nurbs = 7;
         */
        value: Nurbs;
        case: "nurbs";
    } | {
        case: undefined;
        value?: undefined;
    };
    constructor(data?: PartialMessage<Shape>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Shape";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Shape;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Shape;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Shape;
    static equals(a: Shape | PlainMessage<Shape> | undefined, b: Shape | PlainMessage<Shape> | undefined): boolean;
}
/**
 * For non-physical visualization shapes
 *
 * @generated from message draw.v1.Drawing
 */
export declare class Drawing extends Message<Drawing> {
    /**
     * The name of the shape
     *
     * @generated from field: string reference_frame = 1;
     */
    referenceFrame: string;
    /**
     * The pose of the shape as observed through it's parent frame/the world
     *
     * @generated from field: viam.common.v1.PoseInFrame pose_in_observer_frame = 2;
     */
    poseInObserverFrame?: PoseInFrame;
    /**
     * The shape of the drawing
     *
     * @generated from field: optional draw.v1.Shape physical_object = 3;
     */
    physicalObject?: Shape;
    /**
     * The UUID of the shape
     *
     * @generated from field: bytes uuid = 4;
     */
    uuid: Uint8Array<ArrayBuffer>;
    /**
     * The metadata of the shape
     *
     * @generated from field: optional draw.v1.Metadata metadata = 5;
     */
    metadata?: Metadata;
    constructor(data?: PartialMessage<Drawing>);
    static readonly runtime: typeof proto3;
    static readonly typeName = "draw.v1.Drawing";
    static readonly fields: FieldList;
    static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Drawing;
    static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Drawing;
    static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Drawing;
    static equals(a: Drawing | PlainMessage<Drawing> | undefined, b: Drawing | PlainMessage<Drawing> | undefined): boolean;
}
