@jsm-mit/tigi-sharded-package 0.2.0 → 0.4.0
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/README.md +51 -3
- package/declarations/coordinator/coordinator.did +39 -0
- package/declarations/coordinator/coordinator.did.d.ts +68 -0
- package/declarations/coordinator/coordinator.did.js +23 -0
- package/declarations/core/core.did +210 -45
- package/declarations/core/core.did.d.ts +191 -43
- package/declarations/core/core.did.js +146 -42
- package/declarations/tigi-driver/tigi-driver.did +15 -0
- package/declarations/tigi-driver/tigi-driver.did.d.ts +19 -0
- package/declarations/tigi-driver/tigi-driver.did.js +6 -0
- package/declarations/tigi-simulator/tigi-simulator.did +46 -4
- package/declarations/tigi-simulator/tigi-simulator.did.d.ts +70 -4
- package/declarations/tigi-simulator/tigi-simulator.did.js +39 -10
- package/declarations/worker/worker.did +23 -6
- package/declarations/worker/worker.did.d.ts +18 -6
- package/declarations/worker/worker.did.js +14 -7
- package/dist/actors/driver-canisters-actor.d.ts +77 -0
- package/dist/actors/driver-canisters-actor.d.ts.map +1 -0
- package/dist/actors/driver-canisters-actor.js +147 -0
- package/dist/actors/rides-actor.d.ts +21 -1
- package/dist/actors/rides-actor.d.ts.map +1 -1
- package/dist/actors/rides-actor.js +44 -2
- package/dist/geo.d.ts +5 -0
- package/dist/geo.d.ts.map +1 -1
- package/dist/geo.js +41 -0
- package/dist/group/canister-actor.d.ts +7 -0
- package/dist/group/canister-actor.d.ts.map +1 -1
- package/dist/group/canister-actor.js +18 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/interfaces.d.ts +43 -1
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/mappers.d.ts +7 -2
- package/dist/mappers.d.ts.map +1 -1
- package/dist/mappers.js +17 -2
- package/package.json +7 -4
|
@@ -70,6 +70,26 @@ export const idlFactory = ({ IDL }) => {
|
|
|
70
70
|
'driverPosition' : IDL.Opt(Geo),
|
|
71
71
|
});
|
|
72
72
|
const RideAnswer = IDL.Variant({ 'ok' : RideView, 'err' : ProtocolError });
|
|
73
|
+
const RouteLine = IDL.Record({ 'ride' : IDL.Text, 'toPickup' : IDL.Text });
|
|
74
|
+
const RouteAnswer = IDL.Variant({ 'ok' : RouteLine, 'err' : ProtocolError });
|
|
75
|
+
const RouteTaskView = IDL.Record({
|
|
76
|
+
'untilNs' : IDL.Nat64,
|
|
77
|
+
'destination' : Geo,
|
|
78
|
+
'requestId' : IDL.Text,
|
|
79
|
+
'from' : Geo,
|
|
80
|
+
'pickup' : Geo,
|
|
81
|
+
'driverKey' : IDL.Text,
|
|
82
|
+
});
|
|
83
|
+
const SimulatorError = IDL.Variant({
|
|
84
|
+
'RemoteCanisterError' : IDL.Text,
|
|
85
|
+
'NotFound' : IDL.Null,
|
|
86
|
+
'NotAuthorized' : IDL.Text,
|
|
87
|
+
'InvalidData' : IDL.Text,
|
|
88
|
+
});
|
|
89
|
+
const Result = IDL.Variant({
|
|
90
|
+
'Ok' : IDL.Vec(RouteTaskView),
|
|
91
|
+
'Err' : SimulatorError,
|
|
92
|
+
});
|
|
73
93
|
const Event = IDL.Record({
|
|
74
94
|
'atNs' : IDL.Nat64,
|
|
75
95
|
'kind' : IDL.Text,
|
|
@@ -82,6 +102,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
82
102
|
'liveDrivers' : IDL.Nat64,
|
|
83
103
|
'events' : IDL.Vec(Event),
|
|
84
104
|
'drivers' : IDL.Nat64,
|
|
105
|
+
'router' : IDL.Opt(IDL.Principal),
|
|
85
106
|
'rides' : IDL.Nat64,
|
|
86
107
|
});
|
|
87
108
|
const HttpRequest = IDL.Record({
|
|
@@ -128,17 +149,12 @@ export const idlFactory = ({ IDL }) => {
|
|
|
128
149
|
'riderName' : IDL.Text,
|
|
129
150
|
'rider' : IDL.Principal,
|
|
130
151
|
});
|
|
152
|
+
const SetRouterArgs = IDL.Record({ 'router' : IDL.Opt(IDL.Principal) });
|
|
153
|
+
const Result_1 = IDL.Variant({ 'Ok' : IDL.Null, 'Err' : SimulatorError });
|
|
131
154
|
const SpeedUpArgs = IDL.Record({
|
|
132
155
|
'requestId' : IDL.Text,
|
|
133
156
|
'factor' : IDL.Nat8,
|
|
134
157
|
});
|
|
135
|
-
const SimulatorError = IDL.Variant({
|
|
136
|
-
'RemoteCanisterError' : IDL.Text,
|
|
137
|
-
'NotFound' : IDL.Null,
|
|
138
|
-
'NotAuthorized' : IDL.Text,
|
|
139
|
-
'InvalidData' : IDL.Text,
|
|
140
|
-
});
|
|
141
|
-
const Result = IDL.Variant({ 'Ok' : IDL.Null, 'Err' : SimulatorError });
|
|
142
158
|
const SpawnArgs = IDL.Record({ 'center' : Geo, 'count' : IDL.Opt(IDL.Nat8) });
|
|
143
159
|
const SpawnResult = IDL.Record({
|
|
144
160
|
'problems' : IDL.Vec(IDL.Text),
|
|
@@ -146,19 +162,32 @@ export const idlFactory = ({ IDL }) => {
|
|
|
146
162
|
'registered' : IDL.Nat32,
|
|
147
163
|
'validUntilNs' : IDL.Nat64,
|
|
148
164
|
});
|
|
149
|
-
const
|
|
165
|
+
const Result_2 = IDL.Variant({ 'Ok' : SpawnResult, 'Err' : SimulatorError });
|
|
166
|
+
const SimRouteResult = IDL.Record({
|
|
167
|
+
'requestId' : IDL.Text,
|
|
168
|
+
'rideMeters' : IDL.Nat32,
|
|
169
|
+
'rideSec' : IDL.Nat32,
|
|
170
|
+
'routeLine' : IDL.Opt(RouteLine),
|
|
171
|
+
'driverKey' : IDL.Text,
|
|
172
|
+
'toPickupSec' : IDL.Nat32,
|
|
173
|
+
'toPickupMeters' : IDL.Nat32,
|
|
174
|
+
});
|
|
150
175
|
return IDL.Service({
|
|
151
176
|
'cancelRide' : IDL.Func([RideRef], [ProtocolAnswer], []),
|
|
152
177
|
'getLicence' : IDL.Func([RideRef], [LicenceAnswer], ['query']),
|
|
153
178
|
'getRide' : IDL.Func([RideRef], [RideAnswer], ['query']),
|
|
179
|
+
'getRideRoute' : IDL.Func([RideRef], [RouteAnswer], ['query']),
|
|
180
|
+
'getRouteTasks' : IDL.Func([], [Result], ['query']),
|
|
154
181
|
'getStatus' : IDL.Func([], [SimulatorStatus], ['query']),
|
|
155
182
|
'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),
|
|
156
183
|
'protocolVersion' : IDL.Func([], [IDL.Nat32], ['query']),
|
|
157
184
|
'quoteRequest' : IDL.Func([QuoteRequest], [ProtocolAnswer], []),
|
|
158
185
|
'requestClosed' : IDL.Func([RequestClosed], [], []),
|
|
159
186
|
'rideOrder' : IDL.Func([RideOrder], [ProtocolAnswer], []),
|
|
160
|
-
'
|
|
161
|
-
'
|
|
187
|
+
'setRouter' : IDL.Func([SetRouterArgs], [Result_1], []),
|
|
188
|
+
'setSpeedUp' : IDL.Func([SpeedUpArgs], [Result_1], []),
|
|
189
|
+
'spawnDrivers' : IDL.Func([SpawnArgs], [Result_2], []),
|
|
190
|
+
'submitRoute' : IDL.Func([SimRouteResult], [Result_1], []),
|
|
162
191
|
});
|
|
163
192
|
};
|
|
164
193
|
export const init = ({ IDL }) => {
|
|
@@ -28,19 +28,22 @@ type TigiWorker =
|
|
|
28
28
|
/// from there. Blocks act at once (WO-2); ratings go into offers and orders (P-12).
|
|
29
29
|
applyCoreChanges: (batch: CoreChanges) -> (Result);
|
|
30
30
|
/// ZO-13, ZO-14, ZO-17.
|
|
31
|
-
chooseOffer: (ref: OfferRef) -> (
|
|
31
|
+
chooseOffer: (ref: OfferRef) -> (Result_9);
|
|
32
32
|
clearLogs: () -> ();
|
|
33
33
|
/// ZO-15 (otherOfferChosen after an acceptance in another worker), ZO-18 (riderGaveUp).
|
|
34
34
|
closeRequest: (args: CloseRequestArgs) -> (Result_2);
|
|
35
35
|
/// The coordinator only: the settings it computes for every worker.
|
|
36
|
-
configure: (args: ConfigureArgs) -> (
|
|
36
|
+
configure: (args: ConfigureArgs) -> (Result_8);
|
|
37
37
|
/// ZO-6.
|
|
38
38
|
declineQuote: (decline: QuoteDecline) -> ();
|
|
39
39
|
/// What this worker holds of the core's network state.
|
|
40
40
|
getCoreCopyStatus: () -> (CoreCopyStatus) query;
|
|
41
41
|
/// The flow's numbers (scripts, the coordinator's front).
|
|
42
|
-
getFlowStatus: () -> (
|
|
42
|
+
getFlowStatus: () -> (Result_7) query;
|
|
43
43
|
getLogs: () -> (text) query;
|
|
44
|
+
/// ZO-21 (2026-10-24, route line): the route line of one offer, for the rider of the
|
|
45
|
+
/// request only (the package asks after a tap on the offer).
|
|
46
|
+
getOfferRoute: (ref: OfferRef) -> (Result_6) query;
|
|
44
47
|
/// The load this worker counts per geohash prefix of the given length (1–6): the
|
|
45
48
|
/// coordinator picks from it what to give another worker on a split (KO-5).
|
|
46
49
|
getPrefixCounts: (length: nat) -> (Result_5) query;
|
|
@@ -89,6 +92,11 @@ type TestLoadArgs =
|
|
|
89
92
|
cells: vec PrefixCount;
|
|
90
93
|
reportLevel: opt nat;
|
|
91
94
|
};
|
|
95
|
+
type RouteLine =
|
|
96
|
+
record {
|
|
97
|
+
ride: text;
|
|
98
|
+
toPickup: text;
|
|
99
|
+
};
|
|
92
100
|
type RiderRating =
|
|
93
101
|
record {
|
|
94
102
|
driverKey: DriverKey;
|
|
@@ -111,21 +119,26 @@ type RideStatus =
|
|
|
111
119
|
driverArrived;
|
|
112
120
|
inProgress;
|
|
113
121
|
};
|
|
114
|
-
type
|
|
122
|
+
type Result_9 =
|
|
115
123
|
variant {
|
|
116
124
|
err: Error;
|
|
117
125
|
ok: ChooseOutcome;
|
|
118
126
|
};
|
|
119
|
-
type
|
|
127
|
+
type Result_8 =
|
|
120
128
|
variant {
|
|
121
129
|
err: Error;
|
|
122
130
|
ok: WorkerConfig;
|
|
123
131
|
};
|
|
124
|
-
type
|
|
132
|
+
type Result_7 =
|
|
125
133
|
variant {
|
|
126
134
|
err: Error;
|
|
127
135
|
ok: FlowStatus;
|
|
128
136
|
};
|
|
137
|
+
type Result_6 =
|
|
138
|
+
variant {
|
|
139
|
+
err: Error;
|
|
140
|
+
ok: RouteLine;
|
|
141
|
+
};
|
|
129
142
|
type Result_5 =
|
|
130
143
|
variant {
|
|
131
144
|
err: Error;
|
|
@@ -217,11 +230,13 @@ type QuoteDecline =
|
|
|
217
230
|
type Quote =
|
|
218
231
|
record {
|
|
219
232
|
driverKey: DriverKey;
|
|
233
|
+
driverPosition: opt Geo;
|
|
220
234
|
etaToPickupSec: nat32;
|
|
221
235
|
price: Money;
|
|
222
236
|
requestId: RequestId;
|
|
223
237
|
rideMeters: nat32;
|
|
224
238
|
rideSec: nat32;
|
|
239
|
+
routeLine: opt RouteLine;
|
|
225
240
|
toPickupMeters: nat32;
|
|
226
241
|
validUntilNs: nat64;
|
|
227
242
|
};
|
|
@@ -262,6 +277,7 @@ type OfferView =
|
|
|
262
277
|
card: DriverCard;
|
|
263
278
|
driverCanister: principal;
|
|
264
279
|
driverKey: DriverKey;
|
|
280
|
+
driverPosition: opt Geo;
|
|
265
281
|
driverRating: opt nat16;
|
|
266
282
|
etaToPickupSec: nat32;
|
|
267
283
|
pinGeohash: text;
|
|
@@ -335,6 +351,7 @@ type FlowStatus =
|
|
|
335
351
|
openRequests: nat;
|
|
336
352
|
outboxPending: nat;
|
|
337
353
|
rides: nat;
|
|
354
|
+
usagePending: opt nat;
|
|
338
355
|
};
|
|
339
356
|
type ErrorDetails =
|
|
340
357
|
variant {
|
|
@@ -85,6 +85,7 @@ export type ErrorDetails = { 'InterCanisterConnectionError' : null } |
|
|
|
85
85
|
{ 'ReturnsNull' : null };
|
|
86
86
|
export interface FlowStatus {
|
|
87
87
|
'helloDone' : boolean,
|
|
88
|
+
'usagePending' : [] | [bigint],
|
|
88
89
|
'activeRides' : bigint,
|
|
89
90
|
'knownDriverCanisters' : bigint,
|
|
90
91
|
'liveDrivers' : bigint,
|
|
@@ -141,6 +142,7 @@ export interface OfferView {
|
|
|
141
142
|
'driverCanister' : Principal,
|
|
142
143
|
'price' : Money,
|
|
143
144
|
'etaToPickupSec' : number,
|
|
145
|
+
'driverPosition' : [] | [Geo],
|
|
144
146
|
'toPickupMeters' : number,
|
|
145
147
|
'validUntilNs' : bigint,
|
|
146
148
|
}
|
|
@@ -165,9 +167,11 @@ export interface Quote {
|
|
|
165
167
|
'requestId' : RequestId,
|
|
166
168
|
'rideMeters' : number,
|
|
167
169
|
'rideSec' : number,
|
|
170
|
+
'routeLine' : [] | [RouteLine],
|
|
168
171
|
'driverKey' : DriverKey,
|
|
169
172
|
'price' : Money,
|
|
170
173
|
'etaToPickupSec' : number,
|
|
174
|
+
'driverPosition' : [] | [Geo],
|
|
171
175
|
'toPickupMeters' : number,
|
|
172
176
|
'validUntilNs' : bigint,
|
|
173
177
|
}
|
|
@@ -232,11 +236,13 @@ export type Result_4 = { 'ok' : WorkerStatus } |
|
|
|
232
236
|
{ 'err' : Error };
|
|
233
237
|
export type Result_5 = { 'ok' : Array<PrefixCount> } |
|
|
234
238
|
{ 'err' : Error };
|
|
235
|
-
export type Result_6 = { 'ok' :
|
|
239
|
+
export type Result_6 = { 'ok' : RouteLine } |
|
|
236
240
|
{ 'err' : Error };
|
|
237
|
-
export type Result_7 = { 'ok' :
|
|
241
|
+
export type Result_7 = { 'ok' : FlowStatus } |
|
|
238
242
|
{ 'err' : Error };
|
|
239
|
-
export type Result_8 = { 'ok' :
|
|
243
|
+
export type Result_8 = { 'ok' : WorkerConfig } |
|
|
244
|
+
{ 'err' : Error };
|
|
245
|
+
export type Result_9 = { 'ok' : ChooseOutcome } |
|
|
240
246
|
{ 'err' : Error };
|
|
241
247
|
export type RideStatus = { 'completed' : { 'price' : Money } } |
|
|
242
248
|
{ 'cancelledByRider' : null } |
|
|
@@ -255,6 +261,7 @@ export interface RiderRating {
|
|
|
255
261
|
'stars' : number,
|
|
256
262
|
'driverKey' : DriverKey,
|
|
257
263
|
}
|
|
264
|
+
export interface RouteLine { 'ride' : string, 'toPickup' : string }
|
|
258
265
|
export interface TestLoadArgs {
|
|
259
266
|
'reportLevel' : [] | [bigint],
|
|
260
267
|
'cells' : Array<PrefixCount>,
|
|
@@ -273,7 +280,7 @@ export interface TigiWorker {
|
|
|
273
280
|
/**
|
|
274
281
|
* / ZO-13, ZO-14, ZO-17.
|
|
275
282
|
*/
|
|
276
|
-
'chooseOffer' : ActorMethod<[OfferRef],
|
|
283
|
+
'chooseOffer' : ActorMethod<[OfferRef], Result_9>,
|
|
277
284
|
'clearLogs' : ActorMethod<[], undefined>,
|
|
278
285
|
/**
|
|
279
286
|
* / ZO-15 (otherOfferChosen after an acceptance in another worker), ZO-18 (riderGaveUp).
|
|
@@ -282,7 +289,7 @@ export interface TigiWorker {
|
|
|
282
289
|
/**
|
|
283
290
|
* / The coordinator only: the settings it computes for every worker.
|
|
284
291
|
*/
|
|
285
|
-
'configure' : ActorMethod<[ConfigureArgs],
|
|
292
|
+
'configure' : ActorMethod<[ConfigureArgs], Result_8>,
|
|
286
293
|
/**
|
|
287
294
|
* / ZO-6.
|
|
288
295
|
*/
|
|
@@ -294,8 +301,13 @@ export interface TigiWorker {
|
|
|
294
301
|
/**
|
|
295
302
|
* / The flow's numbers (scripts, the coordinator's front).
|
|
296
303
|
*/
|
|
297
|
-
'getFlowStatus' : ActorMethod<[],
|
|
304
|
+
'getFlowStatus' : ActorMethod<[], Result_7>,
|
|
298
305
|
'getLogs' : ActorMethod<[], string>,
|
|
306
|
+
/**
|
|
307
|
+
* / ZO-21 (2026-10-24, route line): the route line of one offer, for the rider of the
|
|
308
|
+
* / request only (the package asks after a tap on the offer).
|
|
309
|
+
*/
|
|
310
|
+
'getOfferRoute' : ActorMethod<[OfferRef], Result_6>,
|
|
299
311
|
/**
|
|
300
312
|
* / The load this worker counts per geohash prefix of the given length (1–6): the
|
|
301
313
|
* / coordinator picks from it what to give another worker on a split (KO-5).
|
|
@@ -92,7 +92,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
92
92
|
'ordered' : IDL.Record({ 'answerByNs' : IDL.Nat64 }),
|
|
93
93
|
'driverNotFree' : IDL.Null,
|
|
94
94
|
});
|
|
95
|
-
const
|
|
95
|
+
const Result_9 = IDL.Variant({ 'ok' : ChooseOutcome, 'err' : Error });
|
|
96
96
|
const CloseReason = IDL.Variant({
|
|
97
97
|
'offerRejected' : IDL.Null,
|
|
98
98
|
'otherOfferChosen' : IDL.Null,
|
|
@@ -124,7 +124,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
124
124
|
'load' : LoadThresholds,
|
|
125
125
|
'lowCyclesBelow' : IDL.Nat,
|
|
126
126
|
});
|
|
127
|
-
const
|
|
127
|
+
const Result_8 = IDL.Variant({ 'ok' : WorkerConfig, 'err' : Error });
|
|
128
128
|
const QuoteDecline = IDL.Record({
|
|
129
129
|
'requestId' : RequestId,
|
|
130
130
|
'driverKey' : DriverKey,
|
|
@@ -140,6 +140,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
140
140
|
});
|
|
141
141
|
const FlowStatus = IDL.Record({
|
|
142
142
|
'helloDone' : IDL.Bool,
|
|
143
|
+
'usagePending' : IDL.Opt(IDL.Nat),
|
|
143
144
|
'activeRides' : IDL.Nat,
|
|
144
145
|
'knownDriverCanisters' : IDL.Nat,
|
|
145
146
|
'liveDrivers' : IDL.Nat,
|
|
@@ -149,7 +150,9 @@ export const idlFactory = ({ IDL }) => {
|
|
|
149
150
|
'rides' : IDL.Nat,
|
|
150
151
|
'openRequests' : IDL.Nat,
|
|
151
152
|
});
|
|
152
|
-
const
|
|
153
|
+
const Result_7 = IDL.Variant({ 'ok' : FlowStatus, 'err' : Error });
|
|
154
|
+
const RouteLine = IDL.Record({ 'ride' : IDL.Text, 'toPickup' : IDL.Text });
|
|
155
|
+
const Result_6 = IDL.Variant({ 'ok' : RouteLine, 'err' : Error });
|
|
153
156
|
const PrefixCount = IDL.Record({ 'load' : IDL.Nat, 'prefix' : IDL.Text });
|
|
154
157
|
const Result_5 = IDL.Variant({ 'ok' : IDL.Vec(PrefixCount), 'err' : Error });
|
|
155
158
|
const RequestRef = IDL.Record({ 'requestId' : RequestId });
|
|
@@ -168,6 +171,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
168
171
|
'hasLicencePhoto' : IDL.Bool,
|
|
169
172
|
});
|
|
170
173
|
const Money = IDL.Record({ 'currency' : IDL.Text, 'amount' : IDL.Nat64 });
|
|
174
|
+
const Geo = IDL.Record({ 'lat' : IDL.Float64, 'lng' : IDL.Float64 });
|
|
171
175
|
const OfferView = IDL.Record({
|
|
172
176
|
'rideMeters' : IDL.Nat32,
|
|
173
177
|
'driverRating' : IDL.Opt(IDL.Nat16),
|
|
@@ -180,6 +184,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
180
184
|
'driverCanister' : IDL.Principal,
|
|
181
185
|
'price' : Money,
|
|
182
186
|
'etaToPickupSec' : IDL.Nat32,
|
|
187
|
+
'driverPosition' : IDL.Opt(Geo),
|
|
183
188
|
'toPickupMeters' : IDL.Nat32,
|
|
184
189
|
'validUntilNs' : IDL.Nat64,
|
|
185
190
|
});
|
|
@@ -241,7 +246,6 @@ export const idlFactory = ({ IDL }) => {
|
|
|
241
246
|
});
|
|
242
247
|
const Result_4 = IDL.Variant({ 'ok' : WorkerStatus, 'err' : Error });
|
|
243
248
|
const Result_3 = IDL.Variant({ 'ok' : IDL.Nat, 'err' : Error });
|
|
244
|
-
const Geo = IDL.Record({ 'lat' : IDL.Float64, 'lng' : IDL.Float64 });
|
|
245
249
|
const HasSimulatedDriversArgs = IDL.Record({ 'center' : Geo });
|
|
246
250
|
const TestLoadArgs = IDL.Record({
|
|
247
251
|
'reportLevel' : IDL.Opt(IDL.Nat),
|
|
@@ -290,23 +294,26 @@ export const idlFactory = ({ IDL }) => {
|
|
|
290
294
|
'requestId' : RequestId,
|
|
291
295
|
'rideMeters' : IDL.Nat32,
|
|
292
296
|
'rideSec' : IDL.Nat32,
|
|
297
|
+
'routeLine' : IDL.Opt(RouteLine),
|
|
293
298
|
'driverKey' : DriverKey,
|
|
294
299
|
'price' : Money,
|
|
295
300
|
'etaToPickupSec' : IDL.Nat32,
|
|
301
|
+
'driverPosition' : IDL.Opt(Geo),
|
|
296
302
|
'toPickupMeters' : IDL.Nat32,
|
|
297
303
|
'validUntilNs' : IDL.Nat64,
|
|
298
304
|
});
|
|
299
305
|
const TigiWorker = IDL.Service({
|
|
300
306
|
'answerOrder' : IDL.Func([OrderAnswer], [ProtocolResult], []),
|
|
301
307
|
'applyCoreChanges' : IDL.Func([CoreChanges], [Result], []),
|
|
302
|
-
'chooseOffer' : IDL.Func([OfferRef], [
|
|
308
|
+
'chooseOffer' : IDL.Func([OfferRef], [Result_9], []),
|
|
303
309
|
'clearLogs' : IDL.Func([], [], []),
|
|
304
310
|
'closeRequest' : IDL.Func([CloseRequestArgs], [Result_2], []),
|
|
305
|
-
'configure' : IDL.Func([ConfigureArgs], [
|
|
311
|
+
'configure' : IDL.Func([ConfigureArgs], [Result_8], []),
|
|
306
312
|
'declineQuote' : IDL.Func([QuoteDecline], [], []),
|
|
307
313
|
'getCoreCopyStatus' : IDL.Func([], [CoreCopyStatus], ['query']),
|
|
308
|
-
'getFlowStatus' : IDL.Func([], [
|
|
314
|
+
'getFlowStatus' : IDL.Func([], [Result_7], ['query']),
|
|
309
315
|
'getLogs' : IDL.Func([], [IDL.Text], ['query']),
|
|
316
|
+
'getOfferRoute' : IDL.Func([OfferRef], [Result_6], ['query']),
|
|
310
317
|
'getPrefixCounts' : IDL.Func([IDL.Nat], [Result_5], ['query']),
|
|
311
318
|
'getRequest' : IDL.Func([RequestRef], [Result_1], ['query']),
|
|
312
319
|
'getStatus' : IDL.Func([], [Result_4], ['query']),
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { Identity } from "@icp-sdk/core/agent";
|
|
2
|
+
import type { ClaimCode as CandidClaimCode, DriverCanister as CandidDriverCanister } from "../../declarations/core/core.did.js";
|
|
3
|
+
import { type GroupOptions } from "../group/canister-actor.js";
|
|
4
|
+
import type { ClaimCodeView, DemoLeaseView, DriverCanisterView } from "../interfaces.js";
|
|
5
|
+
/** The fragment key of a claim link: `https://<canister>.icp0.io/#claim=<code>`. */
|
|
6
|
+
export declare const CLAIM_FRAGMENT_KEY = "claim";
|
|
7
|
+
/** F-20a: a code is 32 characters of base64url; the core refuses more than this. */
|
|
8
|
+
export declare const MAX_CLAIM_CODE_CHARS = 64;
|
|
9
|
+
/**
|
|
10
|
+
* F-20: the link the rider's site shows after a lease ("Otwórz swój kanister"). The code
|
|
11
|
+
* rides in the fragment, which the browser never sends to a server.
|
|
12
|
+
* @param frontOrigin the origin of the driver canister's front; default `https://<canister>.icp0.io`
|
|
13
|
+
*/
|
|
14
|
+
export declare function claimLinkOf(canisterId: string, code: string, frontOrigin?: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* F-20: the claim code in a location hash (`#claim=<code>`, also among other `&` parts), or
|
|
17
|
+
* undefined. The driver's front clears the fragment after the claim.
|
|
18
|
+
*/
|
|
19
|
+
export declare function claimCodeOfHash(hash: string): string | undefined;
|
|
20
|
+
/** @internal */
|
|
21
|
+
export declare function driverCanisterOf(record: Pick<CandidDriverCanister, "canister" | "owner" | "kind" | "leaseUntilNs" | "blocked">): DriverCanisterView;
|
|
22
|
+
/** @internal */
|
|
23
|
+
export declare function claimCodeOf(claim: CandidClaimCode): ClaimCodeView;
|
|
24
|
+
export declare class DriverCanistersActor {
|
|
25
|
+
private readonly group;
|
|
26
|
+
constructor(coordinatorId: string, identity: Identity, options?: GroupOptions);
|
|
27
|
+
/**
|
|
28
|
+
* F-5 … F-7, F-20a: a demo canister for 15 minutes, reinstalled with the caller as its
|
|
29
|
+
* owner — or the caller's lease already (no reinstall, no code: `newClaimCodeAsyncUnsafe`).
|
|
30
|
+
* @returns `leased` with `claim` after a fresh lease (undefined when the core could make
|
|
31
|
+
* no code — ask `newClaimCodeAsyncUnsafe`); `busy` with the time the pool frees up
|
|
32
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (prod), `NotFound` (no pool),
|
|
33
|
+
* `InvalidData` (no driver wasm), `RemoteCanisterError` (the install failed)
|
|
34
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
35
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
36
|
+
*/
|
|
37
|
+
leaseDemoAsyncUnsafe(): Promise<DemoLeaseView>;
|
|
38
|
+
/**
|
|
39
|
+
* F-8: 15 minutes more for the holder of the demo canister (at most 30 ahead), also after
|
|
40
|
+
* the end while nobody took it over. The owner stays (F-20f).
|
|
41
|
+
* @throws Error with message `CanisterError` — `NotFound` (no lease of the caller), `InvalidData` (being installed)
|
|
42
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
43
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
44
|
+
*/
|
|
45
|
+
extendDemoAsyncUnsafe(): Promise<DriverCanisterView>;
|
|
46
|
+
/**
|
|
47
|
+
* The caller's own driver canister, or the demo canister the caller holds now (as the
|
|
48
|
+
* lease holder — after a claim the canister's owner is the driver, `ownerPrincipal`).
|
|
49
|
+
* @returns undefined when the caller has none
|
|
50
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (anonymous)
|
|
51
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
52
|
+
*/
|
|
53
|
+
getMineAsyncUnsafe(): Promise<DriverCanisterView | undefined>;
|
|
54
|
+
/**
|
|
55
|
+
* F-20c: a new claim code for the caller's running demo lease ("Nowy link"); the code
|
|
56
|
+
* before it stops working. Good for 15 minutes, once.
|
|
57
|
+
* @throws Error with message `CanisterError` — `NotFound` (no running lease of the caller),
|
|
58
|
+
* `InvalidData` (being installed), `RemoteCanisterError` (no randomness — try again)
|
|
59
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
60
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
61
|
+
*/
|
|
62
|
+
newClaimCodeAsyncUnsafe(): Promise<ClaimCodeView>;
|
|
63
|
+
/**
|
|
64
|
+
* F-20d, F-20e: the caller — the driver signed in on the canister's own front — takes
|
|
65
|
+
* over the demo canister with the code of the link. The canister's owner becomes the
|
|
66
|
+
* caller, and so does the recipient of its chat room; the lease stays with its holder.
|
|
67
|
+
* @returns the canister with the caller as `ownerPrincipal`
|
|
68
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (the code is wrong, expired,
|
|
69
|
+
* used, or not for this canister — one answer for all), `InvalidData` (the canister
|
|
70
|
+
* is busy — try again), `RemoteCanisterError` (the driver canister did not take it;
|
|
71
|
+
* the code stays good)
|
|
72
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
73
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
74
|
+
*/
|
|
75
|
+
claimAsyncUnsafe(canisterId: string, code: string): Promise<DriverCanisterView>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=driver-canisters-actor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-canisters-actor.d.ts","sourceRoot":"","sources":["../../src/actors/driver-canisters-actor.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChI,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/F,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGzF,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAE,MAAwC,GAAG,MAAM,CAE3H;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBhE;AAED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC,GAAG,kBAAkB,CAUnJ;AAED,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa,CAEjE;AAED,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEtB,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,YAAiB;IAIjF;;;;;;;;;OASG;IACU,oBAAoB,IAAI,OAAO,CAAC,aAAa,CAAC;IAS3D;;;;;;OAMG;IACU,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIjE;;;;;;OAMG;IACU,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAS1E;;;;;;;OAOG;IACU,uBAAuB,IAAI,OAAO,CAAC,aAAa,CAAC;IAI9D;;;;;;;;;;;OAWG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAU/F"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// The driver canister of the signed-in person in the core's factory (fabryka.md F-5 … F-8,
|
|
2
|
+
// F-20; U-45): the demo lease, its extension, "mine", and the one-time claim code that hands
|
|
3
|
+
// a demo canister over to the driver's principal on the canister's own front.
|
|
4
|
+
//
|
|
5
|
+
// Internet Identity gives one person a different principal on every origin: the lease is
|
|
6
|
+
// taken on the rider's site, the driver signs in on `https://<canister>.icp0.io`. The
|
|
7
|
+
// rider's site shows the link `claimLinkOf(canisterId, code)`; the driver's front reads the
|
|
8
|
+
// code with `claimCodeOfHash(location.hash)` and calls `claimAsyncUnsafe` as the driver.
|
|
9
|
+
//
|
|
10
|
+
// The driver canister's id is the driver's own address (the link of his front), so these
|
|
11
|
+
// views carry it — unlike the rider's views of other drivers (U-14).
|
|
12
|
+
import { Principal } from "@icp-sdk/core/principal";
|
|
13
|
+
import { errorKeyOf, executeAsyncUnsafe } from "../group/canister-actor.js";
|
|
14
|
+
import { TigiGroup } from "../group/group.js";
|
|
15
|
+
import { msOf } from "../mappers.js";
|
|
16
|
+
/** The fragment key of a claim link: `https://<canister>.icp0.io/#claim=<code>`. */
|
|
17
|
+
export const CLAIM_FRAGMENT_KEY = "claim";
|
|
18
|
+
/** F-20a: a code is 32 characters of base64url; the core refuses more than this. */
|
|
19
|
+
export const MAX_CLAIM_CODE_CHARS = 64;
|
|
20
|
+
/**
|
|
21
|
+
* F-20: the link the rider's site shows after a lease ("Otwórz swój kanister"). The code
|
|
22
|
+
* rides in the fragment, which the browser never sends to a server.
|
|
23
|
+
* @param frontOrigin the origin of the driver canister's front; default `https://<canister>.icp0.io`
|
|
24
|
+
*/
|
|
25
|
+
export function claimLinkOf(canisterId, code, frontOrigin = `https://${canisterId}.icp0.io`) {
|
|
26
|
+
return `${frontOrigin}/#${CLAIM_FRAGMENT_KEY}=${encodeURIComponent(code)}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* F-20: the claim code in a location hash (`#claim=<code>`, also among other `&` parts), or
|
|
30
|
+
* undefined. The driver's front clears the fragment after the claim.
|
|
31
|
+
*/
|
|
32
|
+
export function claimCodeOfHash(hash) {
|
|
33
|
+
const text = hash.startsWith("#") ? hash.slice(1) : hash;
|
|
34
|
+
for (const part of text.split("&")) {
|
|
35
|
+
const [key, ...rest] = part.split("=");
|
|
36
|
+
if (key !== CLAIM_FRAGMENT_KEY)
|
|
37
|
+
continue;
|
|
38
|
+
let code;
|
|
39
|
+
try {
|
|
40
|
+
code = decodeURIComponent(rest.join("="));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
return code.length > 0 && code.length <= MAX_CLAIM_CODE_CHARS && /^[A-Za-z0-9_-]+$/.test(code) ? code : undefined;
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
/** @internal */
|
|
50
|
+
export function driverCanisterOf(record) {
|
|
51
|
+
const until = record.leaseUntilNs[0];
|
|
52
|
+
return {
|
|
53
|
+
canisterId: record.canister.toText(),
|
|
54
|
+
kind: "pool" in record.kind ? "pool" : "own",
|
|
55
|
+
ownerPrincipal: record.owner.toText(),
|
|
56
|
+
leaseUntilMs: until === undefined ? undefined : msOf(BigInt(until)),
|
|
57
|
+
blocked: record.blocked,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** @internal */
|
|
61
|
+
export function claimCodeOf(claim) {
|
|
62
|
+
return { canisterId: claim.canister.toText(), code: claim.code, expiresAtMs: msOf(BigInt(claim.expiresAtNs)) };
|
|
63
|
+
}
|
|
64
|
+
export class DriverCanistersActor {
|
|
65
|
+
group;
|
|
66
|
+
constructor(coordinatorId, identity, options = {}) {
|
|
67
|
+
this.group = TigiGroup.of(coordinatorId, identity, options);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* F-5 … F-7, F-20a: a demo canister for 15 minutes, reinstalled with the caller as its
|
|
71
|
+
* owner — or the caller's lease already (no reinstall, no code: `newClaimCodeAsyncUnsafe`).
|
|
72
|
+
* @returns `leased` with `claim` after a fresh lease (undefined when the core could make
|
|
73
|
+
* no code — ask `newClaimCodeAsyncUnsafe`); `busy` with the time the pool frees up
|
|
74
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (prod), `NotFound` (no pool),
|
|
75
|
+
* `InvalidData` (no driver wasm), `RemoteCanisterError` (the install failed)
|
|
76
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
77
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
78
|
+
*/
|
|
79
|
+
async leaseDemoAsyncUnsafe() {
|
|
80
|
+
const answer = await executeAsyncUnsafe(async () => (await this.group.coreAsync()).leaseDemoDriverCanister());
|
|
81
|
+
if ("busy" in answer)
|
|
82
|
+
return { kind: "busy", untilMs: msOf(BigInt(answer.busy.untilNs)) };
|
|
83
|
+
const leased = answer.leased;
|
|
84
|
+
const claim = leased.claim[0];
|
|
85
|
+
return { kind: "leased", canister: driverCanisterOf(leased), claim: claim === undefined ? undefined : claimCodeOf(claim) };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* F-8: 15 minutes more for the holder of the demo canister (at most 30 ahead), also after
|
|
89
|
+
* the end while nobody took it over. The owner stays (F-20f).
|
|
90
|
+
* @throws Error with message `CanisterError` — `NotFound` (no lease of the caller), `InvalidData` (being installed)
|
|
91
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
92
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
93
|
+
*/
|
|
94
|
+
async extendDemoAsyncUnsafe() {
|
|
95
|
+
return driverCanisterOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).extendDemoLease()));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The caller's own driver canister, or the demo canister the caller holds now (as the
|
|
99
|
+
* lease holder — after a claim the canister's owner is the driver, `ownerPrincipal`).
|
|
100
|
+
* @returns undefined when the caller has none
|
|
101
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (anonymous)
|
|
102
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
103
|
+
*/
|
|
104
|
+
async getMineAsyncUnsafe() {
|
|
105
|
+
try {
|
|
106
|
+
return driverCanisterOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).getMyDriverCanister()));
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
if (errorKeyOf(err) === "NotFound")
|
|
110
|
+
return undefined;
|
|
111
|
+
throw err;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* F-20c: a new claim code for the caller's running demo lease ("Nowy link"); the code
|
|
116
|
+
* before it stops working. Good for 15 minutes, once.
|
|
117
|
+
* @throws Error with message `CanisterError` — `NotFound` (no running lease of the caller),
|
|
118
|
+
* `InvalidData` (being installed), `RemoteCanisterError` (no randomness — try again)
|
|
119
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
120
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
121
|
+
*/
|
|
122
|
+
async newClaimCodeAsyncUnsafe() {
|
|
123
|
+
return claimCodeOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).newClaimCode()));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* F-20d, F-20e: the caller — the driver signed in on the canister's own front — takes
|
|
127
|
+
* over the demo canister with the code of the link. The canister's owner becomes the
|
|
128
|
+
* caller, and so does the recipient of its chat room; the lease stays with its holder.
|
|
129
|
+
* @returns the canister with the caller as `ownerPrincipal`
|
|
130
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (the code is wrong, expired,
|
|
131
|
+
* used, or not for this canister — one answer for all), `InvalidData` (the canister
|
|
132
|
+
* is busy — try again), `RemoteCanisterError` (the driver canister did not take it;
|
|
133
|
+
* the code stays good)
|
|
134
|
+
* @throws Error with message `CallRefusedAtInspectionStage` — anonymous, or the daily limit (30)
|
|
135
|
+
* @throws Error with message `CriticalCanisterError` — the core could not be reached
|
|
136
|
+
*/
|
|
137
|
+
async claimAsyncUnsafe(canisterId, code) {
|
|
138
|
+
let canister;
|
|
139
|
+
try {
|
|
140
|
+
canister = Principal.fromText(canisterId);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
throw new Error("CanisterError", { cause: { errorKey: "InvalidData", errorMessage: "not a canister id", logs: [] } });
|
|
144
|
+
}
|
|
145
|
+
return driverCanisterOf(await executeAsyncUnsafe(async () => (await this.group.coreAsync()).claimDriverCanister({ canister, code })));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
@@ -2,7 +2,7 @@ import type { Identity } from "@icp-sdk/core/agent";
|
|
|
2
2
|
import { type GroupOptions } from "../group/canister-actor.js";
|
|
3
3
|
import { TigiGroup } from "../group/group.js";
|
|
4
4
|
import { type Geo } from "../geo.js";
|
|
5
|
-
import type { ChatPlace, ChooseOutcome, LicenceView, RequestSnapshot, RideView } from "../interfaces.js";
|
|
5
|
+
import type { ChatPlace, ChooseOutcome, LicenceView, RequestSnapshot, RideView, RouteLineView } from "../interfaces.js";
|
|
6
6
|
/** U-29: the rider's radius, and the radius after `WIDEN_AFTER_MS` without offers. */
|
|
7
7
|
export declare const SEARCH_RADIUS_METERS = 3000;
|
|
8
8
|
export declare const WIDE_RADIUS_METERS = 6000;
|
|
@@ -159,6 +159,26 @@ export declare class RideRequest {
|
|
|
159
159
|
* @throws Error with message `CriticalCanisterError` — the worker could not be reached
|
|
160
160
|
*/
|
|
161
161
|
chooseOfferAsyncUnsafe(offerId: string): Promise<ChooseOutcome>;
|
|
162
|
+
/**
|
|
163
|
+
* ZO-21 (2026-10-24, route line): the driver's route of one offer, to draw when the rider
|
|
164
|
+
* taps it — from the driver's exact position to the pickup, then the ride (P-17). One
|
|
165
|
+
* query per tap: the lines are not in the polled snapshot.
|
|
166
|
+
* @returns undefined when the offer has no line: an older driver canister or worker, a
|
|
167
|
+
* line the network dropped (too big, not valid), the offer past its time or gone, or its
|
|
168
|
+
* worker upgraded since (the line lives in the worker's heap only, WO-22)
|
|
169
|
+
* @throws Error with message `CanisterError` — `NotAuthorized` (not your request), `NotFound` (an offer this request does not hold), `InvalidToken`
|
|
170
|
+
* @throws Error with message `CriticalCanisterError` — the worker could not be reached
|
|
171
|
+
*/
|
|
172
|
+
getOfferRouteAsyncUnsafe(offerId: string): Promise<RouteLineView | undefined>;
|
|
173
|
+
/**
|
|
174
|
+
* K-13 (2026-10-24, route line): the line of the accepted ride, while it is active — read
|
|
175
|
+
* once (it does not change), not in `getRideAsyncUnsafe`, which is polled (P-19).
|
|
176
|
+
* @returns undefined when the ride has no line (the quote had none), has ended, or the
|
|
177
|
+
* driver canister is older than the line (no `getRideRoute`)
|
|
178
|
+
* @throws Error with message `CanisterError` — `NOT_ACCEPTED` (no driver accepted yet), `notAuthorized` (not the rider of the ride)
|
|
179
|
+
* @throws Error with message `CriticalCanisterError` — the driver canister does not answer
|
|
180
|
+
*/
|
|
181
|
+
getRideRouteAsyncUnsafe(): Promise<RouteLineView | undefined>;
|
|
162
182
|
/**
|
|
163
183
|
* K-5, U-42: "Szukaj ponownie" after "Kierowca anulował kurs" — a NEW request with the
|
|
164
184
|
* same pickup, destination and rider name (a new `requestId`; the old request ended with
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rides-actor.d.ts","sourceRoot":"","sources":["../../src/actors/rides-actor.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD,OAAO,
|
|
1
|
+
{"version":3,"file":"rides-actor.d.ts","sourceRoot":"","sources":["../../src/actors/rides-actor.ts"],"names":[],"mappings":"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"}
|