import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { CommandResult, Coordinate } from "./VehicleCommon"; export declare const protobufPackage = ""; /** * One geofence zone: a polygon or a circle, either as a region the * vehicle must stay inside (INCLUSION) or one it must stay outside * (EXCLUSION). */ export interface FenceZone { kind: FenceZone_Kind; polygon?: Polygon | undefined; circle?: Circle | undefined; } export declare enum FenceZone_Kind { UNSPECIFIED = 0, INCLUSION = 1, EXCLUSION = 2, UNRECOGNIZED = -1 } export declare function fenceZone_KindFromJSON(object: any): FenceZone_Kind; export declare function fenceZone_KindToJSON(object: FenceZone_Kind): string; /** * Vertices form a closed polygon implicitly — do not repeat the first * vertex at the end. */ export interface Polygon { vertices: Coordinate[]; } export interface Circle { center: Coordinate | undefined; radiusM: number; } /** * A vehicle's geofence configuration. The optional return_point is the * position the vehicle navigates to when a fence breach triggers an * RTL-style action (FENCE_ACTION on ArduPilot). ArduPilot supports * exactly one return point — using a singular field rather than a * fourth FenceZone variant makes that constraint visible in the schema. */ export interface Geofence { zones: FenceZone[]; returnPoint: Coordinate | undefined; } /** * Autopilot returns MAV_MISSION_RESULT for fence uploads (same protocol * as mission upload, discriminated by mission_type). The connector maps * it into CommandResult and preserves the raw code. */ export interface GeofenceUploadResponse { result: CommandResult; rawAutopilotResult: number; detail: string; } /** * Enable or disable geofence enforcement on the vehicle. Maps onto MAVLink * MAV_CMD_DO_FENCE_ENABLE. Pair with upload_geofence to set the fence * itself; FENCE_ACTION on the autopilot controls the enforcement * behaviour (HOLD, RTL, etc.). */ export interface EnableGeofenceRequest { timestamp: Date | undefined; enabled: boolean; } export interface EnableGeofenceResponse { result: CommandResult; rawAutopilotResult: number; detail: string; } export declare const FenceZone: MessageFns; export declare const Polygon: MessageFns; export declare const Circle: MessageFns; export declare const Geofence: MessageFns; export declare const GeofenceUploadResponse: MessageFns; export declare const EnableGeofenceRequest: MessageFns; export declare const EnableGeofenceResponse: MessageFns; export interface VehicleGeofence { upload_geofence(request: Geofence): Promise; enable_geofence(request: EnableGeofenceRequest): Promise; } export declare const VehicleGeofenceServiceName = "VehicleGeofence"; export declare class VehicleGeofenceClientImpl implements VehicleGeofence { private readonly rpc; private readonly service; constructor(rpc: Rpc, opts?: { service?: string; }); upload_geofence(request: Geofence): Promise; enable_geofence(request: EnableGeofenceRequest): Promise; } interface Rpc { request(service: string, method: string, data: Uint8Array): Promise; } type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial = T extends Builtin ? T : T extends globalThis.Array ? globalThis.Array> : T extends ReadonlyArray ? ReadonlyArray> : T extends {} ? { [K in keyof T]?: DeepPartial; } : Partial; type KeysOfUnion = T extends T ? keyof T : never; export type Exact = P extends Builtin ? P : P & { [K in keyof P]: Exact; } & { [K in Exclude>]: never; }; export interface MessageFns { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; fromJSON(object: any): T; toJSON(message: T): unknown; create, I>>(base?: I): T; fromPartial, I>>(object: I): T; } export {};