@rise-maritime/keelson-js 0.5.3 → 0.5.4-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/payloads/Route.d.ts +541 -0
- package/dist/payloads/Route.js +4195 -0
- package/dist/payloads/RouteChangeEvent.d.ts +48 -0
- package/dist/payloads/RouteChangeEvent.js +240 -0
- package/dist/payloads/RouteEditAuthority.d.ts +65 -0
- package/dist/payloads/RouteEditAuthority.js +380 -0
- package/dist/payloads/RouteExecution.d.ts +74 -0
- package/dist/payloads/RouteExecution.js +321 -0
- package/dist/payloads/Severity.d.ts +6 -3
- package/dist/payloads/Severity.js +18 -15
- package/dist/payloads/VesselType.d.ts +2 -1
- package/dist/payloads/VesselType.js +1 -1
- package/dist/payloads/Voyage.d.ts +159 -0
- package/dist/payloads/Voyage.js +879 -0
- package/dist/payloads/google/protobuf/any.d.ts +145 -0
- package/dist/payloads/google/protobuf/any.js +110 -0
- package/dist/payloads/index.google.protobuf.d.ts +1 -0
- package/dist/payloads/index.google.protobuf.js +1 -0
- package/dist/payloads/index.keelson.d.ts +6 -1
- package/dist/payloads/index.keelson.js +6 -1
- package/dist/subjects.json +11 -1
- package/package.json +1 -1
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
|
|
2
|
+
import { SeverityLevel } from "./Severity";
|
|
3
|
+
import { GeoJSON } from "./foxglove/GeoJSON";
|
|
4
|
+
import { LocationFix } from "./foxglove/LocationFix";
|
|
5
|
+
import { Any } from "./google/protobuf/any";
|
|
6
|
+
import { Duration } from "./google/protobuf/duration";
|
|
7
|
+
/** Autonomy level the route is authored for. */
|
|
8
|
+
export declare enum AutonomyLevel {
|
|
9
|
+
AUTONOMY_LEVEL_UNSPECIFIED = 0,
|
|
10
|
+
MANUAL_ONLY = 1,
|
|
11
|
+
REMOTE_CONTROLLED = 2,
|
|
12
|
+
AUTONOMOUS_SUPERVISED = 3,
|
|
13
|
+
AUTONOMOUS_UNSUPERVISED = 4,
|
|
14
|
+
UNRECOGNIZED = -1
|
|
15
|
+
}
|
|
16
|
+
export declare function autonomyLevelFromJSON(object: any): AutonomyLevel;
|
|
17
|
+
export declare function autonomyLevelToJSON(object: AutonomyLevel): string;
|
|
18
|
+
/** Operational context for a leg or waypoint. */
|
|
19
|
+
export declare enum OperationalContext {
|
|
20
|
+
OPERATIONAL_CONTEXT_UNSPECIFIED = 0,
|
|
21
|
+
OPERATIONAL_CONTEXT_OPEN_SEA = 1,
|
|
22
|
+
OPERATIONAL_CONTEXT_COASTAL = 2,
|
|
23
|
+
OPERATIONAL_CONTEXT_ARCHIPELAGO = 3,
|
|
24
|
+
OPERATIONAL_CONTEXT_PORT_APPROACH = 4,
|
|
25
|
+
OPERATIONAL_CONTEXT_PORT_AREA = 5,
|
|
26
|
+
OPERATIONAL_CONTEXT_RIVER_WATERS = 6,
|
|
27
|
+
OPERATIONAL_CONTEXT_LOCK = 7,
|
|
28
|
+
UNRECOGNIZED = -1
|
|
29
|
+
}
|
|
30
|
+
export declare function operationalContextFromJSON(object: any): OperationalContext;
|
|
31
|
+
export declare function operationalContextToJSON(object: OperationalContext): string;
|
|
32
|
+
/** Categorisation of route challenges (used in structured risk). */
|
|
33
|
+
export declare enum RouteChallengeType {
|
|
34
|
+
ROUTE_CHALLENGE_TYPE_UNSPECIFIED = 0,
|
|
35
|
+
ROUTE_CHALLENGE_TYPE_SHALLOW_WATER = 1,
|
|
36
|
+
ROUTE_CHALLENGE_TYPE_TRAFFIC_DENSITY = 2,
|
|
37
|
+
ROUTE_CHALLENGE_TYPE_WEATHER_HAZARD = 3,
|
|
38
|
+
ROUTE_CHALLENGE_TYPE_PIRACY_SECURITY = 4,
|
|
39
|
+
ROUTE_CHALLENGE_TYPE_REGULATORY_LIMIT = 5,
|
|
40
|
+
ROUTE_CHALLENGE_TYPE_TECHNICAL_LIMIT = 6,
|
|
41
|
+
ROUTE_CHALLENGE_TYPE_OTHER = 7,
|
|
42
|
+
UNRECOGNIZED = -1
|
|
43
|
+
}
|
|
44
|
+
export declare function routeChallengeTypeFromJSON(object: any): RouteChallengeType;
|
|
45
|
+
export declare function routeChallengeTypeToJSON(object: RouteChallengeType): string;
|
|
46
|
+
/** Hazard zone classification. */
|
|
47
|
+
export declare enum HazardZoneType {
|
|
48
|
+
HAZARD_ZONE_TYPE_UNSPECIFIED = 0,
|
|
49
|
+
HAZARD_ZONE_TYPE_STATIC_NOGO = 1,
|
|
50
|
+
HAZARD_ZONE_TYPE_DYNAMIC_NOGO = 2,
|
|
51
|
+
HAZARD_ZONE_TYPE_TRAFFIC = 3,
|
|
52
|
+
HAZARD_ZONE_TYPE_WEATHER = 4,
|
|
53
|
+
HAZARD_ZONE_TYPE_ENVIRONMENTAL = 5,
|
|
54
|
+
UNRECOGNIZED = -1
|
|
55
|
+
}
|
|
56
|
+
export declare function hazardZoneTypeFromJSON(object: any): HazardZoneType;
|
|
57
|
+
export declare function hazardZoneTypeToJSON(object: HazardZoneType): string;
|
|
58
|
+
/** COLREG encounter situation for an annotated leg. */
|
|
59
|
+
export declare enum ColregSituation {
|
|
60
|
+
COLREG_SITUATION_UNSPECIFIED = 0,
|
|
61
|
+
COLREG_SITUATION_OVERTAKING = 1,
|
|
62
|
+
COLREG_SITUATION_CROSSING_STBD = 2,
|
|
63
|
+
COLREG_SITUATION_CROSSING_PORT = 3,
|
|
64
|
+
COLREG_SITUATION_HEAD_ON = 4,
|
|
65
|
+
UNRECOGNIZED = -1
|
|
66
|
+
}
|
|
67
|
+
export declare function colregSituationFromJSON(object: any): ColregSituation;
|
|
68
|
+
export declare function colregSituationToJSON(object: ColregSituation): string;
|
|
69
|
+
/** Annotated traffic intensity for a leg. */
|
|
70
|
+
export declare enum ColregTrafficIntensity {
|
|
71
|
+
COLREG_TRAFFIC_INTENSITY_UNSPECIFIED = 0,
|
|
72
|
+
COLREG_TRAFFIC_INTENSITY_NONE = 1,
|
|
73
|
+
COLREG_TRAFFIC_INTENSITY_LIGHT = 2,
|
|
74
|
+
COLREG_TRAFFIC_INTENSITY_MODERATE = 3,
|
|
75
|
+
COLREG_TRAFFIC_INTENSITY_HEAVY = 4,
|
|
76
|
+
UNRECOGNIZED = -1
|
|
77
|
+
}
|
|
78
|
+
export declare function colregTrafficIntensityFromJSON(object: any): ColregTrafficIntensity;
|
|
79
|
+
export declare function colregTrafficIntensityToJSON(object: ColregTrafficIntensity): string;
|
|
80
|
+
/** Geometry type for a leg between waypoints. */
|
|
81
|
+
export declare enum GeometryType {
|
|
82
|
+
GEOMETRY_TYPE_UNSPECIFIED = 0,
|
|
83
|
+
GEOMETRY_TYPE_LOXODROME = 1,
|
|
84
|
+
GEOMETRY_TYPE_ORTHODROME = 2,
|
|
85
|
+
UNRECOGNIZED = -1
|
|
86
|
+
}
|
|
87
|
+
export declare function geometryTypeFromJSON(object: any): GeometryType;
|
|
88
|
+
export declare function geometryTypeToJSON(object: GeometryType): string;
|
|
89
|
+
/**
|
|
90
|
+
* Lifecycle status for the route artifact (authoring + quality).
|
|
91
|
+
* Execution-side state (vessel sailing, paused, completed) lives on
|
|
92
|
+
* keelson.VoyageStatus and is intentionally NOT duplicated here.
|
|
93
|
+
*/
|
|
94
|
+
export declare enum RouteStatus {
|
|
95
|
+
ROUTE_STATUS_UNSPECIFIED = 0,
|
|
96
|
+
ROUTE_STATUS_INITIAL = 1,
|
|
97
|
+
ROUTE_STATUS_PLANNED = 2,
|
|
98
|
+
ROUTE_STATUS_RECOMMENDED = 3,
|
|
99
|
+
ROUTE_STATUS_ACKNOWLEDGED = 4,
|
|
100
|
+
/** ROUTE_STATUS_TERMINATED - Route artifact retired / superseded. */
|
|
101
|
+
ROUTE_STATUS_TERMINATED = 6,
|
|
102
|
+
ROUTE_STATUS_ERRORS = 7,
|
|
103
|
+
ROUTE_STATUS_INCOMPLETE = 8,
|
|
104
|
+
ROUTE_STATUS_ROUTE_ISSUES = 9,
|
|
105
|
+
UNRECOGNIZED = -1
|
|
106
|
+
}
|
|
107
|
+
export declare function routeStatusFromJSON(object: any): RouteStatus;
|
|
108
|
+
export declare function routeStatusToJSON(object: RouteStatus): string;
|
|
109
|
+
/** Required action for an ActionPoint. */
|
|
110
|
+
export declare enum ActionPointRequiredAction {
|
|
111
|
+
ACTION_POINT_REQUIRED_ACTION_UNSPECIFIED = 0,
|
|
112
|
+
ACTION_POINT_REQUIRED_ACTION_USER_DEFINED = 1,
|
|
113
|
+
ACTION_POINT_REQUIRED_ACTION_REPORT = 2,
|
|
114
|
+
/** ACTION_POINT_REQUIRED_ACTION_UKCM - Under-keel clearance monitoring */
|
|
115
|
+
ACTION_POINT_REQUIRED_ACTION_UKCM = 3,
|
|
116
|
+
ACTION_POINT_REQUIRED_ACTION_NOTE = 4,
|
|
117
|
+
ACTION_POINT_REQUIRED_ACTION_PILOT_BOARDING = 5,
|
|
118
|
+
ACTION_POINT_REQUIRED_ACTION_FUEL_SWITCH = 6,
|
|
119
|
+
ACTION_POINT_REQUIRED_ACTION_MODE_SWITCH = 7,
|
|
120
|
+
ACTION_POINT_REQUIRED_ACTION_INCREASE_LOOKOUT = 8,
|
|
121
|
+
UNRECOGNIZED = -1
|
|
122
|
+
}
|
|
123
|
+
export declare function actionPointRequiredActionFromJSON(object: any): ActionPointRequiredAction;
|
|
124
|
+
export declare function actionPointRequiredActionToJSON(object: ActionPointRequiredAction): string;
|
|
125
|
+
/**
|
|
126
|
+
* Vendor- or model-specific data attached to any container. Each entry is
|
|
127
|
+
* scoped by manufacturer + name + version so multiple vendors can coexist on
|
|
128
|
+
* the same route without colliding.
|
|
129
|
+
*
|
|
130
|
+
* NOTE: the per-entry `payload` is a google.protobuf.Any — a deliberate,
|
|
131
|
+
* reviewed exception to the "no opaque escape hatch" guidance (#154). It is
|
|
132
|
+
* the vendor-extension mechanism for this RTZ 1.2 / S-421 standards-exchange
|
|
133
|
+
* format. Producers SHOULD prefer the typed `attributes` map for simple
|
|
134
|
+
* key/values and reserve Any for genuinely vendor-specific structured payloads.
|
|
135
|
+
*/
|
|
136
|
+
export interface Extensions {
|
|
137
|
+
$type: "keelson.Extensions";
|
|
138
|
+
entries: Extensions_Entry[];
|
|
139
|
+
}
|
|
140
|
+
export interface Extensions_Entry {
|
|
141
|
+
$type: "keelson.Extensions.Entry";
|
|
142
|
+
/** Reverse-DNS or short vendor identifier (e.g. "se.rise", "kongsberg"). */
|
|
143
|
+
manufacturer: string;
|
|
144
|
+
/** Vendor-scoped extension name. */
|
|
145
|
+
name: string;
|
|
146
|
+
/** Extension version (semver or vendor-defined). */
|
|
147
|
+
version: string;
|
|
148
|
+
/** Strongly-typed payload. */
|
|
149
|
+
payload: Any | undefined;
|
|
150
|
+
/** Lightweight key/value attributes that don't justify a typed payload. */
|
|
151
|
+
attributes: {
|
|
152
|
+
[key: string]: string;
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export interface Extensions_Entry_AttributesEntry {
|
|
156
|
+
$type: "keelson.Extensions.Entry.AttributesEntry";
|
|
157
|
+
key: string;
|
|
158
|
+
value: string;
|
|
159
|
+
}
|
|
160
|
+
export interface Route {
|
|
161
|
+
$type: "keelson.Route";
|
|
162
|
+
/** Schema version this Route conforms to. */
|
|
163
|
+
version: string;
|
|
164
|
+
/** Globally unique route identifier (UUID recommended). */
|
|
165
|
+
routeId: string;
|
|
166
|
+
/** Monotonically increasing edition number; bumped on any edit. */
|
|
167
|
+
routeEditionNumber: number;
|
|
168
|
+
/**
|
|
169
|
+
* RTZ / S-421 format version this Route is compatible with
|
|
170
|
+
* (e.g. "RTZ-1.2", "S-421-FC1.0").
|
|
171
|
+
*/
|
|
172
|
+
routeFormatVersion: string;
|
|
173
|
+
/** Lifecycle status. */
|
|
174
|
+
status: RouteStatus;
|
|
175
|
+
/** Time the route was created and last modified. */
|
|
176
|
+
createdAt: Date | undefined;
|
|
177
|
+
modifiedAt: Date | undefined;
|
|
178
|
+
info: RouteInfo | undefined;
|
|
179
|
+
waypoints: Waypoints | undefined;
|
|
180
|
+
schedules: Schedules | undefined;
|
|
181
|
+
actionPoints: ActionPoints | undefined;
|
|
182
|
+
/** Dynamic hazards / no-go areas valid for this route. */
|
|
183
|
+
hazardZones: HazardZone[];
|
|
184
|
+
/** Structured challenges / risks identified during planning. */
|
|
185
|
+
challenges: RouteChallenge[];
|
|
186
|
+
/** Free-form notes or issues against the route as a whole. */
|
|
187
|
+
issues: RouteIssue[];
|
|
188
|
+
/** Digital signatures attesting to the authenticity of this route edition. */
|
|
189
|
+
signatures: RouteSignature[];
|
|
190
|
+
extensions: Extensions | undefined;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Route artifact metadata. Vessel identity, port codes, planned dep/arr times,
|
|
194
|
+
* and voyage_id intentionally live on keelson.Voyage instead of here, so a
|
|
195
|
+
* Route can be authored once and executed by multiple voyages.
|
|
196
|
+
*/
|
|
197
|
+
export interface RouteInfo {
|
|
198
|
+
$type: "keelson.RouteInfo";
|
|
199
|
+
/** Human-readable route name. */
|
|
200
|
+
name: string;
|
|
201
|
+
/** Author of the route (planner / system name). */
|
|
202
|
+
author: string;
|
|
203
|
+
/** Organisation owning the route. */
|
|
204
|
+
authorOrganization: string;
|
|
205
|
+
/** Validity window for this route (e.g. tidal window, weather window). */
|
|
206
|
+
validFrom: Date | undefined;
|
|
207
|
+
validTo: Date | undefined;
|
|
208
|
+
/**
|
|
209
|
+
* -- Vessel-class plan constraints ------------------------------------------
|
|
210
|
+
* Dimensions the route was authored against. These are constraints, not
|
|
211
|
+
* identity — the vessel actually executing the voyage may differ within
|
|
212
|
+
* these bounds. Vessel identity lives on keelson.Voyage.
|
|
213
|
+
*/
|
|
214
|
+
vesselLoaM: number;
|
|
215
|
+
/** Maximum beam */
|
|
216
|
+
vesselBeamM: number;
|
|
217
|
+
/** Maximum draft the route was planned for */
|
|
218
|
+
vesselDraftM: number;
|
|
219
|
+
/** Maximum height above waterline */
|
|
220
|
+
vesselAirDraftM: number;
|
|
221
|
+
/**
|
|
222
|
+
* -- Operational limits -----------------------------------------------------
|
|
223
|
+
* Limits the route is valid under. Use `optional` so a zero value means
|
|
224
|
+
* "no limit applies" only when the field is set; an unset field means the
|
|
225
|
+
* limit is unknown / not specified.
|
|
226
|
+
*/
|
|
227
|
+
maxRollDeg?: number | undefined;
|
|
228
|
+
maxWaveHeightM?: number | undefined;
|
|
229
|
+
maxWindSpeedMps?: number | undefined;
|
|
230
|
+
minSpeedKnots?: number | undefined;
|
|
231
|
+
maxSpeedKnots?: number | undefined;
|
|
232
|
+
/**
|
|
233
|
+
* -- Optimization & autonomy ------------------------------------------------
|
|
234
|
+
* Free-form optimization method label (e.g. "fuel-min", "eta-min", "weather-routed").
|
|
235
|
+
*/
|
|
236
|
+
optimizationMethod: string;
|
|
237
|
+
/** Target autonomy level this route is authored for. */
|
|
238
|
+
autonomyLevel: AutonomyLevel;
|
|
239
|
+
changeHistory: RouteInfo_Change[];
|
|
240
|
+
extensions: Extensions | undefined;
|
|
241
|
+
}
|
|
242
|
+
/** -- Change history --------------------------------------------------------- */
|
|
243
|
+
export interface RouteInfo_Change {
|
|
244
|
+
$type: "keelson.RouteInfo.Change";
|
|
245
|
+
at: Date | undefined;
|
|
246
|
+
author: string;
|
|
247
|
+
description: string;
|
|
248
|
+
editionNumber: number;
|
|
249
|
+
}
|
|
250
|
+
export interface Waypoints {
|
|
251
|
+
$type: "keelson.Waypoints";
|
|
252
|
+
/** Default values applied to any waypoint or leg that doesn't override them. */
|
|
253
|
+
defaults: DefaultWaypoint | undefined;
|
|
254
|
+
/** Ordered list of waypoints, in route order. */
|
|
255
|
+
waypoint: Waypoint[];
|
|
256
|
+
extensions: Extensions | undefined;
|
|
257
|
+
}
|
|
258
|
+
/** Default values for waypoint/leg fields. RTZ-aligned. */
|
|
259
|
+
export interface DefaultWaypoint {
|
|
260
|
+
$type: "keelson.DefaultWaypoint";
|
|
261
|
+
leg: Leg | undefined;
|
|
262
|
+
radiusM: number;
|
|
263
|
+
plannedSogKnots: number;
|
|
264
|
+
}
|
|
265
|
+
export interface Waypoint {
|
|
266
|
+
$type: "keelson.Waypoint";
|
|
267
|
+
/** Stable waypoint identifier. */
|
|
268
|
+
id: number;
|
|
269
|
+
/** Revision counter for this specific waypoint. */
|
|
270
|
+
revision: number;
|
|
271
|
+
/** Human-readable name (e.g. "WP-007 East of Hanö"). */
|
|
272
|
+
name: string;
|
|
273
|
+
/** WGS-84 position. */
|
|
274
|
+
position: LocationFix | undefined;
|
|
275
|
+
/** Planned speed over ground when leaving this waypoint. */
|
|
276
|
+
plannedSogKnots: number;
|
|
277
|
+
/** Turn radius for fly-by, in metres. */
|
|
278
|
+
radiusM: number;
|
|
279
|
+
/** Maximum rate of turn during the turn, degrees per second. */
|
|
280
|
+
rateOfTurnDegps: number;
|
|
281
|
+
/** Distance before the turn at which wheel-over should be ordered, metres. */
|
|
282
|
+
wheelOverDistanceM: number;
|
|
283
|
+
/**
|
|
284
|
+
* If true, the waypoint is locked and may not be edited by autonomous
|
|
285
|
+
* re-routing.
|
|
286
|
+
*/
|
|
287
|
+
lock: boolean;
|
|
288
|
+
/** Operational context for this waypoint (open sea, port approach, lock, ...). */
|
|
289
|
+
operationalContext: OperationalContext;
|
|
290
|
+
/** Outgoing leg from this waypoint to the next. The last waypoint has none. */
|
|
291
|
+
leg: Leg | undefined;
|
|
292
|
+
/** Free-form notes attached to this waypoint. */
|
|
293
|
+
note: string;
|
|
294
|
+
extensions: Extensions | undefined;
|
|
295
|
+
}
|
|
296
|
+
export interface Leg {
|
|
297
|
+
$type: "keelson.Leg";
|
|
298
|
+
/**
|
|
299
|
+
* Cross-track distance (XTD) limits and monitoring thresholds, in metres.
|
|
300
|
+
* `optional` so producers can distinguish "no XTD limit" (unset) from
|
|
301
|
+
* "zero XTD limit" (set to 0).
|
|
302
|
+
*/
|
|
303
|
+
xtdPortM?: number | undefined;
|
|
304
|
+
xtdStarboardM?: number | undefined;
|
|
305
|
+
xtdMonitoringPortM?: number | undefined;
|
|
306
|
+
xtdMonitoringStarboardM?: number | undefined;
|
|
307
|
+
/**
|
|
308
|
+
* Safety contour (depth in metres below chart datum) below which the route
|
|
309
|
+
* is considered unsafe.
|
|
310
|
+
*/
|
|
311
|
+
safetyContourM?: number | undefined;
|
|
312
|
+
/** Minimum allowed depth on this leg, in metres. */
|
|
313
|
+
safetyDepthM?: number | undefined;
|
|
314
|
+
/** Static under-keel clearance, in metres. */
|
|
315
|
+
ukcStaticM?: number | undefined;
|
|
316
|
+
/** Dynamic under-keel clearance margin, in metres. */
|
|
317
|
+
ukcDynamicM?: number | undefined;
|
|
318
|
+
/** Planned draughts for this leg. */
|
|
319
|
+
draughtBowM: number;
|
|
320
|
+
draughtSternM: number;
|
|
321
|
+
draughtMeanM: number;
|
|
322
|
+
/** Geometry type along this leg. */
|
|
323
|
+
geometryType: GeometryType;
|
|
324
|
+
/** Speed envelope — Speed Over Ground (knots). */
|
|
325
|
+
sogMinKnots: number;
|
|
326
|
+
sogMaxKnots: number;
|
|
327
|
+
/** Speed envelope — Speed Through Water (knots). */
|
|
328
|
+
stwMinKnots: number;
|
|
329
|
+
stwMaxKnots: number;
|
|
330
|
+
/**
|
|
331
|
+
* Dimensional limits for the leg (e.g. bridge clearances, lock dimensions).
|
|
332
|
+
* `optional` so unset means "no limit specified".
|
|
333
|
+
*/
|
|
334
|
+
draughtMaxM?: number | undefined;
|
|
335
|
+
airDraftMaxM?: number | undefined;
|
|
336
|
+
beamMaxM?: number | undefined;
|
|
337
|
+
lengthMaxM?: number | undefined;
|
|
338
|
+
/** Free-text reporting / handover text for this leg. */
|
|
339
|
+
report: string;
|
|
340
|
+
/** Free-form notes. */
|
|
341
|
+
note: string;
|
|
342
|
+
/** COLREG annotations. */
|
|
343
|
+
colregSituation: ColregSituation;
|
|
344
|
+
colregTrafficIntensity: ColregTrafficIntensity;
|
|
345
|
+
extensions: Extensions | undefined;
|
|
346
|
+
}
|
|
347
|
+
export interface Schedules {
|
|
348
|
+
$type: "keelson.Schedules";
|
|
349
|
+
/** Multiple schedules can coexist (e.g. "manual", "weather-optimized"). */
|
|
350
|
+
schedule: Schedule[];
|
|
351
|
+
extensions: Extensions | undefined;
|
|
352
|
+
}
|
|
353
|
+
export interface Schedule {
|
|
354
|
+
$type: "keelson.Schedule";
|
|
355
|
+
/** Schedule identifier (unique within the route). */
|
|
356
|
+
id: string;
|
|
357
|
+
/** Free-text name. */
|
|
358
|
+
name: string;
|
|
359
|
+
origin: Schedule_Origin;
|
|
360
|
+
/** Ordered list of schedule entries, one per waypoint. */
|
|
361
|
+
element: ScheduleElement[];
|
|
362
|
+
extensions: Extensions | undefined;
|
|
363
|
+
}
|
|
364
|
+
/** Whether this schedule was authored manually or computed. */
|
|
365
|
+
export declare enum Schedule_Origin {
|
|
366
|
+
ORIGIN_UNSPECIFIED = 0,
|
|
367
|
+
MANUAL = 1,
|
|
368
|
+
CALCULATED = 2,
|
|
369
|
+
UNRECOGNIZED = -1
|
|
370
|
+
}
|
|
371
|
+
export declare function schedule_OriginFromJSON(object: any): Schedule_Origin;
|
|
372
|
+
export declare function schedule_OriginToJSON(object: Schedule_Origin): string;
|
|
373
|
+
export interface ScheduleElement {
|
|
374
|
+
$type: "keelson.ScheduleElement";
|
|
375
|
+
/** ID of the waypoint this entry refers to. */
|
|
376
|
+
waypointId: number;
|
|
377
|
+
/** Estimated time of arrival / departure with allowed windows. */
|
|
378
|
+
eta: Date | undefined;
|
|
379
|
+
etaWindowStart: Date | undefined;
|
|
380
|
+
etaWindowEnd: Date | undefined;
|
|
381
|
+
etd: Date | undefined;
|
|
382
|
+
etdWindowStart: Date | undefined;
|
|
383
|
+
etdWindowEnd: Date | undefined;
|
|
384
|
+
/** Planned duration of stay at this waypoint (port, anchorage, ...). */
|
|
385
|
+
stay: Duration | undefined;
|
|
386
|
+
/** -- Environmental forecast for this leg ------------------------------------ */
|
|
387
|
+
windSpeedMps: number;
|
|
388
|
+
windDirectionDeg: number;
|
|
389
|
+
currentSpeedMps: number;
|
|
390
|
+
currentDirectionDeg: number;
|
|
391
|
+
waveHeightM: number;
|
|
392
|
+
wavePeriodS: number;
|
|
393
|
+
waveDirectionDeg: number;
|
|
394
|
+
/** -- Energy / propulsion plan ---------------------------------------------- */
|
|
395
|
+
plannedRpm: number;
|
|
396
|
+
plannedPropellerPitchPct: number;
|
|
397
|
+
plannedFuelKg: number;
|
|
398
|
+
/** Fuel savings versus a reference plan, in kilograms (negative = increase). */
|
|
399
|
+
fuelSavingVsReferenceKg: number;
|
|
400
|
+
extensions: Extensions | undefined;
|
|
401
|
+
}
|
|
402
|
+
export interface ActionPoints {
|
|
403
|
+
$type: "keelson.ActionPoints";
|
|
404
|
+
actionPoint: ActionPoint[];
|
|
405
|
+
extensions: Extensions | undefined;
|
|
406
|
+
}
|
|
407
|
+
export interface ActionPoint {
|
|
408
|
+
$type: "keelson.ActionPoint";
|
|
409
|
+
/** Stable action-point identifier. */
|
|
410
|
+
id: string;
|
|
411
|
+
/** Human-readable name. */
|
|
412
|
+
name: string;
|
|
413
|
+
/**
|
|
414
|
+
* -- Geometry ---------------------------------------------------------------
|
|
415
|
+
* Either a point + radius (preferred for simple action points) or an area
|
|
416
|
+
* expressed as GeoJSON.
|
|
417
|
+
*/
|
|
418
|
+
position: LocationFix | undefined;
|
|
419
|
+
radiusM: number;
|
|
420
|
+
area: GeoJSON | undefined;
|
|
421
|
+
/**
|
|
422
|
+
* Lead time before crossing the geometry at which the action should be
|
|
423
|
+
* triggered (e.g. 5 minutes before pilot boarding ground).
|
|
424
|
+
*/
|
|
425
|
+
timeToAct: Duration | undefined;
|
|
426
|
+
/** Required action. */
|
|
427
|
+
requiredAction: ActionPointRequiredAction;
|
|
428
|
+
/**
|
|
429
|
+
* Free-form action description (always required when required_action is
|
|
430
|
+
* USER_DEFINED; otherwise supplements the enum).
|
|
431
|
+
*/
|
|
432
|
+
description: string;
|
|
433
|
+
extensions: Extensions | undefined;
|
|
434
|
+
}
|
|
435
|
+
export interface HazardZone {
|
|
436
|
+
$type: "keelson.HazardZone";
|
|
437
|
+
/** Stable hazard identifier. */
|
|
438
|
+
id: string;
|
|
439
|
+
type: HazardZoneType;
|
|
440
|
+
/** Hazard severity. */
|
|
441
|
+
severity: SeverityLevel;
|
|
442
|
+
/** Free-text description. */
|
|
443
|
+
description: string;
|
|
444
|
+
/** Either a centre + radius or a polygon expressed as GeoJSON. */
|
|
445
|
+
centre: LocationFix | undefined;
|
|
446
|
+
radiusM: number;
|
|
447
|
+
polygon: GeoJSON | undefined;
|
|
448
|
+
/** Validity window for the hazard. */
|
|
449
|
+
validFrom: Date | undefined;
|
|
450
|
+
validTo: Date | undefined;
|
|
451
|
+
extensions: Extensions | undefined;
|
|
452
|
+
}
|
|
453
|
+
export interface RouteChallenge {
|
|
454
|
+
$type: "keelson.RouteChallenge";
|
|
455
|
+
id: string;
|
|
456
|
+
type: RouteChallengeType;
|
|
457
|
+
severity: SeverityLevel;
|
|
458
|
+
description: string;
|
|
459
|
+
/** Waypoint IDs the challenge applies to (empty = whole route). */
|
|
460
|
+
waypointIds: number[];
|
|
461
|
+
extensions: Extensions | undefined;
|
|
462
|
+
}
|
|
463
|
+
export interface RouteIssue {
|
|
464
|
+
$type: "keelson.RouteIssue";
|
|
465
|
+
id: string;
|
|
466
|
+
severity: SeverityLevel;
|
|
467
|
+
description: string;
|
|
468
|
+
raisedAt: Date | undefined;
|
|
469
|
+
raisedBy: string;
|
|
470
|
+
extensions: Extensions | undefined;
|
|
471
|
+
}
|
|
472
|
+
export interface RouteSignature {
|
|
473
|
+
$type: "keelson.RouteSignature";
|
|
474
|
+
/** Free-form signer identifier (e.g. user id, system id). */
|
|
475
|
+
signerId: string;
|
|
476
|
+
/** Signer role (e.g. "master", "planner", "shore-control"). */
|
|
477
|
+
signerRole: string;
|
|
478
|
+
/** Signing algorithm (e.g. "ed25519", "ecdsa-p256-sha256"). */
|
|
479
|
+
algorithm: string;
|
|
480
|
+
/** Raw signature bytes. */
|
|
481
|
+
signature: Uint8Array;
|
|
482
|
+
/** Time of signing. */
|
|
483
|
+
signedAt: Date | undefined;
|
|
484
|
+
/** Reference to the public key used to verify (key id, URL, fingerprint). */
|
|
485
|
+
keyReference: string;
|
|
486
|
+
extensions: Extensions | undefined;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Standalone, structured payload for the `route_status` subject. Replaces the
|
|
490
|
+
* previous TimestampedString mapping so subscribers can act on the standard
|
|
491
|
+
* RouteStatus enum without parsing free-form text.
|
|
492
|
+
*/
|
|
493
|
+
export interface RouteStatusUpdate {
|
|
494
|
+
$type: "keelson.RouteStatusUpdate";
|
|
495
|
+
timestamp: Date | undefined;
|
|
496
|
+
routeId: string;
|
|
497
|
+
routeEditionNumber: number;
|
|
498
|
+
status: RouteStatus;
|
|
499
|
+
changedBy: string;
|
|
500
|
+
note: string;
|
|
501
|
+
}
|
|
502
|
+
export declare const Extensions: MessageFns<Extensions, "keelson.Extensions">;
|
|
503
|
+
export declare const Extensions_Entry: MessageFns<Extensions_Entry, "keelson.Extensions.Entry">;
|
|
504
|
+
export declare const Extensions_Entry_AttributesEntry: MessageFns<Extensions_Entry_AttributesEntry, "keelson.Extensions.Entry.AttributesEntry">;
|
|
505
|
+
export declare const Route: MessageFns<Route, "keelson.Route">;
|
|
506
|
+
export declare const RouteInfo: MessageFns<RouteInfo, "keelson.RouteInfo">;
|
|
507
|
+
export declare const RouteInfo_Change: MessageFns<RouteInfo_Change, "keelson.RouteInfo.Change">;
|
|
508
|
+
export declare const Waypoints: MessageFns<Waypoints, "keelson.Waypoints">;
|
|
509
|
+
export declare const DefaultWaypoint: MessageFns<DefaultWaypoint, "keelson.DefaultWaypoint">;
|
|
510
|
+
export declare const Waypoint: MessageFns<Waypoint, "keelson.Waypoint">;
|
|
511
|
+
export declare const Leg: MessageFns<Leg, "keelson.Leg">;
|
|
512
|
+
export declare const Schedules: MessageFns<Schedules, "keelson.Schedules">;
|
|
513
|
+
export declare const Schedule: MessageFns<Schedule, "keelson.Schedule">;
|
|
514
|
+
export declare const ScheduleElement: MessageFns<ScheduleElement, "keelson.ScheduleElement">;
|
|
515
|
+
export declare const ActionPoints: MessageFns<ActionPoints, "keelson.ActionPoints">;
|
|
516
|
+
export declare const ActionPoint: MessageFns<ActionPoint, "keelson.ActionPoint">;
|
|
517
|
+
export declare const HazardZone: MessageFns<HazardZone, "keelson.HazardZone">;
|
|
518
|
+
export declare const RouteChallenge: MessageFns<RouteChallenge, "keelson.RouteChallenge">;
|
|
519
|
+
export declare const RouteIssue: MessageFns<RouteIssue, "keelson.RouteIssue">;
|
|
520
|
+
export declare const RouteSignature: MessageFns<RouteSignature, "keelson.RouteSignature">;
|
|
521
|
+
export declare const RouteStatusUpdate: MessageFns<RouteStatusUpdate, "keelson.RouteStatusUpdate">;
|
|
522
|
+
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
|
|
523
|
+
type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
|
|
524
|
+
[K in Exclude<keyof T, "$type">]?: DeepPartial<T[K]>;
|
|
525
|
+
} : Partial<T>;
|
|
526
|
+
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
|
527
|
+
type Exact<P, I extends P> = P extends Builtin ? P : P & {
|
|
528
|
+
[K in keyof P]: Exact<P[K], I[K]>;
|
|
529
|
+
} & {
|
|
530
|
+
[K in Exclude<keyof I, KeysOfUnion<P> | "$type">]: never;
|
|
531
|
+
};
|
|
532
|
+
interface MessageFns<T, V extends string> {
|
|
533
|
+
readonly $type: V;
|
|
534
|
+
encode(message: T, writer?: BinaryWriter): BinaryWriter;
|
|
535
|
+
decode(input: BinaryReader | Uint8Array, length?: number): T;
|
|
536
|
+
fromJSON(object: any): T;
|
|
537
|
+
toJSON(message: T): unknown;
|
|
538
|
+
create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
|
|
539
|
+
fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
|
|
540
|
+
}
|
|
541
|
+
export {};
|